Changeset fe26fbf


Ignore:
Timestamp:
Feb 7, 2017, 1:01:34 PM (5 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
35b1bf4
Parents:
dbe8f244 (diff), b4d65c7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:/u/cforall/software/cfa/cfa-cc

Files:
13 added
57 edited
1 moved

Legend:

Unmodified
Added
Removed
  • configure

    rdbe8f244 rfe26fbf  
    61846184
    61856185
    6186 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
     6186ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/benchmark/Makefile src/examples/Makefile src/tests/Makefile src/prelude/Makefile src/libcfa/Makefile"
    61876187
    61886188
     
    69456945    "src/driver/Makefile") CONFIG_FILES="$CONFIG_FILES src/driver/Makefile" ;;
    69466946    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     6947    "src/benchmark/Makefile") CONFIG_FILES="$CONFIG_FILES src/benchmark/Makefile" ;;
    69476948    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    69486949    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
  • configure.ac

    rdbe8f244 rfe26fbf  
    190190        src/driver/Makefile
    191191        src/Makefile
     192        src/benchmark/Makefile
    192193        src/examples/Makefile
    193194        src/tests/Makefile
  • src/CodeGen/CodeGenerator.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 18 15:23:08 2017
    13 // Update Count     : 414
     12// Last Modified On : Wed Feb  1 14:09:02 2017
     13// Update Count     : 416
    1414//
    1515
     
    177177
    178178        void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
     179                genAttributes( aggDecl->get_attributes() );
     180               
    179181                if ( aggDecl->get_name() != "" )
    180182                        output << aggDecl->get_name();
     
    214216                extension( enumDecl );
    215217                output << "enum ";
     218                genAttributes( enumDecl->get_attributes() );
    216219
    217220                if ( enumDecl->get_name() != "" )
  • src/CodeGen/GenType.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  9 16:43:52 2015
    13 // Update Count     : 13
     12// Last Modified On : Thu Feb  2 13:53:43 2017
     13// Update Count     : 20
    1414//
    1515
     
    5656        std::string genType( Type *type, const std::string &baseString, bool mangle ) {
    5757                GenType gt( baseString, mangle );
     58                std::ostringstream os;
     59               
     60                if ( ! type->get_attributes().empty() ) {
     61                        CodeGenerator cg( os, mangle );
     62                        cg.genAttributes( type->get_attributes() );
     63                } // if
     64
    5865                type->accept( gt );
    59                 return gt.get_typeString();
     66                return os.str() + gt.get_typeString();
    6067        }
    6168
     
    99106                if ( qualifiers.isAtomic ) {
    100107                        os << "_Atomic ";
    101                 } // if
    102                 if ( qualifiers.isAttribute ) {
    103                         os << "__attribute(( )) ";
    104108                } // if
    105109                if ( dimension != 0 ) {
  • src/Common/ScopedMap.h

    rdbe8f244 rfe26fbf  
    102102                iterator operator-- (int) { iterator tmp = *this; --(*this); return tmp; }
    103103
    104                 bool operator== (const iterator &that) {
     104                bool operator== (const iterator &that) const {
    105105                        return scopes == that.scopes && level == that.level && it == that.it;
    106106                }
    107                 bool operator!= (const iterator &that) { return !( *this == that ); }
     107                bool operator!= (const iterator &that) const { return !( *this == that ); }
    108108
    109109                size_type get_level() const { return level; }
     
    180180                const_iterator operator-- (int) { const_iterator tmp = *this; --(*this); return tmp; }
    181181
    182                 bool operator== (const const_iterator &that) {
     182                bool operator== (const const_iterator &that) const {
    183183                        return scopes == that.scopes && level == that.level && it == that.it;
    184184                }
    185                 bool operator!= (const const_iterator &that) { return !( *this == that ); }
     185                bool operator!= (const const_iterator &that) const { return !( *this == that ); }
    186186
    187187                size_type get_level() const { return level; }
  • src/Makefile.am

    rdbe8f244 rfe26fbf  
    2626
    2727include CodeGen/module.mk
     28include CodeTools/module.mk
    2829include Common/module.mk
    2930include ControlStruct/module.mk
  • src/Makefile.in

    rdbe8f244 rfe26fbf  
    2424#SRC +=  ArgTweak/Rewriter.cc \
    2525#       ArgTweak/Mutate.cc
     26
     27######################### -*- Mode: Makefile-Gmake -*- ########################
     28###############################################################################
    2629
    2730######################### -*- Mode: Makefile-Gmake -*- ########################
     
    7174build_triplet = @build@
    7275host_triplet = @host@
    73 DIST_COMMON = $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk \
     76DIST_COMMON = $(srcdir)/CodeGen/module.mk \
     77        $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk \
    7478        $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk \
    7579        $(srcdir)/InitTweak/module.mk $(srcdir)/Makefile.am \
     
    99103        CodeGen/driver_cfa_cpp-FixMain.$(OBJEXT) \
    100104        CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \
     105        CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT) \
    101106        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
    102107        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
     
    376381        CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
    377382        CodeGen/FixNames.cc CodeGen/FixMain.cc \
    378         CodeGen/OperatorTable.cc Common/SemanticError.cc \
    379         Common/UniqueName.cc Common/DebugMalloc.cc Common/Assert.cc \
     383        CodeGen/OperatorTable.cc CodeTools/DeclStats.cc \
     384        Common/SemanticError.cc Common/UniqueName.cc \
     385        Common/DebugMalloc.cc Common/Assert.cc \
    380386        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    381387        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     
    440446.SUFFIXES:
    441447.SUFFIXES: .cc .ll .o .obj .yy
    442 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
     448$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk $(am__configure_deps)
    443449        @for dep in $?; do \
    444450          case '$(am__configure_deps)' in \
     
    461467            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
    462468        esac;
    463 $(srcdir)/CodeGen/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
     469$(srcdir)/CodeGen/module.mk $(srcdir)/CodeTools/module.mk $(srcdir)/Common/module.mk $(srcdir)/ControlStruct/module.mk $(srcdir)/GenPoly/module.mk $(srcdir)/InitTweak/module.mk $(srcdir)/Parser/module.mk $(srcdir)/ResolvExpr/module.mk $(srcdir)/SymTab/module.mk $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk:
    464470
    465471$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
     
    526532CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
    527533        CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
     534CodeTools/$(am__dirstamp):
     535        @$(MKDIR_P) CodeTools
     536        @: > CodeTools/$(am__dirstamp)
     537CodeTools/$(DEPDIR)/$(am__dirstamp):
     538        @$(MKDIR_P) CodeTools/$(DEPDIR)
     539        @: > CodeTools/$(DEPDIR)/$(am__dirstamp)
     540CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT):  \
     541        CodeTools/$(am__dirstamp) CodeTools/$(DEPDIR)/$(am__dirstamp)
    528542Common/$(am__dirstamp):
    529543        @$(MKDIR_P) Common
     
    813827        -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
    814828        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
     829        -rm -f CodeTools/driver_cfa_cpp-DeclStats.$(OBJEXT)
    815830        -rm -f Common/driver_cfa_cpp-Assert.$(OBJEXT)
    816831        -rm -f Common/driver_cfa_cpp-DebugMalloc.$(OBJEXT)
     
    922937@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
    923938@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
     939@AMDEP_TRUE@@am__include@ @am__quote@CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po@am__quote@
    924940@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-Assert.Po@am__quote@
    925941@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-DebugMalloc.Po@am__quote@
     
    11481164@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/driver_cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    11491165
     1166CodeTools/driver_cfa_cpp-DeclStats.o: CodeTools/DeclStats.cc
     1167@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.o -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
     1168@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
     1169@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.o' libtool=no @AMDEPBACKSLASH@
     1170@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1171@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.o `test -f 'CodeTools/DeclStats.cc' || echo '$(srcdir)/'`CodeTools/DeclStats.cc
     1172
     1173CodeTools/driver_cfa_cpp-DeclStats.obj: CodeTools/DeclStats.cc
     1174@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeTools/driver_cfa_cpp-DeclStats.obj -MD -MP -MF CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
     1175@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Tpo CodeTools/$(DEPDIR)/driver_cfa_cpp-DeclStats.Po
     1176@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeTools/DeclStats.cc' object='CodeTools/driver_cfa_cpp-DeclStats.obj' libtool=no @AMDEPBACKSLASH@
     1177@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1178@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeTools/driver_cfa_cpp-DeclStats.obj `if test -f 'CodeTools/DeclStats.cc'; then $(CYGPATH_W) 'CodeTools/DeclStats.cc'; else $(CYGPATH_W) '$(srcdir)/CodeTools/DeclStats.cc'; fi`
     1179
    11501180Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
    11511181@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/driver_cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo -c -o Common/driver_cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
     
    26312661        -rm -f CodeGen/$(DEPDIR)/$(am__dirstamp)
    26322662        -rm -f CodeGen/$(am__dirstamp)
     2663        -rm -f CodeTools/$(DEPDIR)/$(am__dirstamp)
     2664        -rm -f CodeTools/$(am__dirstamp)
    26332665        -rm -f Common/$(DEPDIR)/$(am__dirstamp)
    26342666        -rm -f Common/$(am__dirstamp)
     
    26642696
    26652697distclean: distclean-am
    2666         -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
     2698        -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
    26672699        -rm -f Makefile
    26682700distclean-am: clean-am distclean-compile distclean-generic \
     
    27102742
    27112743maintainer-clean: maintainer-clean-am
    2712         -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
     2744        -rm -rf ./$(DEPDIR) CodeGen/$(DEPDIR) CodeTools/$(DEPDIR) Common/$(DEPDIR) ControlStruct/$(DEPDIR) GenPoly/$(DEPDIR) InitTweak/$(DEPDIR) Parser/$(DEPDIR) ResolvExpr/$(DEPDIR) SymTab/$(DEPDIR) SynTree/$(DEPDIR) Tuples/$(DEPDIR)
    27132745        -rm -f Makefile
    27142746maintainer-clean-am: distclean-am maintainer-clean-generic
  • src/Parser/DeclarationNode.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jan 14 14:36:23 2017
    13 // Update Count     : 669
     12// Last Modified On : Mon Feb  6 16:01:29 2017
     13// Update Count     : 739
    1414//
    1515
     
    8383DeclarationNode * DeclarationNode::clone() const {
    8484        DeclarationNode * newnode = new DeclarationNode;
     85        newnode->set_next( maybeClone( get_next() ) );
     86        newnode->name = name ? new string( *name ) : nullptr;
     87
    8588        newnode->type = maybeClone( type );
    86         newnode->name = name ? new string( *name ) : nullptr;
    8789        newnode->storageClass = storageClass;
     90        newnode->bitfieldWidth = maybeClone( bitfieldWidth );
    8891        newnode->isInline = isInline;
    8992        newnode->isNoreturn = isNoreturn;
    90         newnode->bitfieldWidth = maybeClone( bitfieldWidth );
     93        newnode->enumeratorValue.reset( maybeClone( enumeratorValue.get() ) );
    9194        newnode->hasEllipsis = hasEllipsis;
    92         newnode->initializer = maybeClone( initializer );
    93         newnode->set_next( maybeClone( get_next() ) );
    9495        newnode->linkage = linkage;
    9596        newnode->asmName = maybeClone( asmName );
     97        cloneAll( attributes, newnode->attributes );
     98        newnode->initializer = maybeClone( initializer );
     99        newnode->extension = extension;
     100        newnode->error = error;
    96101
    97102//      newnode->variable.name = variable.name ? new string( *variable.name ) : nullptr;
     
    159164        newnode->type->function.newStyle = newStyle;
    160165        newnode->type->function.body = body;
     166
    161167        // ignore unnamed routine declarations: void p( int (*)(int) );
    162168        if ( newnode->name ) {
     
    436442        } // if
    437443        appendError( error, q->error );
    438 } // DeclarationNode::copyStorageClasses
     444} // DeclarationNode::checkStorageClasses
    439445
    440446DeclarationNode * DeclarationNode::copyStorageClasses( DeclarationNode * q ) {
     
    446452                storageClass = q->storageClass;
    447453        } // if
    448         attributes.splice( attributes.end(), q->attributes );
     454
     455        for ( Attribute *attr: reverseIterate( q->attributes ) ) {
     456                attributes.push_front( attr->clone() );
     457        } // for
    449458        return this;
    450459} // DeclarationNode::copyStorageClasses
     
    656665}
    657666
    658 DeclarationNode * DeclarationNode::addAsmName( ConstantExpr * newname ) {
     667DeclarationNode * DeclarationNode::addAsmName( DeclarationNode * newname ) {
    659668        assert( ! asmName );
    660         asmName = newname;
    661         return this;
     669        asmName = newname ? newname->asmName : nullptr;
     670        return this->addQualifiers( newname );
    662671}
    663672
     
    690699}
    691700
    692 static void setBase( TypeData *&type, TypeData * newType ) {
     701DeclarationNode * DeclarationNode::setBase( TypeData * newType ) {
    693702        if ( type ) {
    694703                TypeData * prevBase = type;
     
    702711                type = newType;
    703712        } // if
    704 }
     713        return this;
     714}
     715
     716DeclarationNode * DeclarationNode::copyAttribute( DeclarationNode * a ) {
     717        if ( a ) {
     718                for ( Attribute *attr: reverseIterate( a->attributes ) ) {
     719                        attributes.push_front( attr );
     720                } // for
     721                a->attributes.clear();
     722        } // if
     723        return this;
     724} // copyAttribute
    705725
    706726DeclarationNode * DeclarationNode::addPointer( DeclarationNode * p ) {
    707727        if ( p ) {
    708728                assert( p->type->kind == TypeData::Pointer );
    709                 setBase( type, p->type );
     729                setBase( p->type );
    710730                p->type = nullptr;
     731                copyAttribute( p );
    711732                delete p;
    712733        } // if
     
    717738        if ( a ) {
    718739                assert( a->type->kind == TypeData::Array );
    719                 setBase( type, a->type );
     740                setBase( a->type );
    720741                a->type = nullptr;
     742                copyAttribute( a );
    721743                delete a;
    722744        } // if
     
    790812        TypeData * ftype = new TypeData( TypeData::Function );
    791813        ftype->function.params = params;
    792         setBase( type, ftype );
     814        setBase( ftype );
    793815        return this;
    794816}
     
    836858                TypeData * srcType = type;
    837859
     860                // search for the base type by scanning off pointers and array designators
    838861                while ( srcType->base ) {
    839862                        srcType = srcType->base;
     
    9861009        if ( attr.expr ) {
    9871010//              return new AttrType( buildQualifiers( type ), *attr.name, attr.expr->build() );
    988                 return new AttrType( buildQualifiers( type ), *name, attr.expr->build() );
     1011                return new AttrType( buildQualifiers( type ), *name, attr.expr->build(), attributes );
    9891012        } else if ( attr.type ) {
    9901013//              return new AttrType( buildQualifiers( type ), *attr.name, attr.type->buildType() );
    991                 return new AttrType( buildQualifiers( type ), *name, attr.type->buildType() );
     1014                return new AttrType( buildQualifiers( type ), *name, attr.type->buildType(), attributes );
    9921015        } // if
    9931016
    9941017        switch ( type->kind ) {
    995           case TypeData::Enum:
    996                 return new EnumInstType( buildQualifiers( type ), *type->enumeration.name );
     1018          case TypeData::Enum: {
     1019                  EnumDecl * typedecl = buildEnum( type, attributes );
     1020                  return new EnumInstType( buildQualifiers( type ), typedecl );
     1021          }
    9971022          case TypeData::Aggregate: {
     1023                  AggregateDecl * typedecl = buildAggregate( type, attributes );
    9981024                  ReferenceToType * ret;
    9991025                  switch ( type->aggregate.kind ) {
    10001026                        case DeclarationNode::Struct:
    1001                           ret = new StructInstType( buildQualifiers( type ), *type->aggregate.name );
     1027                          ret = new StructInstType( buildQualifiers( type ), (StructDecl *)typedecl );
    10021028                          break;
    10031029                        case DeclarationNode::Union:
    1004                           ret = new UnionInstType( buildQualifiers( type ), *type->aggregate.name );
     1030                          ret = new UnionInstType( buildQualifiers( type ), (UnionDecl *)typedecl );
    10051031                          break;
    10061032                        case DeclarationNode::Trait:
    1007                           ret = new TraitInstType( buildQualifiers( type ), *type->aggregate.name );
     1033                          assert( false );
     1034                          //ret = new TraitInstType( buildQualifiers( type ), (TraitDecl *)typedecl );
    10081035                          break;
    10091036                        default:
     
    10141041          }
    10151042          case TypeData::Symbolic: {
    1016                   TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false );
     1043                  TypeInstType * ret = new TypeInstType( buildQualifiers( type ), *type->symbolic.name, false, attributes );
    10171044                  buildList( type->symbolic.actuals, ret->get_parameters() );
    10181045                  return ret;
    10191046          }
    10201047          default:
    1021                 return typebuild( type );
     1048                Type * simpletypes = typebuild( type );
     1049                simpletypes->get_attributes() = attributes;             // copy because member is const
     1050                return simpletypes;
    10221051        } // switch
    10231052}
  • src/Parser/ParseNode.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jan 18 16:20:43 2017
    13 // Update Count     : 650
     12// Last Modified On : Mon Feb  6 15:52:21 2017
     13// Update Count     : 657
    1414//
    1515
     
    198198  public:
    199199        // These must remain in the same order as the corresponding DeclarationNode names.
     200
     201        // enum StorageClass { Extern, Static, Auto, Register, NoStorageClass };
     202        // enum FunctionSpec { Inline, Fortran, Noreturn, NoFunctionSpec };
     203        // enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, Threadlocal, Mutex, NoQualifier };
     204
    200205        enum StorageClass { Extern, Static, Auto, Register, Inline, Fortran, Noreturn, Threadlocal, NoStorageClass, };
    201206        enum Qualifier { Const, Restrict, Volatile, Lvalue, Atomic, NoQualifier };
     
    259264        DeclarationNode * addAssertions( DeclarationNode * );
    260265        DeclarationNode * addName( std::string * );
    261         DeclarationNode * addAsmName( ConstantExpr * );
     266        DeclarationNode * addAsmName( DeclarationNode * );
    262267        DeclarationNode * addBitfield( ExpressionNode * size );
    263268        DeclarationNode * addVarArgs();
    264269        DeclarationNode * addFunctionBody( StatementNode * body );
    265270        DeclarationNode * addOldDeclList( DeclarationNode * list );
     271        DeclarationNode * setBase( TypeData * newType );
     272        DeclarationNode * copyAttribute( DeclarationNode * attr );
    266273        DeclarationNode * addPointer( DeclarationNode * qualifiers );
    267274        DeclarationNode * addArray( DeclarationNode * array );
  • src/Parser/StatementNode.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Aug 21 11:59:37 2016
    13 // Update Count     : 325
     12// Last Modified On : Thu Feb  2 22:16:40 2017
     13// Update Count     : 327
    1414//
    1515
     
    2828
    2929StatementNode::StatementNode( DeclarationNode *decl ) {
    30         if ( decl ) {
    31                 DeclarationNode *agg = decl->extractAggregate();
    32                 if ( agg ) {
    33                         StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
    34                         set_next( nextStmt );
    35                         if ( decl->get_next() ) {
    36                                 get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
    37                                 decl->set_next( 0 );
    38                         } // if
    39                 } else {
    40                         if ( decl->get_next() ) {
    41                                 set_next(new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
    42                                 decl->set_next( 0 );
    43                         } // if
    44                         agg = decl;
     30        assert( decl );
     31        DeclarationNode *agg = decl->extractAggregate();
     32        if ( agg ) {
     33                StatementNode *nextStmt = new StatementNode( new DeclStmt( noLabels, maybeBuild< Declaration >( decl ) ) );
     34                set_next( nextStmt );
     35                if ( decl->get_next() ) {
     36                        get_next()->set_next( new StatementNode( dynamic_cast< DeclarationNode * >(decl->get_next()) ) );
     37                        decl->set_next( 0 );
    4538                } // if
    46                 stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) );
    4739        } else {
    48                 assert( false );
     40                if ( decl->get_next() ) {
     41                        set_next( new StatementNode( dynamic_cast< DeclarationNode * >( decl->get_next() ) ) );
     42                        decl->set_next( 0 );
     43                } // if
     44                agg = decl;
    4945        } // if
    50 }
     46        stmt.reset( new DeclStmt( noLabels, maybeMoveBuild< Declaration >(agg) ) );
     47} // StatementNode::StatementNode
    5148
    5249StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
  • src/Parser/TypeData.cc

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jan 13 15:47:37 2017
    13 // Update Count     : 423
     12// Last Modified On : Fri Jan 27 15:28:56 2017
     13// Update Count     : 428
    1414//
    1515
     
    617617} // buildPointer
    618618
    619 AggregateDecl * buildAggregate( const TypeData * td ) {
     619AggregateDecl * buildAggregate( const TypeData * td, std::list< Attribute * > attributes ) {
    620620        assert( td->kind == TypeData::Aggregate );
    621621        AggregateDecl * at;
    622622        switch ( td->aggregate.kind ) {
    623623          case DeclarationNode::Struct:
    624                 at = new StructDecl( *td->aggregate.name );
     624                at = new StructDecl( *td->aggregate.name, attributes );
    625625                buildForall( td->aggregate.params, at->get_parameters() );
    626626                break;
    627627          case DeclarationNode::Union:
    628                 at = new UnionDecl( *td->aggregate.name );
     628                at = new UnionDecl( *td->aggregate.name, attributes );
    629629                buildForall( td->aggregate.params, at->get_parameters() );
    630630                break;
    631631          case DeclarationNode::Trait:
    632                 at = new TraitDecl( *td->aggregate.name );
     632                at = new TraitDecl( *td->aggregate.name, attributes );
    633633                buildList( td->aggregate.params, at->get_parameters() );
    634634                break;
     
    685685} // buildSymbolic
    686686
    687 EnumDecl * buildEnum( const TypeData * td ) {
     687EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes ) {
    688688        assert( td->kind == TypeData::Enum );
    689         EnumDecl * ret = new EnumDecl( *td->enumeration.name );
     689        EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes );
    690690        buildList( td->enumeration.constants, ret->get_members() );
    691691        list< Declaration * >::iterator members = ret->get_members().begin();
     
    746746                return decl->set_asmName( asmName );
    747747        } else if ( td->kind == TypeData::Aggregate ) {
    748                 return buildAggregate( td );
     748                return buildAggregate( td, attributes );
    749749        } else if ( td->kind == TypeData::Enum ) {
    750                 return buildEnum( td );
     750                return buildEnum( td, attributes );
    751751        } else if ( td->kind == TypeData::Symbolic ) {
    752752                return buildSymbolic( td, name, sc );
    753753        } else {
    754                 return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, list< Attribute * >(), isInline, isNoreturn ))->set_asmName( asmName );
     754                return (new ObjectDecl( name, sc, linkage, bitfieldWidth, typebuild( td ), init, attributes, isInline, isNoreturn ))->set_asmName( asmName );
    755755        } // if
    756756        return nullptr;
  • src/Parser/TypeData.h

    rdbe8f244 rfe26fbf  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jan 13 16:11:23 2017
    13 // Update Count     : 144
     12// Last Modified On : Thu Feb  2 17:02:09 2017
     13// Update Count     : 146
    1414//
    1515
     
    103103PointerType * buildPointer( const TypeData * );
    104104ArrayType * buildArray( const TypeData * );
    105 AggregateDecl * buildAggregate( const TypeData * );
     105AggregateDecl * buildAggregate( const TypeData *, std::list< Attribute * > );
    106106ReferenceToType * buildAggInst( const TypeData * );
    107107NamedTypeDecl * buildSymbolic( const TypeData *, const std::string &name, DeclarationNode::StorageClass sc );
    108108TypeDecl * buildVariable( const TypeData * );
    109 EnumDecl * buildEnum( const TypeData * );
     109EnumDecl * buildEnum( const TypeData *, std::list< Attribute * > );
    110110TypeInstType * buildSymbolicInst( const TypeData * );
    111111TupleType * buildTuple( const TypeData * );
  • src/Parser/parser.cc

    rdbe8f244 rfe26fbf  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 41 "parser.yy"
     69#line 42 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    9595} // appendStr
    9696
     97DeclarationNode * distAttr( DeclarationNode * specifier, DeclarationNode * declList ) {
     98        // distribute declaration_specifier across all declared variables, e.g., static, const, __attribute__.
     99        DeclarationNode * cur = declList, * cl = (new DeclarationNode)->addType( specifier );
     100        //cur->addType( specifier );
     101        for ( cur = dynamic_cast< DeclarationNode * >( cur->get_next() ); cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ) ) {
     102                cl->cloneBaseType( cur );
     103        } // for
     104        declList->addType( cl );
     105//      delete cl;
     106        return declList;
     107} // distAttr
     108
     109void distExt( DeclarationNode * declaration ) {
     110        // distribute EXTENSION across all declarations
     111        for ( DeclarationNode *iter = declaration; iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) {
     112                iter->set_extension( true );
     113        } // for
     114} // distExt
     115
    97116
    98117/* Line 268 of yacc.c  */
    99 #line 100 "Parser/parser.cc"
     118#line 119 "Parser/parser.cc"
    100119
    101120/* Enabling traces.  */
     
    358377
    359378/* Line 293 of yacc.c  */
    360 #line 119 "parser.yy"
     379#line 139 "parser.yy"
    361380
    362381        Token tok;
    363         ParseNode *pn;
    364         ExpressionNode *en;
    365         DeclarationNode *decl;
     382        ParseNode * pn;
     383        ExpressionNode * en;
     384        DeclarationNode * decl;
    366385        DeclarationNode::Aggregate aggKey;
    367386        DeclarationNode::TypeClass tclass;
    368         StatementNode *sn;
    369         ConstantExpr *constant;
    370         ForCtl *fctl;
    371         LabelNode *label;
    372         InitializerNode *in;
     387        StatementNode * sn;
     388        ConstantExpr * constant;
     389        ForCtl * fctl;
     390        LabelNode * label;
     391        InitializerNode * in;
    373392        OperKinds op;
    374         std::string *str;
     393        std::string * str;
    375394        bool flag;
    376395
     
    378397
    379398/* Line 293 of yacc.c  */
    380 #line 381 "Parser/parser.cc"
     399#line 400 "Parser/parser.cc"
    381400} YYSTYPE;
    382401# define YYSTYPE_IS_TRIVIAL 1
     
    390409
    391410/* Line 343 of yacc.c  */
    392 #line 393 "Parser/parser.cc"
     411#line 412 "Parser/parser.cc"
    393412
    394413#ifdef short
     
    607626
    608627/* YYFINAL -- State number of the termination state.  */
    609 #define YYFINAL  251
     628#define YYFINAL  240
    610629/* YYLAST -- Last index in YYTABLE.  */
    611 #define YYLAST   10498
     630#define YYLAST   10925
    612631
    613632/* YYNTOKENS -- Number of terminals.  */
    614633#define YYNTOKENS  138
    615634/* YYNNTS -- Number of nonterminals.  */
    616 #define YYNNTS  243
     635#define YYNNTS  242
    617636/* YYNRULES -- Number of rules.  */
    618 #define YYNRULES  758
     637#define YYNRULES  756
    619638/* YYNRULES -- Number of states.  */
    620 #define YYNSTATES  1546
     639#define YYNSTATES  1550
    621640
    622641/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    689708     408,   410,   414,   416,   420,   421,   423,   425,   427,   429,
    690709     431,   433,   435,   437,   439,   446,   451,   454,   462,   464,
    691      468,   470,   473,   475,   478,   480,   483,   486,   492,   500,
    692      506,   516,   522,   532,   534,   538,   540,   542,   546,   550,
    693      553,   555,   558,   561,   562,   564,   567,   571,   572,   574,
    694      577,   581,   585,   590,   591,   593,   595,   598,   604,   612,
    695      619,   626,   631,   635,   640,   643,   647,   650,   654,   658,
    696      662,   666,   672,   676,   680,   685,   687,   693,   700,   706,
    697      713,   723,   734,   744,   755,   758,   760,   763,   766,   769,
    698      771,   778,   787,   798,   811,   826,   827,   829,   830,   832,
    699      834,   838,   843,   851,   852,   854,   858,   860,   864,   866,
    700      868,   870,   874,   876,   878,   880,   884,   885,   887,   891,
    701      896,   898,   902,   904,   906,   910,   914,   918,   922,   926,
    702      929,   933,   940,   944,   948,   953,   955,   958,   961,   965,
    703      971,   979,   987,   993,  1003,  1006,  1009,  1015,  1019,  1025,
    704     1030,  1034,  1039,  1044,  1052,  1056,  1060,  1064,  1068,  1073,
    705     1080,  1082,  1084,  1086,  1088,  1090,  1092,  1094,  1096,  1097,
    706     1099,  1101,  1104,  1106,  1108,  1110,  1112,  1114,  1116,  1118,
    707     1119,  1125,  1127,  1130,  1134,  1136,  1139,  1141,  1143,  1145,
    708     1147,  1149,  1151,  1153,  1155,  1157,  1159,  1161,  1163,  1165,
    709     1167,  1169,  1171,  1173,  1175,  1177,  1179,  1181,  1183,  1185,
    710     1187,  1190,  1193,  1197,  1201,  1203,  1207,  1209,  1212,  1215,
    711     1218,  1223,  1228,  1233,  1238,  1240,  1243,  1246,  1250,  1252,
    712     1255,  1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,
    713     1282,  1287,  1290,  1291,  1298,  1306,  1309,  1312,  1315,  1316,
    714     1319,  1322,  1326,  1329,  1333,  1335,  1338,  1342,  1345,  1348,
    715     1353,  1354,  1356,  1359,  1362,  1364,  1365,  1367,  1370,  1373,
    716     1379,  1382,  1383,  1391,  1394,  1399,  1400,  1403,  1404,  1406,
    717     1408,  1410,  1416,  1422,  1428,  1430,  1436,  1442,  1452,  1454,
    718     1460,  1461,  1463,  1465,  1471,  1473,  1475,  1481,  1487,  1489,
    719     1493,  1497,  1502,  1504,  1506,  1508,  1510,  1513,  1515,  1519,
    720     1523,  1525,  1528,  1530,  1534,  1536,  1538,  1540,  1542,  1544,
    721     1546,  1548,  1550,  1552,  1554,  1556,  1559,  1561,  1563,  1565,
    722     1568,  1569,  1572,  1575,  1577,  1582,  1583,  1585,  1588,  1592,
    723     1597,  1600,  1603,  1605,  1608,  1611,  1617,  1623,  1631,  1638,
    724     1640,  1643,  1646,  1650,  1652,  1655,  1658,  1663,  1666,  1671,
    725     1672,  1677,  1680,  1682,  1684,  1686,  1688,  1689,  1692,  1698,
    726     1704,  1718,  1720,  1722,  1726,  1730,  1733,  1737,  1741,  1744,
    727     1749,  1751,  1758,  1768,  1769,  1781,  1783,  1787,  1791,  1795,
    728     1797,  1799,  1805,  1808,  1814,  1815,  1817,  1819,  1823,  1824,
    729     1826,  1828,  1830,  1832,  1833,  1840,  1843,  1845,  1848,  1853,
    730     1856,  1860,  1864,  1868,  1873,  1879,  1885,  1891,  1898,  1900,
    731     1902,  1904,  1908,  1909,  1915,  1916,  1918,  1920,  1923,  1930,
    732     1932,  1936,  1937,  1939,  1944,  1946,  1948,  1950,  1952,  1955,
    733     1957,  1960,  1963,  1965,  1969,  1972,  1976,  1980,  1983,  1988,
    734     1993,  1997,  2006,  2010,  2013,  2015,  2018,  2025,  2034,  2038,
    735     2041,  2045,  2049,  2054,  2059,  2063,  2065,  2067,  2069,  2074,
    736     2081,  2085,  2088,  2092,  2096,  2101,  2106,  2110,  2113,  2115,
    737     2118,  2121,  2123,  2127,  2130,  2134,  2138,  2141,  2146,  2151,
    738     2155,  2162,  2171,  2175,  2178,  2180,  2183,  2186,  2189,  2193,
    739     2197,  2200,  2205,  2210,  2214,  2221,  2230,  2234,  2237,  2239,
    740     2242,  2245,  2247,  2249,  2252,  2256,  2260,  2263,  2268,  2275,
    741     2284,  2286,  2289,  2292,  2294,  2297,  2300,  2304,  2308,  2310,
    742     2315,  2320,  2324,  2330,  2339,  2343,  2346,  2350,  2352,  2358,
    743     2364,  2371,  2378,  2380,  2383,  2386,  2388,  2391,  2394,  2398,
    744     2402,  2404,  2409,  2414,  2418,  2424,  2433,  2437,  2439,  2442,
    745     2444,  2447,  2454,  2460,  2467,  2475,  2483,  2485,  2488,  2491,
    746     2493,  2496,  2499,  2503,  2507,  2509,  2514,  2519,  2523,  2532,
    747     2536,  2538,  2540,  2543,  2545,  2547,  2550,  2554,  2557,  2561,
    748     2564,  2568,  2572,  2575,  2580,  2584,  2587,  2591,  2594,  2599,
    749     2603,  2606,  2613,  2620,  2627,  2635,  2637,  2640,  2642,  2644,
    750     2646,  2649,  2653,  2656,  2660,  2663,  2667,  2671,  2676,  2679,
    751     2683,  2688,  2691,  2697,  2704,  2711,  2712,  2714,  2715
     710     468,   470,   473,   475,   478,   481,   483,   486,   489,   495,
     711     503,   509,   519,   525,   535,   537,   541,   543,   545,   549,
     712     553,   556,   558,   561,   564,   565,   567,   570,   574,   575,
     713     577,   580,   584,   588,   593,   594,   596,   598,   601,   607,
     714     615,   622,   629,   634,   638,   643,   646,   650,   653,   657,
     715     661,   665,   669,   675,   679,   683,   688,   690,   696,   703,
     716     709,   716,   726,   737,   747,   758,   761,   763,   766,   769,
     717     772,   774,   781,   790,   801,   814,   829,   830,   832,   833,
     718     835,   837,   841,   846,   854,   855,   857,   861,   863,   867,
     719     869,   871,   873,   877,   879,   881,   883,   887,   888,   890,
     720     894,   899,   901,   905,   907,   909,   913,   917,   921,   925,
     721     929,   932,   936,   943,   947,   951,   956,   958,   961,   964,
     722     968,   974,   982,   990,   996,  1006,  1009,  1012,  1018,  1022,
     723    1028,  1033,  1037,  1042,  1047,  1055,  1060,  1064,  1068,  1072,
     724    1076,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,  1099,
     725    1100,  1102,  1104,  1107,  1109,  1111,  1113,  1115,  1117,  1119,
     726    1121,  1122,  1128,  1130,  1133,  1137,  1139,  1142,  1144,  1146,
     727    1148,  1150,  1152,  1154,  1156,  1158,  1160,  1162,  1164,  1166,
     728    1168,  1170,  1172,  1174,  1176,  1178,  1180,  1182,  1184,  1186,
     729    1188,  1190,  1193,  1196,  1200,  1204,  1206,  1210,  1212,  1215,
     730    1218,  1221,  1226,  1231,  1236,  1241,  1243,  1246,  1249,  1253,
     731    1255,  1258,  1261,  1263,  1266,  1269,  1273,  1275,  1278,  1281,
     732    1283,  1285,  1291,  1295,  1296,  1304,  1313,  1317,  1319,  1321,
     733    1322,  1325,  1328,  1332,  1336,  1341,  1343,  1346,  1350,  1353,
     734    1355,  1360,  1361,  1363,  1366,  1369,  1371,  1372,  1374,  1377,
     735    1384,  1388,  1389,  1398,  1401,  1406,  1407,  1410,  1411,  1413,
     736    1415,  1417,  1423,  1429,  1435,  1437,  1443,  1449,  1459,  1461,
     737    1467,  1468,  1470,  1472,  1478,  1480,  1482,  1488,  1494,  1496,
     738    1500,  1504,  1509,  1511,  1513,  1515,  1517,  1520,  1522,  1526,
     739    1530,  1532,  1535,  1537,  1541,  1543,  1545,  1547,  1549,  1551,
     740    1553,  1555,  1557,  1559,  1561,  1563,  1566,  1568,  1570,  1571,
     741    1574,  1577,  1579,  1584,  1585,  1587,  1590,  1594,  1599,  1602,
     742    1605,  1607,  1610,  1613,  1619,  1625,  1633,  1640,  1642,  1645,
     743    1648,  1652,  1654,  1657,  1660,  1665,  1668,  1673,  1674,  1679,
     744    1682,  1684,  1686,  1688,  1690,  1691,  1694,  1700,  1706,  1720,
     745    1722,  1724,  1728,  1732,  1735,  1739,  1743,  1746,  1751,  1753,
     746    1760,  1770,  1771,  1783,  1785,  1789,  1793,  1797,  1799,  1801,
     747    1807,  1810,  1816,  1817,  1819,  1821,  1825,  1826,  1828,  1830,
     748    1832,  1834,  1835,  1842,  1845,  1847,  1850,  1855,  1858,  1862,
     749    1866,  1870,  1875,  1881,  1887,  1893,  1900,  1902,  1904,  1906,
     750    1910,  1911,  1917,  1918,  1920,  1922,  1925,  1932,  1934,  1938,
     751    1939,  1941,  1946,  1948,  1950,  1952,  1954,  1957,  1959,  1962,
     752    1965,  1967,  1971,  1974,  1978,  1983,  1986,  1991,  1996,  2000,
     753    2009,  2013,  2016,  2018,  2021,  2028,  2037,  2041,  2044,  2048,
     754    2052,  2057,  2062,  2066,  2068,  2070,  2072,  2077,  2086,  2090,
     755    2093,  2097,  2101,  2106,  2111,  2115,  2118,  2120,  2123,  2126,
     756    2128,  2132,  2135,  2139,  2144,  2147,  2152,  2157,  2161,  2168,
     757    2177,  2181,  2184,  2186,  2189,  2192,  2195,  2199,  2204,  2207,
     758    2212,  2217,  2221,  2228,  2237,  2241,  2244,  2246,  2249,  2252,
     759    2254,  2256,  2259,  2263,  2268,  2271,  2276,  2283,  2292,  2294,
     760    2297,  2300,  2302,  2305,  2308,  2312,  2317,  2319,  2324,  2329,
     761    2333,  2339,  2348,  2352,  2355,  2359,  2361,  2367,  2373,  2380,
     762    2387,  2389,  2392,  2395,  2397,  2400,  2403,  2407,  2412,  2414,
     763    2419,  2424,  2428,  2434,  2443,  2447,  2449,  2452,  2454,  2457,
     764    2464,  2470,  2477,  2485,  2493,  2495,  2498,  2501,  2503,  2506,
     765    2509,  2513,  2518,  2520,  2525,  2530,  2534,  2543,  2547,  2549,
     766    2551,  2554,  2556,  2558,  2561,  2565,  2568,  2572,  2575,  2579,
     767    2583,  2586,  2591,  2595,  2598,  2602,  2605,  2610,  2614,  2617,
     768    2624,  2631,  2638,  2646,  2648,  2651,  2653,  2655,  2657,  2660,
     769    2664,  2667,  2671,  2674,  2678,  2682,  2687,  2690,  2694,  2699,
     770    2702,  2708,  2715,  2722,  2723,  2725,  2726
    752771};
    753772
     
    755774static const yytype_int16 yyrhs[] =
    756775{
    757      309,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
     776     308,     0,    -1,    -1,    -1,    82,    -1,    85,    -1,    86,
    758777      -1,    87,    -1,    83,    -1,    75,    -1,    79,    -1,   145,
    759778      -1,    75,    -1,    79,    -1,    75,    -1,   145,    -1,    88,
     
    765784     149,    86,    -1,   149,    90,   144,    -1,   149,    90,   116,
    766785     139,   152,   140,   117,    -1,   149,    91,    -1,   149,    92,
    767       -1,   114,   282,   115,   119,   286,   379,   120,    -1,   149,
     786      -1,   114,   281,   115,   119,   285,   378,   120,    -1,   149,
    768787     119,   150,   120,    -1,   151,    -1,   150,   121,   151,    -1,
    769788      -1,   172,    -1,   153,    -1,   152,   121,   153,    -1,   154,
     
    775794     141,    -1,   146,    -1,    43,   159,    -1,   157,   159,    -1,
    776795     158,   159,    -1,    91,   156,    -1,    92,   156,    -1,    40,
    777      156,    -1,    40,   114,   282,   115,    -1,    69,   156,    -1,
    778       69,   114,   282,   115,    -1,    41,   114,   282,   121,   144,
     796     156,    -1,    40,   114,   281,   115,    -1,    69,   156,    -1,
     797      69,   114,   281,   115,    -1,    41,   114,   281,   121,   144,
    779798     115,    -1,    79,    -1,    79,   114,   151,   115,    -1,    79,
    780      114,   283,   115,    -1,   122,    -1,   123,    -1,   124,    -1,
    781      125,    -1,   126,    -1,   127,    -1,   156,    -1,   114,   282,
     799     114,   282,   115,    -1,   122,    -1,   123,    -1,   124,    -1,
     800     125,    -1,   126,    -1,   127,    -1,   156,    -1,   114,   281,
    782801     115,   159,    -1,   159,    -1,   160,   122,   159,    -1,   160,
    783802     128,   159,    -1,   160,   129,   159,    -1,   160,    -1,   161,
     
    799818      -1,   177,    -1,   180,    -1,   181,    -1,   185,    -1,   186,
    800819      -1,   198,    -1,   200,    -1,   201,    -1,   206,    -1,   132,
    801      149,   119,   150,   120,   137,    -1,   279,   135,   319,   179,
     820     149,   119,   150,   120,   137,    -1,   278,   135,   318,   179,
    802821      -1,   119,   120,    -1,   119,   139,   139,   217,   182,   140,
    803822     120,    -1,   183,    -1,   182,   139,   183,    -1,   220,    -1,
    804       43,   220,    -1,   315,    -1,   179,   140,    -1,   179,    -1,
    805      184,   179,    -1,   178,   137,    -1,    44,   114,   177,   115,
    806      179,    -1,    44,   114,   177,   115,   179,    45,   179,    -1,
    807       46,   114,   177,   115,   191,    -1,    46,   114,   177,   115,
    808      119,   139,   213,   192,   120,    -1,    56,   114,   177,   115,
    809      191,    -1,    56,   114,   177,   115,   119,   139,   213,   194,
    810      120,    -1,   171,    -1,   171,   101,   171,    -1,   317,    -1,
    811      187,    -1,   188,   121,   187,    -1,    47,   188,   135,    -1,
    812       48,   135,    -1,   189,    -1,   190,   189,    -1,   190,   179,
    813       -1,    -1,   193,    -1,   190,   184,    -1,   193,   190,   184,
    814       -1,    -1,   195,    -1,   190,   197,    -1,   190,   184,   196,
    815       -1,   195,   190,   197,    -1,   195,   190,   184,   196,    -1,
    816       -1,   197,    -1,    59,    -1,    59,   137,    -1,    50,   114,
    817      177,   115,   179,    -1,    49,   179,    50,   114,   177,   115,
    818      137,    -1,    51,   114,   139,   199,   115,   179,    -1,   178,
    819      140,   137,   178,   137,   178,    -1,   220,   178,   137,   178,
    820       -1,    54,   279,   137,    -1,    54,   122,   177,   137,    -1,
    821       53,   137,    -1,    53,   279,   137,    -1,    52,   137,    -1,
    822       52,   279,   137,    -1,    55,   178,   137,    -1,    64,   173,
    823      137,    -1,    65,   173,   137,    -1,    65,   173,    66,   172,
    824      137,    -1,    60,   181,   202,    -1,    60,   181,   204,    -1,
    825       60,   181,   202,   204,    -1,   203,    -1,    61,   114,   101,
    826      115,   181,    -1,   203,    61,   114,   101,   115,   181,    -1,
    827       62,   114,   101,   115,   181,    -1,   203,    62,   114,   101,
    828      115,   181,    -1,    61,   114,   139,   139,   205,   140,   115,
    829      181,   140,    -1,   203,    61,   114,   139,   139,   205,   140,
    830      115,   181,   140,    -1,    62,   114,   139,   139,   205,   140,
    831      115,   181,   140,    -1,   203,    62,   114,   139,   139,   205,
    832      140,   115,   181,   140,    -1,    63,   181,    -1,   233,    -1,
    833      233,   316,    -1,   233,   364,    -1,   373,   144,    -1,   373,
    834       -1,    67,   207,   114,   146,   115,   137,    -1,    67,   207,
    835      114,   146,   135,   208,   115,   137,    -1,    67,   207,   114,
    836      146,   135,   208,   135,   208,   115,   137,    -1,    67,   207,
    837      114,   146,   135,   208,   135,   208,   135,   211,   115,   137,
    838       -1,    67,   207,    54,   114,   146,   135,   135,   208,   135,
    839      211,   135,   212,   115,   137,    -1,    -1,    11,    -1,    -1,
    840      209,    -1,   210,    -1,   209,   121,   210,    -1,   146,   114,
    841      171,   115,    -1,   116,   171,   117,   146,   114,   171,   115,
    842       -1,    -1,   146,    -1,   211,   121,   146,    -1,   144,    -1,
    843      212,   121,   144,    -1,   140,    -1,   214,    -1,   220,    -1,
    844      214,   139,   220,    -1,   140,    -1,   216,    -1,   230,    -1,
    845      216,   139,   230,    -1,    -1,   218,    -1,    31,   219,   137,
    846       -1,   218,    31,   219,   137,    -1,   281,    -1,   219,   121,
    847      281,    -1,   221,    -1,   230,    -1,   222,   140,   137,    -1,
    848      227,   140,   137,    -1,   224,   140,   137,    -1,   300,   140,
    849      137,    -1,   303,   140,   137,    -1,   223,   284,    -1,   239,
    850      223,   284,    -1,   222,   140,   121,   139,   279,   284,    -1,
    851      374,   279,   318,    -1,   377,   279,   318,    -1,   235,   377,
    852      279,   318,    -1,   225,    -1,   235,   225,    -1,   239,   225,
    853       -1,   239,   235,   225,    -1,   224,   140,   121,   139,   279,
    854       -1,   377,   279,   114,   139,   267,   140,   115,    -1,   226,
    855      279,   114,   139,   267,   140,   115,    -1,   116,   139,   269,
    856      140,   117,    -1,   116,   139,   269,   140,   121,   139,   270,
    857      140,   117,    -1,     3,   223,    -1,     3,   225,    -1,   227,
    858      140,   121,   139,   144,    -1,     3,   233,   316,    -1,   228,
    859      140,   121,   139,   316,    -1,   235,     3,   233,   316,    -1,
    860      233,     3,   316,    -1,   233,     3,   235,   316,    -1,     3,
    861      144,   136,   172,    -1,   229,   140,   121,   139,   144,   136,
    862      172,    -1,   231,   140,   137,    -1,   228,   140,   137,    -1,
    863      229,   140,   137,    -1,   247,   140,   137,    -1,   232,   316,
    864      318,   284,    -1,   231,   121,   319,   316,   318,   284,    -1,
    865      243,    -1,   247,    -1,   249,    -1,   290,    -1,   244,    -1,
    866      248,    -1,   250,    -1,   291,    -1,    -1,   235,    -1,   236,
    867       -1,   235,   236,    -1,   237,    -1,   321,    -1,    10,    -1,
    868       12,    -1,    11,    -1,    14,    -1,    70,    -1,    -1,    13,
    869      114,   238,   293,   115,    -1,   240,    -1,   235,   240,    -1,
    870      239,   235,   240,    -1,   241,    -1,   240,   241,    -1,     5,
    871       -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
    872       -1,    72,    -1,    74,    -1,    16,    -1,    21,    -1,    20,
    873       -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
    874       -1,    15,    -1,    27,    -1,    28,    -1,    29,    -1,    26,
    875       -1,    24,    -1,    25,    -1,   244,    -1,   239,   244,    -1,
    876      243,   241,    -1,   243,   241,   235,    -1,   243,   241,   244,
    877       -1,   245,    -1,   234,   246,   234,    -1,   242,    -1,   235,
    878      242,    -1,   245,   236,    -1,   245,   242,    -1,    30,   114,
    879      283,   115,    -1,    30,   114,   177,   115,    -1,    81,   114,
    880      283,   115,    -1,    81,   114,   177,   115,    -1,   248,    -1,
    881      239,   248,    -1,   247,   241,    -1,   247,   241,   235,    -1,
    882      251,    -1,   235,   251,    -1,   248,   236,    -1,   250,    -1,
    883      239,   250,    -1,   249,   241,    -1,   249,   241,   235,    -1,
    884       77,    -1,   235,    77,    -1,   250,   236,    -1,   252,    -1,
    885      263,    -1,   254,   119,   255,   120,    -1,   254,   281,    -1,
    886       -1,   254,   281,   253,   119,   255,   120,    -1,   254,   114,
    887      299,   115,   119,   255,   120,    -1,   254,   292,    -1,    33,
    888      319,    -1,    34,   319,    -1,    -1,   255,   256,    -1,   257,
    889      137,    -1,    43,   257,   137,    -1,   258,   137,    -1,    43,
    890      258,   137,    -1,   373,    -1,   373,   281,    -1,   257,   121,
    891      281,    -1,   257,   121,    -1,   233,   259,    -1,   258,   121,
    892      319,   259,    -1,    -1,   261,    -1,   325,   260,    -1,   338,
    893      260,    -1,   364,    -1,    -1,   261,    -1,   135,   171,    -1,
    894       32,   319,    -1,   262,   119,   265,   379,   120,    -1,   262,
    895      281,    -1,    -1,   262,   281,   264,   119,   265,   379,   120,
    896       -1,   281,   266,    -1,   265,   121,   281,   266,    -1,    -1,
    897      136,   171,    -1,    -1,   268,    -1,   270,    -1,   269,    -1,
    898      269,   140,   121,   139,   270,    -1,   270,   140,   121,   139,
    899      101,    -1,   269,   140,   121,   139,   101,    -1,   274,    -1,
    900      270,   140,   121,   139,   274,    -1,   269,   140,   121,   139,
    901      274,    -1,   269,   140,   121,   139,   270,   140,   121,   139,
    902      274,    -1,   275,    -1,   270,   140,   121,   139,   275,    -1,
    903       -1,   272,    -1,   273,    -1,   273,   140,   121,   139,   101,
    904       -1,   277,    -1,   276,    -1,   273,   140,   121,   139,   277,
    905       -1,   273,   140,   121,   139,   276,    -1,   276,    -1,   369,
    906      279,   380,    -1,   377,   279,   380,    -1,   235,   377,   279,
    907      380,    -1,   225,    -1,   277,    -1,   369,    -1,   377,    -1,
    908      235,   377,    -1,   378,    -1,   232,   343,   380,    -1,   232,
    909      347,   380,    -1,   232,    -1,   232,   358,    -1,   144,    -1,
    910      278,   121,   144,    -1,   142,    -1,    77,    -1,    78,    -1,
    911      143,    -1,    77,    -1,    78,    -1,   144,    -1,    77,    -1,
    912       78,    -1,   373,    -1,   233,    -1,   233,   364,    -1,   373,
    913       -1,   378,    -1,   233,    -1,   233,   352,    -1,    -1,   136,
    914      285,    -1,   112,   285,    -1,   172,    -1,   119,   286,   379,
    915      120,    -1,    -1,   285,    -1,   287,   285,    -1,   286,   121,
    916      285,    -1,   286,   121,   287,   285,    -1,   288,   135,    -1,
    917      281,   135,    -1,   289,    -1,   288,   289,    -1,   118,   281,
    918       -1,   116,   139,   172,   140,   117,    -1,   116,   139,   317,
    919      140,   117,    -1,   116,   139,   171,   101,   171,   140,   117,
    920       -1,   118,   116,   139,   152,   140,   117,    -1,   291,    -1,
    921      239,   291,    -1,   290,   241,    -1,   290,   241,   235,    -1,
    922      292,    -1,   235,   292,    -1,   291,   236,    -1,    78,   114,
    923      299,   115,    -1,   294,   380,    -1,   293,   121,   294,   380,
    924       -1,    -1,   296,   281,   295,   297,    -1,   233,   343,    -1,
    925       35,    -1,    37,    -1,    36,    -1,    38,    -1,    -1,   297,
    926      298,    -1,   133,   281,   114,   299,   115,    -1,   133,   119,
    927      139,   305,   120,    -1,   133,   114,   139,   293,   140,   115,
    928      119,   139,   305,   120,   114,   299,   115,    -1,   283,    -1,
    929      172,    -1,   299,   121,   283,    -1,   299,   121,   172,    -1,
    930       35,   301,    -1,   240,    35,   301,    -1,   300,   121,   301,
    931       -1,   302,   297,    -1,   302,   297,   136,   283,    -1,   281,
    932       -1,   280,   114,   139,   293,   140,   115,    -1,    39,   281,
    933      114,   139,   293,   140,   115,   119,   120,    -1,    -1,    39,
    934      281,   114,   139,   293,   140,   115,   119,   304,   305,   120,
    935       -1,   306,    -1,   305,   139,   306,    -1,   307,   140,   137,
    936       -1,   308,   140,   137,    -1,   223,    -1,   225,    -1,   307,
    937      140,   121,   139,   279,    -1,   233,   316,    -1,   308,   140,
    938      121,   139,   316,    -1,    -1,   310,    -1,   312,    -1,   310,
    939      139,   312,    -1,    -1,   310,    -1,   220,    -1,   314,    -1,
    940      206,    -1,    -1,     5,    84,   313,   119,   311,   120,    -1,
    941       43,   312,    -1,   315,    -1,   330,   181,    -1,   334,   139,
    942      215,   181,    -1,   224,   181,    -1,   232,   330,   181,    -1,
    943      235,   330,   181,    -1,   239,   330,   181,    -1,   239,   235,
    944      330,   181,    -1,   232,   334,   139,   215,   181,    -1,   235,
    945      334,   139,   215,   181,    -1,   239,   334,   139,   215,   181,
    946       -1,   239,   235,   334,   139,   215,   181,    -1,   325,    -1,
    947      338,    -1,   330,    -1,   171,   127,   171,    -1,    -1,    67,
    948      114,   146,   115,   319,    -1,    -1,   320,    -1,   321,    -1,
    949      320,   321,    -1,    42,   114,   114,   322,   115,   115,    -1,
    950      323,    -1,   322,   121,   323,    -1,    -1,   324,    -1,   324,
    951      114,   150,   115,    -1,    75,    -1,    77,    -1,    78,    -1,
    952       10,    -1,   326,   319,    -1,   327,    -1,   328,   319,    -1,
    953      329,   319,    -1,   142,    -1,   114,   326,   115,    -1,   157,
    954      325,    -1,   157,   235,   325,    -1,   114,   327,   115,    -1,
    955      326,   356,    -1,   114,   327,   115,   356,    -1,   114,   328,
    956      115,   357,    -1,   114,   328,   115,    -1,   114,   327,   115,
    957      114,   139,   271,   140,   115,    -1,   114,   329,   115,    -1,
    958      331,   319,    -1,   332,    -1,   333,   319,    -1,   326,   114,
    959      139,   271,   140,   115,    -1,   114,   332,   115,   114,   139,
    960      271,   140,   115,    -1,   114,   331,   115,    -1,   157,   330,
    961       -1,   157,   235,   330,    -1,   114,   332,   115,    -1,   114,
    962      332,   115,   356,    -1,   114,   333,   115,   357,    -1,   114,
    963      333,   115,    -1,   335,    -1,   336,    -1,   337,    -1,   326,
    964      114,   278,   115,    -1,   114,   336,   115,   114,   278,   115,
    965       -1,   114,   335,   115,    -1,   157,   334,    -1,   157,   235,
    966      334,    -1,   114,   336,   115,    -1,   114,   336,   115,   356,
    967       -1,   114,   337,   115,   357,    -1,   114,   337,   115,    -1,
    968      339,   319,    -1,   340,    -1,   341,   319,    -1,   342,   319,
    969       -1,   348,    -1,   114,   339,   115,    -1,   157,   338,    -1,
    970      157,   235,   338,    -1,   114,   340,   115,    -1,   339,   356,
    971       -1,   114,   340,   115,   356,    -1,   114,   341,   115,   357,
    972       -1,   114,   341,   115,    -1,   339,   114,   139,   271,   140,
    973      115,    -1,   114,   340,   115,   114,   139,   271,   140,   115,
    974       -1,   114,   342,   115,    -1,   326,   319,    -1,   344,    -1,
    975      345,   319,    -1,   346,   319,    -1,   157,   343,    -1,   157,
    976      235,   343,    -1,   114,   344,   115,    -1,   326,   362,    -1,
    977      114,   344,   115,   356,    -1,   114,   345,   115,   357,    -1,
    978      114,   345,   115,    -1,   326,   114,   139,   271,   140,   115,
    979       -1,   114,   344,   115,   114,   139,   271,   140,   115,    -1,
    980      114,   346,   115,    -1,   348,   319,    -1,   349,    -1,   350,
    981      319,    -1,   351,   319,    -1,    77,    -1,    78,    -1,   157,
    982      347,    -1,   157,   235,   347,    -1,   114,   349,   115,    -1,
    983      348,   362,    -1,   114,   349,   115,   362,    -1,   348,   114,
    984      139,   271,   140,   115,    -1,   114,   349,   115,   114,   139,
    985      271,   140,   115,    -1,   353,    -1,   354,   319,    -1,   355,
    986      319,    -1,   157,    -1,   157,   235,    -1,   157,   352,    -1,
    987      157,   235,   352,    -1,   114,   353,   115,    -1,   356,    -1,
    988      114,   353,   115,   356,    -1,   114,   354,   115,   357,    -1,
    989      114,   354,   115,    -1,   114,   139,   271,   140,   115,    -1,
    990      114,   353,   115,   114,   139,   271,   140,   115,    -1,   114,
    991      355,   115,    -1,   116,   117,    -1,   116,   117,   357,    -1,
    992      357,    -1,   116,   139,   172,   140,   117,    -1,   116,   139,
    993      122,   140,   117,    -1,   357,   116,   139,   172,   140,   117,
    994       -1,   357,   116,   139,   122,   140,   117,    -1,   359,    -1,
    995      360,   319,    -1,   361,   319,    -1,   157,    -1,   157,   235,
    996       -1,   157,   358,    -1,   157,   235,   358,    -1,   114,   359,
    997      115,    -1,   362,    -1,   114,   359,   115,   362,    -1,   114,
    998      360,   115,   357,    -1,   114,   360,   115,    -1,   114,   139,
    999      271,   140,   115,    -1,   114,   359,   115,   114,   139,   271,
    1000      140,   115,    -1,   114,   361,   115,    -1,   363,    -1,   363,
    1001      357,    -1,   357,    -1,   116,   117,    -1,   116,   139,   235,
     823      43,   220,    -1,   314,    -1,    43,   314,    -1,   179,   140,
     824      -1,   179,    -1,   184,   179,    -1,   178,   137,    -1,    44,
     825     114,   177,   115,   179,    -1,    44,   114,   177,   115,   179,
     826      45,   179,    -1,    46,   114,   177,   115,   191,    -1,    46,
     827     114,   177,   115,   119,   139,   213,   192,   120,    -1,    56,
     828     114,   177,   115,   191,    -1,    56,   114,   177,   115,   119,
     829     139,   213,   194,   120,    -1,   171,    -1,   171,   101,   171,
     830      -1,   316,    -1,   187,    -1,   188,   121,   187,    -1,    47,
     831     188,   135,    -1,    48,   135,    -1,   189,    -1,   190,   189,
     832      -1,   190,   179,    -1,    -1,   193,    -1,   190,   184,    -1,
     833     193,   190,   184,    -1,    -1,   195,    -1,   190,   197,    -1,
     834     190,   184,   196,    -1,   195,   190,   197,    -1,   195,   190,
     835     184,   196,    -1,    -1,   197,    -1,    59,    -1,    59,   137,
     836      -1,    50,   114,   177,   115,   179,    -1,    49,   179,    50,
     837     114,   177,   115,   137,    -1,    51,   114,   139,   199,   115,
     838     179,    -1,   178,   140,   137,   178,   137,   178,    -1,   220,
     839     178,   137,   178,    -1,    54,   278,   137,    -1,    54,   122,
     840     177,   137,    -1,    53,   137,    -1,    53,   278,   137,    -1,
     841      52,   137,    -1,    52,   278,   137,    -1,    55,   178,   137,
     842      -1,    64,   173,   137,    -1,    65,   173,   137,    -1,    65,
     843     173,    66,   172,   137,    -1,    60,   181,   202,    -1,    60,
     844     181,   204,    -1,    60,   181,   202,   204,    -1,   203,    -1,
     845      61,   114,   101,   115,   181,    -1,   203,    61,   114,   101,
     846     115,   181,    -1,    62,   114,   101,   115,   181,    -1,   203,
     847      62,   114,   101,   115,   181,    -1,    61,   114,   139,   139,
     848     205,   140,   115,   181,   140,    -1,   203,    61,   114,   139,
     849     139,   205,   140,   115,   181,   140,    -1,    62,   114,   139,
     850     139,   205,   140,   115,   181,   140,    -1,   203,    62,   114,
     851     139,   139,   205,   140,   115,   181,   140,    -1,    63,   181,
     852      -1,   233,    -1,   233,   315,    -1,   233,   363,    -1,   372,
     853     144,    -1,   372,    -1,    67,   207,   114,   146,   115,   137,
     854      -1,    67,   207,   114,   146,   135,   208,   115,   137,    -1,
     855      67,   207,   114,   146,   135,   208,   135,   208,   115,   137,
     856      -1,    67,   207,   114,   146,   135,   208,   135,   208,   135,
     857     211,   115,   137,    -1,    67,   207,    54,   114,   146,   135,
     858     135,   208,   135,   211,   135,   212,   115,   137,    -1,    -1,
     859      11,    -1,    -1,   209,    -1,   210,    -1,   209,   121,   210,
     860      -1,   146,   114,   171,   115,    -1,   116,   171,   117,   146,
     861     114,   171,   115,    -1,    -1,   146,    -1,   211,   121,   146,
     862      -1,   144,    -1,   212,   121,   144,    -1,   140,    -1,   214,
     863      -1,   220,    -1,   214,   139,   220,    -1,   140,    -1,   216,
     864      -1,   230,    -1,   216,   139,   230,    -1,    -1,   218,    -1,
     865      31,   219,   137,    -1,   218,    31,   219,   137,    -1,   280,
     866      -1,   219,   121,   280,    -1,   221,    -1,   230,    -1,   222,
     867     140,   137,    -1,   227,   140,   137,    -1,   224,   140,   137,
     868      -1,   299,   140,   137,    -1,   302,   140,   137,    -1,   223,
     869     283,    -1,   239,   223,   283,    -1,   222,   140,   121,   139,
     870     278,   283,    -1,   373,   278,   317,    -1,   376,   278,   317,
     871      -1,   235,   376,   278,   317,    -1,   225,    -1,   235,   225,
     872      -1,   239,   225,    -1,   239,   235,   225,    -1,   224,   140,
     873     121,   139,   278,    -1,   376,   278,   114,   139,   266,   140,
     874     115,    -1,   226,   278,   114,   139,   266,   140,   115,    -1,
     875     116,   139,   268,   140,   117,    -1,   116,   139,   268,   140,
     876     121,   139,   269,   140,   117,    -1,     3,   223,    -1,     3,
     877     225,    -1,   227,   140,   121,   139,   144,    -1,     3,   233,
     878     315,    -1,   228,   140,   121,   139,   315,    -1,   235,     3,
     879     233,   315,    -1,   233,     3,   315,    -1,   233,     3,   235,
     880     315,    -1,     3,   144,   136,   172,    -1,   229,   140,   121,
     881     139,   144,   136,   172,    -1,   232,   231,   140,   137,    -1,
     882     228,   140,   137,    -1,   229,   140,   137,    -1,   247,   140,
     883     137,    -1,   315,   317,   283,    -1,   231,   121,   318,   315,
     884     317,   283,    -1,   243,    -1,   247,    -1,   249,    -1,   289,
     885      -1,   244,    -1,   248,    -1,   250,    -1,   290,    -1,    -1,
     886     235,    -1,   236,    -1,   235,   236,    -1,   237,    -1,   320,
     887      -1,    10,    -1,    12,    -1,    11,    -1,    14,    -1,    70,
     888      -1,    -1,    13,   114,   238,   292,   115,    -1,   240,    -1,
     889     235,   240,    -1,   239,   235,   240,    -1,   241,    -1,   240,
     890     241,    -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,
     891       8,    -1,     9,    -1,    72,    -1,    74,    -1,    16,    -1,
     892      21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,
     893      22,    -1,    23,    -1,    15,    -1,    27,    -1,    28,    -1,
     894      29,    -1,    26,    -1,    24,    -1,    25,    -1,   244,    -1,
     895     239,   244,    -1,   243,   241,    -1,   243,   241,   235,    -1,
     896     243,   241,   244,    -1,   245,    -1,   234,   246,   234,    -1,
     897     242,    -1,   235,   242,    -1,   245,   236,    -1,   245,   242,
     898      -1,    30,   114,   282,   115,    -1,    30,   114,   177,   115,
     899      -1,    81,   114,   282,   115,    -1,    81,   114,   177,   115,
     900      -1,   248,    -1,   239,   248,    -1,   247,   241,    -1,   247,
     901     241,   235,    -1,   251,    -1,   235,   251,    -1,   248,   236,
     902      -1,   250,    -1,   239,   250,    -1,   249,   241,    -1,   249,
     903     241,   235,    -1,    77,    -1,   235,    77,    -1,   250,   236,
     904      -1,   252,    -1,   262,    -1,   254,   318,   119,   255,   120,
     905      -1,   254,   318,   280,    -1,    -1,   254,   318,   280,   253,
     906     119,   255,   120,    -1,   254,   318,   114,   298,   115,   119,
     907     255,   120,    -1,   254,   318,   291,    -1,    33,    -1,    34,
     908      -1,    -1,   255,   256,    -1,   257,   137,    -1,    43,   257,
     909     137,    -1,   233,   258,   137,    -1,    43,   233,   258,   137,
     910      -1,   372,    -1,   372,   280,    -1,   257,   121,   280,    -1,
     911     257,   121,    -1,   259,    -1,   258,   121,   318,   259,    -1,
     912      -1,   261,    -1,   324,   260,    -1,   337,   260,    -1,   363,
     913      -1,    -1,   261,    -1,   135,   171,    -1,    32,   318,   119,
     914     264,   378,   120,    -1,    32,   318,   280,    -1,    -1,    32,
     915     318,   280,   263,   119,   264,   378,   120,    -1,   280,   265,
     916      -1,   264,   121,   280,   265,    -1,    -1,   136,   171,    -1,
     917      -1,   267,    -1,   269,    -1,   268,    -1,   268,   140,   121,
     918     139,   269,    -1,   269,   140,   121,   139,   101,    -1,   268,
     919     140,   121,   139,   101,    -1,   273,    -1,   269,   140,   121,
     920     139,   273,    -1,   268,   140,   121,   139,   273,    -1,   268,
     921     140,   121,   139,   269,   140,   121,   139,   273,    -1,   274,
     922      -1,   269,   140,   121,   139,   274,    -1,    -1,   271,    -1,
     923     272,    -1,   272,   140,   121,   139,   101,    -1,   276,    -1,
     924     275,    -1,   272,   140,   121,   139,   276,    -1,   272,   140,
     925     121,   139,   275,    -1,   275,    -1,   368,   278,   379,    -1,
     926     376,   278,   379,    -1,   235,   376,   278,   379,    -1,   225,
     927      -1,   276,    -1,   368,    -1,   376,    -1,   235,   376,    -1,
     928     377,    -1,   232,   342,   379,    -1,   232,   346,   379,    -1,
     929     232,    -1,   232,   357,    -1,   144,    -1,   277,   121,   144,
     930      -1,   142,    -1,    77,    -1,    78,    -1,   143,    -1,    77,
     931      -1,    78,    -1,   144,    -1,    77,    -1,    78,    -1,   372,
     932      -1,   233,    -1,   233,   351,    -1,   281,    -1,   377,    -1,
     933      -1,   136,   284,    -1,   112,   284,    -1,   172,    -1,   119,
     934     285,   378,   120,    -1,    -1,   284,    -1,   286,   284,    -1,
     935     285,   121,   284,    -1,   285,   121,   286,   284,    -1,   287,
     936     135,    -1,   280,   135,    -1,   288,    -1,   287,   288,    -1,
     937     118,   280,    -1,   116,   139,   172,   140,   117,    -1,   116,
     938     139,   316,   140,   117,    -1,   116,   139,   171,   101,   171,
     939     140,   117,    -1,   118,   116,   139,   152,   140,   117,    -1,
     940     290,    -1,   239,   290,    -1,   289,   241,    -1,   289,   241,
     941     235,    -1,   291,    -1,   235,   291,    -1,   290,   236,    -1,
     942      78,   114,   298,   115,    -1,   293,   379,    -1,   292,   121,
     943     293,   379,    -1,    -1,   295,   280,   294,   296,    -1,   233,
     944     342,    -1,    35,    -1,    37,    -1,    36,    -1,    38,    -1,
     945      -1,   296,   297,    -1,   133,   280,   114,   298,   115,    -1,
     946     133,   119,   139,   304,   120,    -1,   133,   114,   139,   292,
     947     140,   115,   119,   139,   304,   120,   114,   298,   115,    -1,
     948     282,    -1,   172,    -1,   298,   121,   282,    -1,   298,   121,
     949     172,    -1,    35,   300,    -1,   240,    35,   300,    -1,   299,
     950     121,   300,    -1,   301,   296,    -1,   301,   296,   136,   282,
     951      -1,   280,    -1,   279,   114,   139,   292,   140,   115,    -1,
     952      39,   280,   114,   139,   292,   140,   115,   119,   120,    -1,
     953      -1,    39,   280,   114,   139,   292,   140,   115,   119,   303,
     954     304,   120,    -1,   305,    -1,   304,   139,   305,    -1,   306,
     955     140,   137,    -1,   307,   140,   137,    -1,   223,    -1,   225,
     956      -1,   306,   140,   121,   139,   278,    -1,   233,   315,    -1,
     957     307,   140,   121,   139,   315,    -1,    -1,   309,    -1,   311,
     958      -1,   309,   139,   311,    -1,    -1,   309,    -1,   220,    -1,
     959     313,    -1,   206,    -1,    -1,     5,    84,   312,   119,   310,
     960     120,    -1,    43,   311,    -1,   314,    -1,   329,   181,    -1,
     961     333,   139,   215,   181,    -1,   224,   181,    -1,   232,   329,
     962     181,    -1,   235,   329,   181,    -1,   239,   329,   181,    -1,
     963     239,   235,   329,   181,    -1,   232,   333,   139,   215,   181,
     964      -1,   235,   333,   139,   215,   181,    -1,   239,   333,   139,
     965     215,   181,    -1,   239,   235,   333,   139,   215,   181,    -1,
     966     324,    -1,   337,    -1,   329,    -1,   171,   127,   171,    -1,
     967      -1,    67,   114,   146,   115,   318,    -1,    -1,   319,    -1,
     968     320,    -1,   319,   320,    -1,    42,   114,   114,   321,   115,
     969     115,    -1,   322,    -1,   321,   121,   322,    -1,    -1,   323,
     970      -1,   323,   114,   150,   115,    -1,    75,    -1,    77,    -1,
     971      78,    -1,    10,    -1,   325,   318,    -1,   326,    -1,   327,
     972     318,    -1,   328,   318,    -1,   142,    -1,   114,   325,   115,
     973      -1,   157,   324,    -1,   157,   235,   324,    -1,   114,   326,
     974     115,   318,    -1,   325,   355,    -1,   114,   326,   115,   355,
     975      -1,   114,   327,   115,   356,    -1,   114,   327,   115,    -1,
     976     114,   326,   115,   114,   139,   270,   140,   115,    -1,   114,
     977     328,   115,    -1,   330,   318,    -1,   331,    -1,   332,   318,
     978      -1,   325,   114,   139,   270,   140,   115,    -1,   114,   331,
     979     115,   114,   139,   270,   140,   115,    -1,   114,   330,   115,
     980      -1,   157,   329,    -1,   157,   235,   329,    -1,   114,   331,
     981     115,    -1,   114,   331,   115,   355,    -1,   114,   332,   115,
     982     356,    -1,   114,   332,   115,    -1,   334,    -1,   335,    -1,
     983     336,    -1,   325,   114,   277,   115,    -1,   114,   335,   115,
     984     114,   139,   270,   140,   115,    -1,   114,   334,   115,    -1,
     985     157,   333,    -1,   157,   235,   333,    -1,   114,   335,   115,
     986      -1,   114,   335,   115,   355,    -1,   114,   336,   115,   356,
     987      -1,   114,   336,   115,    -1,   338,   318,    -1,   339,    -1,
     988     340,   318,    -1,   341,   318,    -1,   347,    -1,   114,   338,
     989     115,    -1,   157,   337,    -1,   157,   235,   337,    -1,   114,
     990     339,   115,   318,    -1,   338,   355,    -1,   114,   339,   115,
     991     355,    -1,   114,   340,   115,   356,    -1,   114,   340,   115,
     992      -1,   338,   114,   139,   270,   140,   115,    -1,   114,   339,
     993     115,   114,   139,   270,   140,   115,    -1,   114,   341,   115,
     994      -1,   325,   318,    -1,   343,    -1,   344,   318,    -1,   345,
     995     318,    -1,   157,   342,    -1,   157,   235,   342,    -1,   114,
     996     343,   115,   318,    -1,   325,   361,    -1,   114,   343,   115,
     997     355,    -1,   114,   344,   115,   356,    -1,   114,   344,   115,
     998      -1,   325,   114,   139,   270,   140,   115,    -1,   114,   343,
     999     115,   114,   139,   270,   140,   115,    -1,   114,   345,   115,
     1000      -1,   347,   318,    -1,   348,    -1,   349,   318,    -1,   350,
     1001     318,    -1,    77,    -1,    78,    -1,   157,   346,    -1,   157,
     1002     235,   346,    -1,   114,   348,   115,   318,    -1,   347,   361,
     1003      -1,   114,   348,   115,   361,    -1,   347,   114,   139,   270,
     1004     140,   115,    -1,   114,   348,   115,   114,   139,   270,   140,
     1005     115,    -1,   352,    -1,   353,   318,    -1,   354,   318,    -1,
     1006     157,    -1,   157,   235,    -1,   157,   351,    -1,   157,   235,
     1007     351,    -1,   114,   352,   115,   318,    -1,   355,    -1,   114,
     1008     352,   115,   355,    -1,   114,   353,   115,   356,    -1,   114,
     1009     353,   115,    -1,   114,   139,   270,   140,   115,    -1,   114,
     1010     352,   115,   114,   139,   270,   140,   115,    -1,   114,   354,
     1011     115,    -1,   116,   117,    -1,   116,   117,   356,    -1,   356,
     1012      -1,   116,   139,   172,   140,   117,    -1,   116,   139,   122,
     1013     140,   117,    -1,   356,   116,   139,   172,   140,   117,    -1,
     1014     356,   116,   139,   122,   140,   117,    -1,   358,    -1,   359,
     1015     318,    -1,   360,   318,    -1,   157,    -1,   157,   235,    -1,
     1016     157,   357,    -1,   157,   235,   357,    -1,   114,   358,   115,
     1017     318,    -1,   361,    -1,   114,   358,   115,   361,    -1,   114,
     1018     359,   115,   356,    -1,   114,   359,   115,    -1,   114,   139,
     1019     270,   140,   115,    -1,   114,   358,   115,   114,   139,   270,
     1020     140,   115,    -1,   114,   360,   115,    -1,   362,    -1,   362,
     1021     356,    -1,   356,    -1,   116,   117,    -1,   116,   139,   235,
    10021022     122,   140,   117,    -1,   116,   139,   235,   140,   117,    -1,
    10031023     116,   139,   235,   172,   140,   117,    -1,   116,   139,     7,
    10041024     234,   172,   140,   117,    -1,   116,   139,   235,     7,   172,
    1005      140,   117,    -1,   365,    -1,   366,   319,    -1,   367,   319,
    1006       -1,   157,    -1,   157,   235,    -1,   157,   364,    -1,   157,
    1007      235,   364,    -1,   114,   365,   115,    -1,   356,    -1,   114,
    1008      365,   115,   356,    -1,   114,   366,   115,   357,    -1,   114,
    1009      366,   115,    -1,   114,   365,   115,   114,   139,   271,   140,
    1010      115,    -1,   114,   367,   115,    -1,   369,    -1,   377,    -1,
    1011      235,   377,    -1,   370,    -1,   371,    -1,   157,   233,    -1,
    1012      235,   157,   233,    -1,   157,   378,    -1,   235,   157,   378,
    1013       -1,   157,   368,    -1,   235,   157,   368,    -1,   116,   117,
    1014      233,    -1,   372,   233,    -1,   116,   117,   357,   233,    -1,
    1015      372,   357,   233,    -1,   357,   233,    -1,   116,   117,   370,
    1016       -1,   372,   370,    -1,   116,   117,   357,   370,    -1,   372,
    1017      357,   370,    -1,   357,   370,    -1,   116,   139,   235,   122,
    1018      140,   117,    -1,   116,   139,   235,   172,   140,   117,    -1,
    1019      116,   139,   239,   172,   140,   117,    -1,   116,   139,   239,
    1020      235,   172,   140,   117,    -1,   377,    -1,   235,   377,    -1,
    1021      374,    -1,   375,    -1,   376,    -1,   157,   233,    -1,   235,
    1022      157,   233,    -1,   157,   378,    -1,   235,   157,   378,    -1,
    1023      157,   373,    -1,   235,   157,   373,    -1,   116,   117,   233,
    1024       -1,   116,   117,   357,   233,    -1,   357,   233,    -1,   116,
    1025      117,   375,    -1,   116,   117,   357,   375,    -1,   357,   375,
    1026       -1,   116,   139,   270,   140,   117,    -1,   377,   114,   139,
    1027      267,   140,   115,    -1,   226,   114,   139,   267,   140,   115,
    1028       -1,    -1,   121,    -1,    -1,   136,   172,    -1
     1025     140,   117,    -1,   364,    -1,   365,   318,    -1,   366,   318,
     1026      -1,   157,    -1,   157,   235,    -1,   157,   363,    -1,   157,
     1027     235,   363,    -1,   114,   364,   115,   318,    -1,   355,    -1,
     1028     114,   364,   115,   355,    -1,   114,   365,   115,   356,    -1,
     1029     114,   365,   115,    -1,   114,   364,   115,   114,   139,   270,
     1030     140,   115,    -1,   114,   366,   115,    -1,   368,    -1,   376,
     1031      -1,   235,   376,    -1,   369,    -1,   370,    -1,   157,   233,
     1032      -1,   235,   157,   233,    -1,   157,   377,    -1,   235,   157,
     1033     377,    -1,   157,   367,    -1,   235,   157,   367,    -1,   116,
     1034     117,   233,    -1,   371,   233,    -1,   116,   117,   356,   233,
     1035      -1,   371,   356,   233,    -1,   356,   233,    -1,   116,   117,
     1036     369,    -1,   371,   369,    -1,   116,   117,   356,   369,    -1,
     1037     371,   356,   369,    -1,   356,   369,    -1,   116,   139,   235,
     1038     122,   140,   117,    -1,   116,   139,   235,   172,   140,   117,
     1039      -1,   116,   139,   239,   172,   140,   117,    -1,   116,   139,
     1040     239,   235,   172,   140,   117,    -1,   376,    -1,   235,   376,
     1041      -1,   373,    -1,   374,    -1,   375,    -1,   157,   233,    -1,
     1042     235,   157,   233,    -1,   157,   377,    -1,   235,   157,   377,
     1043      -1,   157,   372,    -1,   235,   157,   372,    -1,   116,   117,
     1044     233,    -1,   116,   117,   356,   233,    -1,   356,   233,    -1,
     1045     116,   117,   374,    -1,   116,   117,   356,   374,    -1,   356,
     1046     374,    -1,   116,   139,   269,   140,   117,    -1,   376,   114,
     1047     139,   266,   140,   115,    -1,   226,   114,   139,   266,   140,
     1048     115,    -1,    -1,   121,    -1,    -1,   136,   172,    -1
    10291049};
    10301050
     
    10321052static const yytype_uint16 yyrline[] =
    10331053{
    1034        0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
    1035      325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
    1036      350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
    1037      384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
    1038      414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
    1039      435,   440,   442,   444,   456,   457,   465,   468,   470,   472,
    1040      477,   490,   492,   494,   496,   498,   500,   502,   504,   506,
    1041      508,   510,   517,   518,   524,   525,   526,   527,   531,   532,
    1042      539,   540,   542,   544,   549,   550,   552,   557,   558,   560,
    1043      565,   566,   568,   570,   572,   577,   578,   580,   585,   586,
    1044      591,   592,   597,   598,   603,   604,   609,   610,   615,   616,
    1045      619,   626,   631,   632,   640,   641,   645,   646,   647,   648,
    1046      649,   650,   651,   652,   653,   654,   655,   656,   666,   668,
    1047      673,   674,   679,   680,   686,   687,   693,   694,   695,   696,
    1048      697,   698,   699,   700,   701,   711,   718,   720,   730,   731,
    1049      736,   738,   744,   746,   750,   751,   756,   761,   764,   766,
    1050      768,   778,   780,   791,   792,   794,   798,   800,   804,   805,
    1051      810,   811,   815,   820,   821,   825,   827,   833,   834,   838,
    1052      840,   842,   844,   850,   851,   855,   857,   862,   864,   866,
    1053      871,   873,   878,   880,   884,   887,   891,   894,   898,   900,
    1054      902,   904,   909,   911,   913,   918,   920,   922,   924,   926,
    1055      931,   933,   935,   937,   942,   954,   955,   960,   962,   967,
    1056      971,   973,   975,   977,   979,   985,   986,   992,   993,   997,
    1057      998,  1003,  1005,  1011,  1012,  1014,  1020,  1025,  1035,  1037,
    1058     1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
    1059     1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
    1060     1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
    1061     1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
    1062     1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
    1063     1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
    1064     1319,  1320,  1325,  1326,  1330,  1332,  1334,  1336,  1338,  1341,
    1065     1340,  1352,  1353,  1355,  1365,  1366,  1371,  1373,  1375,  1377,
    1066     1379,  1382,  1384,  1387,  1392,  1394,  1396,  1398,  1400,  1402,
    1067     1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1426,
    1068     1427,  1429,  1431,  1433,  1438,  1439,  1445,  1446,  1448,  1450,
    1069     1455,  1457,  1459,  1461,  1466,  1467,  1469,  1471,  1476,  1477,
    1070     1479,  1484,  1485,  1487,  1489,  1494,  1496,  1498,  1503,  1504,
    1071     1508,  1510,  1516,  1515,  1519,  1521,  1526,  1528,  1534,  1535,
    1072     1540,  1541,  1543,  1544,  1553,  1554,  1556,  1558,  1563,  1565,
    1073     1571,  1572,  1574,  1577,  1580,  1585,  1586,  1591,  1596,  1600,
    1074     1602,  1608,  1607,  1614,  1616,  1622,  1623,  1631,  1632,  1636,
    1075     1637,  1638,  1640,  1642,  1649,  1650,  1652,  1654,  1659,  1660,
    1076     1666,  1667,  1671,  1672,  1677,  1678,  1679,  1681,  1689,  1690,
    1077     1692,  1695,  1697,  1701,  1702,  1703,  1705,  1707,  1711,  1716,
    1078     1724,  1725,  1734,  1736,  1741,  1742,  1743,  1747,  1748,  1749,
    1079     1753,  1754,  1755,  1759,  1760,  1761,  1766,  1767,  1768,  1769,
    1080     1775,  1776,  1778,  1783,  1784,  1789,  1790,  1791,  1792,  1793,
    1081     1808,  1809,  1814,  1815,  1821,  1823,  1826,  1828,  1830,  1853,
    1082     1854,  1856,  1858,  1863,  1864,  1866,  1871,  1876,  1877,  1883,
    1083     1882,  1886,  1890,  1892,  1894,  1896,  1902,  1903,  1908,  1913,
    1084     1915,  1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,
    1085     1946,  1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,
    1086     1994,  1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,
    1087     2041,  2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,
    1088     2092,  2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,
    1089     2149,  2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2182,
    1090     2183,  2189,  2190,  2192,  2197,  2198,  2199,  2200,  2235,  2237,
    1091     2238,  2240,  2245,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
    1092     2270,  2275,  2277,  2286,  2288,  2289,  2294,  2296,  2298,  2303,
    1093     2305,  2307,  2312,  2314,  2316,  2325,  2326,  2327,  2331,  2333,
    1094     2335,  2340,  2342,  2344,  2349,  2351,  2353,  2368,  2370,  2371,
    1095     2373,  2378,  2379,  2384,  2386,  2388,  2393,  2395,  2397,  2399,
    1096     2404,  2406,  2408,  2418,  2420,  2421,  2423,  2428,  2430,  2432,
    1097     2437,  2439,  2441,  2443,  2448,  2450,  2452,  2483,  2485,  2486,
    1098     2488,  2493,  2498,  2506,  2508,  2510,  2515,  2517,  2522,  2524,
    1099     2538,  2539,  2541,  2546,  2548,  2550,  2552,  2554,  2559,  2560,
    1100     2562,  2564,  2569,  2571,  2573,  2579,  2581,  2583,  2587,  2589,
    1101     2591,  2593,  2607,  2608,  2610,  2615,  2617,  2619,  2621,  2623,
    1102     2628,  2629,  2631,  2633,  2638,  2640,  2642,  2648,  2649,  2651,
    1103     2660,  2663,  2665,  2668,  2670,  2672,  2685,  2686,  2688,  2693,
    1104     2695,  2697,  2699,  2701,  2706,  2707,  2709,  2711,  2716,  2718,
    1105     2726,  2727,  2728,  2733,  2734,  2738,  2740,  2742,  2744,  2746,
    1106     2748,  2755,  2757,  2759,  2761,  2763,  2766,  2768,  2770,  2772,
    1107     2774,  2779,  2781,  2783,  2788,  2814,  2815,  2817,  2821,  2822,
    1108     2826,  2828,  2830,  2832,  2834,  2836,  2843,  2845,  2847,  2849,
    1109     2851,  2853,  2858,  2865,  2867,  2885,  2887,  2892,  2893
     1054       0,   326,   326,   330,   337,   338,   339,   340,   341,   345,
     1055     346,   347,   351,   352,   356,   357,   361,   362,   366,   370,
     1056     371,   382,   384,   386,   387,   389,   394,   395,   401,   403,
     1057     405,   407,   409,   411,   413,   415,   417,   419,   428,   429,
     1058     435,   436,   440,   441,   445,   446,   448,   450,   452,   454,
     1059     456,   461,   463,   465,   477,   478,   486,   489,   491,   493,
     1060     498,   511,   513,   515,   517,   519,   521,   523,   525,   527,
     1061     529,   531,   538,   539,   545,   546,   547,   548,   552,   553,
     1062     560,   561,   563,   565,   570,   571,   573,   578,   579,   581,
     1063     586,   587,   589,   591,   593,   598,   599,   601,   606,   607,
     1064     612,   613,   618,   619,   624,   625,   630,   631,   636,   637,
     1065     640,   647,   652,   653,   661,   662,   666,   667,   668,   669,
     1066     670,   671,   672,   673,   674,   675,   676,   677,   687,   689,
     1067     694,   695,   700,   701,   707,   708,   714,   715,   716,   717,
     1068     718,   719,   720,   721,   722,   732,   739,   741,   752,   753,
     1069     758,   760,   765,   767,   772,   776,   777,   782,   787,   790,
     1070     792,   794,   804,   806,   817,   818,   820,   824,   826,   830,
     1071     831,   836,   837,   841,   846,   847,   851,   853,   859,   860,
     1072     864,   866,   868,   870,   876,   877,   881,   883,   888,   890,
     1073     892,   897,   899,   904,   906,   910,   913,   917,   920,   924,
     1074     926,   928,   930,   935,   937,   939,   944,   946,   948,   950,
     1075     952,   957,   959,   961,   963,   968,   980,   981,   986,   988,
     1076     993,   997,   999,  1001,  1003,  1005,  1011,  1012,  1018,  1019,
     1077    1023,  1024,  1029,  1031,  1037,  1038,  1040,  1046,  1051,  1061,
     1078    1063,  1067,  1068,  1073,  1075,  1079,  1080,  1084,  1086,  1090,
     1079    1091,  1095,  1096,  1100,  1101,  1116,  1117,  1118,  1119,  1120,
     1080    1124,  1129,  1136,  1146,  1151,  1156,  1164,  1169,  1174,  1179,
     1081    1184,  1214,  1219,  1226,  1228,  1235,  1240,  1245,  1256,  1261,
     1082    1266,  1271,  1276,  1285,  1290,  1320,  1324,  1325,  1326,  1332,
     1083    1337,  1345,  1346,  1347,  1348,  1352,  1353,  1354,  1355,  1360,
     1084    1361,  1370,  1371,  1376,  1377,  1381,  1383,  1385,  1387,  1389,
     1085    1392,  1391,  1403,  1404,  1406,  1416,  1417,  1422,  1424,  1426,
     1086    1428,  1430,  1433,  1435,  1438,  1443,  1445,  1447,  1449,  1451,
     1087    1453,  1455,  1457,  1459,  1461,  1463,  1465,  1467,  1469,  1471,
     1088    1477,  1478,  1480,  1482,  1484,  1489,  1490,  1496,  1497,  1499,
     1089    1501,  1506,  1508,  1510,  1512,  1517,  1518,  1520,  1522,  1527,
     1090    1528,  1530,  1535,  1536,  1538,  1540,  1545,  1547,  1549,  1554,
     1091    1555,  1559,  1561,  1567,  1566,  1570,  1572,  1577,  1579,  1585,
     1092    1586,  1591,  1592,  1597,  1600,  1608,  1609,  1611,  1613,  1618,
     1093    1619,  1625,  1626,  1628,  1631,  1634,  1639,  1640,  1645,  1650,
     1094    1652,  1658,  1657,  1664,  1666,  1672,  1673,  1681,  1682,  1686,
     1095    1687,  1688,  1690,  1692,  1699,  1700,  1702,  1704,  1709,  1710,
     1096    1716,  1717,  1721,  1722,  1727,  1728,  1729,  1731,  1739,  1740,
     1097    1742,  1745,  1747,  1751,  1752,  1753,  1755,  1757,  1761,  1766,
     1098    1774,  1775,  1784,  1786,  1791,  1792,  1793,  1797,  1798,  1799,
     1099    1803,  1804,  1805,  1809,  1810,  1811,  1816,  1817,  1822,  1823,
     1100    1825,  1830,  1831,  1836,  1837,  1838,  1839,  1840,  1855,  1856,
     1101    1861,  1862,  1868,  1870,  1873,  1875,  1877,  1900,  1901,  1903,
     1102    1905,  1910,  1911,  1913,  1918,  1923,  1924,  1930,  1929,  1933,
     1103    1937,  1939,  1941,  1943,  1949,  1950,  1955,  1960,  1962,  1967,
     1104    1969,  1970,  1972,  1977,  1979,  1981,  1986,  1988,  1993,  1998,
     1105    2006,  2012,  2011,  2025,  2026,  2031,  2032,  2036,  2041,  2046,
     1106    2054,  2059,  2070,  2071,  2076,  2077,  2083,  2084,  2088,  2089,
     1107    2090,  2093,  2092,  2103,  2111,  2117,  2123,  2132,  2138,  2144,
     1108    2150,  2156,  2164,  2170,  2178,  2184,  2193,  2194,  2195,  2199,
     1109    2205,  2206,  2216,  2217,  2221,  2222,  2227,  2232,  2233,  2239,
     1110    2240,  2242,  2247,  2248,  2249,  2250,  2285,  2287,  2288,  2290,
     1111    2295,  2300,  2305,  2307,  2309,  2314,  2316,  2318,  2320,  2325,
     1112    2327,  2336,  2338,  2339,  2344,  2346,  2348,  2353,  2355,  2357,
     1113    2362,  2364,  2366,  2378,  2379,  2380,  2384,  2386,  2388,  2393,
     1114    2395,  2397,  2402,  2404,  2406,  2421,  2423,  2424,  2426,  2431,
     1115    2432,  2437,  2439,  2441,  2446,  2448,  2450,  2452,  2457,  2459,
     1116    2461,  2471,  2473,  2474,  2476,  2481,  2483,  2485,  2490,  2492,
     1117    2494,  2496,  2501,  2503,  2505,  2518,  2520,  2521,  2523,  2528,
     1118    2533,  2541,  2543,  2545,  2550,  2552,  2557,  2559,  2576,  2577,
     1119    2579,  2584,  2586,  2588,  2590,  2592,  2597,  2598,  2600,  2602,
     1120    2607,  2609,  2611,  2617,  2619,  2621,  2625,  2627,  2629,  2631,
     1121    2665,  2666,  2668,  2673,  2675,  2677,  2679,  2681,  2686,  2687,
     1122    2689,  2691,  2696,  2698,  2700,  2706,  2707,  2709,  2718,  2721,
     1123    2723,  2726,  2728,  2730,  2744,  2745,  2747,  2752,  2754,  2756,
     1124    2758,  2760,  2765,  2766,  2768,  2770,  2775,  2777,  2785,  2786,
     1125    2787,  2792,  2793,  2797,  2799,  2801,  2803,  2805,  2807,  2814,
     1126    2816,  2818,  2820,  2822,  2825,  2827,  2829,  2831,  2833,  2838,
     1127    2840,  2842,  2847,  2873,  2874,  2876,  2880,  2881,  2885,  2887,
     1128    2889,  2891,  2893,  2895,  2902,  2904,  2906,  2908,  2910,  2912,
     1129    2917,  2924,  2926,  2944,  2946,  2951,  2952
    11101130};
    11111131#endif
     
    11611181  "asm_volatile_opt", "asm_operands_opt", "asm_operands_list",
    11621182  "asm_operand", "asm_clobbers_list_opt", "label_list",
    1163   "declaration_list_opt", "declaration_list", "old_declaration_list_opt",
    1164   "old_declaration_list", "local_label_declaration_opt",
     1183  "declaration_list_opt", "declaration_list", "KR_declaration_list_opt",
     1184  "KR_declaration_list", "local_label_declaration_opt",
    11651185  "local_label_declaration_list", "local_label_list", "declaration",
    1166   "new_declaration", "new_variable_declaration", "new_variable_specifier",
    1167   "new_function_declaration", "new_function_specifier",
    1168   "new_function_return", "new_typedef_declaration", "typedef_declaration",
    1169   "typedef_expression", "old_declaration", "declaring_list",
     1186  "cfa_declaration", "cfa_variable_declaration", "cfa_variable_specifier",
     1187  "cfa_function_declaration", "cfa_function_specifier",
     1188  "cfa_function_return", "cfa_typedef_declaration", "typedef_declaration",
     1189  "typedef_expression", "c_declaration", "declaring_list",
    11701190  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
    11711191  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
     
    11741194  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
    11751195  "sue_type_specifier", "typedef_declaration_specifier",
    1176   "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
    1177   "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
    1178   "new_field_declaring_list", "field_declaring_list", "field_declarator",
    1179   "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
    1180   "$@3", "enumerator_list", "enumerator_value_opt",
    1181   "new_parameter_type_list_opt", "new_parameter_type_list",
    1182   "new_parameter_list", "new_abstract_parameter_list",
    1183   "parameter_type_list_opt", "parameter_type_list", "parameter_list",
    1184   "new_parameter_declaration", "new_abstract_parameter_declaration",
    1185   "parameter_declaration", "abstract_parameter_declaration",
    1186   "identifier_list", "identifier_or_type_name",
    1187   "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name",
    1188   "type_name_no_function", "type_name", "initializer_opt", "initializer",
    1189   "initializer_list", "designation", "designator_list", "designator",
    1190   "typegen_declaration_specifier", "typegen_type_specifier",
    1191   "typegen_name", "type_parameter_list", "type_parameter", "$@4",
    1192   "type_class", "assertion_list_opt", "assertion", "type_name_list",
    1193   "type_declaring_list", "type_declarator", "type_declarator_name",
    1194   "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration",
    1195   "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
     1196  "typedef_type_specifier", "elaborated_type", "aggregate_type", "$@2",
     1197  "aggregate_key", "field_declaration_list", "field_declaration",
     1198  "cfa_field_declaring_list", "field_declaring_list", "field_declarator",
     1199  "bit_subrange_size_opt", "bit_subrange_size", "enum_type", "$@3",
     1200  "enumerator_list", "enumerator_value_opt", "cfa_parameter_type_list_opt",
     1201  "cfa_parameter_type_list", "cfa_parameter_list",
     1202  "cfa_abstract_parameter_list", "parameter_type_list_opt",
     1203  "parameter_type_list", "parameter_list", "cfa_parameter_declaration",
     1204  "cfa_abstract_parameter_declaration", "parameter_declaration",
     1205  "abstract_parameter_declaration", "identifier_list",
     1206  "identifier_or_type_name", "no_01_identifier_or_type_name",
     1207  "no_attr_identifier_or_type_name", "type_name_no_function", "type_name",
     1208  "initializer_opt", "initializer", "initializer_list", "designation",
     1209  "designator_list", "designator", "typegen_declaration_specifier",
     1210  "typegen_type_specifier", "typegen_name", "type_parameter_list",
     1211  "type_parameter", "$@4", "type_class", "assertion_list_opt", "assertion",
     1212  "type_name_list", "type_declaring_list", "type_declarator",
     1213  "type_declarator_name", "trait_specifier", "$@5",
     1214  "trait_declaration_list", "trait_declaration",
     1215  "cfa_trait_declaring_list", "trait_declaring_list", "translation_unit",
    11961216  "external_definition_list", "external_definition_list_opt",
    11971217  "external_definition", "$@6", "external_function_definition",
     
    12021222  "variable_array", "variable_function", "function_declarator",
    12031223  "function_no_ptr", "function_ptr", "function_array",
    1204   "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1205   "old_function_array", "variable_type_redeclarator", "paren_type",
     1224  "KR_function_declarator", "KR_function_no_ptr", "KR_function_ptr",
     1225  "KR_function_array", "variable_type_redeclarator", "paren_type",
    12061226  "type_ptr", "type_array", "type_function",
    12071227  "identifier_parameter_declarator", "identifier_parameter_ptr",
     
    12161236  "variable_abstract_ptr", "variable_abstract_array",
    12171237  "variable_abstract_function",
    1218   "new_identifier_parameter_declarator_tuple",
    1219   "new_identifier_parameter_declarator_no_tuple",
    1220   "new_identifier_parameter_ptr", "new_identifier_parameter_array",
    1221   "new_array_parameter_1st_dimension", "new_abstract_declarator_tuple",
    1222   "new_abstract_declarator_no_tuple", "new_abstract_ptr",
    1223   "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
     1238  "cfa_identifier_parameter_declarator_tuple",
     1239  "cfa_identifier_parameter_declarator_no_tuple",
     1240  "cfa_identifier_parameter_ptr", "cfa_identifier_parameter_array",
     1241  "cfa_array_parameter_1st_dimension", "cfa_abstract_declarator_tuple",
     1242  "cfa_abstract_declarator_no_tuple", "cfa_abstract_ptr",
     1243  "cfa_abstract_array", "cfa_abstract_tuple", "cfa_abstract_function",
    12241244  "comma_opt", "assignment_opt", 0
    12251245};
     
    12661286     176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
    12671287     179,   179,   179,   179,   179,   180,   181,   181,   182,   182,
    1268      183,   183,   183,   183,   184,   184,   185,   186,   186,   186,
    1269      186,   186,   186,   187,   187,   187,   188,   188,   189,   189,
    1270      190,   190,   191,   192,   192,   193,   193,   194,   194,   195,
    1271      195,   195,   195,   196,   196,   197,   197,   198,   198,   198,
    1272      199,   199,   200,   200,   200,   200,   200,   200,   200,   200,
    1273      200,   200,   201,   201,   201,   202,   202,   202,   202,   202,
    1274      203,   203,   203,   203,   204,   205,   205,   205,   205,   205,
    1275      206,   206,   206,   206,   206,   207,   207,   208,   208,   209,
    1276      209,   210,   210,   211,   211,   211,   212,   212,   213,   213,
    1277      214,   214,   215,   215,   216,   216,   217,   217,   218,   218,
    1278      219,   219,   220,   220,   221,   221,   221,   221,   221,   222,
    1279      222,   222,   223,   223,   223,   224,   224,   224,   224,   224,
    1280      225,   225,   226,   226,   227,   227,   227,   228,   228,   228,
    1281      228,   228,   229,   229,   230,   230,   230,   230,   231,   231,
    1282      232,   232,   232,   232,   233,   233,   233,   233,   234,   234,
    1283      235,   235,   236,   236,   237,   237,   237,   237,   237,   238,
    1284      237,   239,   239,   239,   240,   240,   241,   241,   241,   241,
    1285      241,   241,   241,   241,   242,   242,   242,   242,   242,   242,
    1286      242,   242,   242,   242,   242,   242,   242,   242,   242,   243,
    1287      243,   243,   243,   243,   244,   244,   245,   245,   245,   245,
    1288      246,   246,   246,   246,   247,   247,   247,   247,   248,   248,
    1289      248,   249,   249,   249,   249,   250,   250,   250,   251,   251,
    1290      252,   252,   253,   252,   252,   252,   254,   254,   255,   255,
    1291      256,   256,   256,   256,   257,   257,   257,   257,   258,   258,
    1292      259,   259,   259,   259,   259,   260,   260,   261,   262,   263,
    1293      263,   264,   263,   265,   265,   266,   266,   267,   267,   268,
    1294      268,   268,   268,   268,   269,   269,   269,   269,   270,   270,
    1295      271,   271,   272,   272,   273,   273,   273,   273,   274,   274,
    1296      274,   274,   274,   275,   275,   275,   275,   275,   276,   276,
    1297      277,   277,   278,   278,   279,   279,   279,   280,   280,   280,
    1298      281,   281,   281,   282,   282,   282,   283,   283,   283,   283,
    1299      284,   284,   284,   285,   285,   286,   286,   286,   286,   286,
    1300      287,   287,   288,   288,   289,   289,   289,   289,   289,   290,
    1301      290,   290,   290,   291,   291,   291,   292,   293,   293,   295,
    1302      294,   294,   296,   296,   296,   296,   297,   297,   298,   298,
    1303      298,   299,   299,   299,   299,   300,   300,   300,   301,   301,
    1304      302,   302,   303,   304,   303,   305,   305,   306,   306,   307,
     1288     183,   183,   183,   183,   183,   184,   184,   185,   186,   186,
     1289     186,   186,   186,   186,   187,   187,   187,   188,   188,   189,
     1290     189,   190,   190,   191,   192,   192,   193,   193,   194,   194,
     1291     195,   195,   195,   195,   196,   196,   197,   197,   198,   198,
     1292     198,   199,   199,   200,   200,   200,   200,   200,   200,   200,
     1293     200,   200,   200,   201,   201,   201,   202,   202,   202,   202,
     1294     202,   203,   203,   203,   203,   204,   205,   205,   205,   205,
     1295     205,   206,   206,   206,   206,   206,   207,   207,   208,   208,
     1296     209,   209,   210,   210,   211,   211,   211,   212,   212,   213,
     1297     213,   214,   214,   215,   215,   216,   216,   217,   217,   218,
     1298     218,   219,   219,   220,   220,   221,   221,   221,   221,   221,
     1299     222,   222,   222,   223,   223,   223,   224,   224,   224,   224,
     1300     224,   225,   225,   226,   226,   227,   227,   227,   228,   228,
     1301     228,   228,   228,   229,   229,   230,   230,   230,   230,   231,
     1302     231,   232,   232,   232,   232,   233,   233,   233,   233,   234,
     1303     234,   235,   235,   236,   236,   237,   237,   237,   237,   237,
     1304     238,   237,   239,   239,   239,   240,   240,   241,   241,   241,
     1305     241,   241,   241,   241,   241,   242,   242,   242,   242,   242,
     1306     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
     1307     243,   243,   243,   243,   243,   244,   244,   245,   245,   245,
     1308     245,   246,   246,   246,   246,   247,   247,   247,   247,   248,
     1309     248,   248,   249,   249,   249,   249,   250,   250,   250,   251,
     1310     251,   252,   252,   253,   252,   252,   252,   254,   254,   255,
     1311     255,   256,   256,   256,   256,   257,   257,   257,   257,   258,
     1312     258,   259,   259,   259,   259,   259,   260,   260,   261,   262,
     1313     262,   263,   262,   264,   264,   265,   265,   266,   266,   267,
     1314     267,   267,   267,   267,   268,   268,   268,   268,   269,   269,
     1315     270,   270,   271,   271,   272,   272,   272,   272,   273,   273,
     1316     273,   273,   273,   274,   274,   274,   274,   274,   275,   275,
     1317     276,   276,   277,   277,   278,   278,   278,   279,   279,   279,
     1318     280,   280,   280,   281,   281,   281,   282,   282,   283,   283,
     1319     283,   284,   284,   285,   285,   285,   285,   285,   286,   286,
     1320     287,   287,   288,   288,   288,   288,   288,   289,   289,   289,
     1321     289,   290,   290,   290,   291,   292,   292,   294,   293,   293,
     1322     295,   295,   295,   295,   296,   296,   297,   297,   297,   298,
     1323     298,   298,   298,   299,   299,   299,   300,   300,   301,   301,
     1324     302,   303,   302,   304,   304,   305,   305,   306,   306,   306,
    13051325     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
    1306      312,   312,   312,   313,   312,   312,   314,   314,   314,   315,
    1307      315,   315,   315,   315,   315,   315,   315,   315,   316,   316,
    1308      316,   317,   318,   318,   319,   319,   320,   320,   321,   322,
    1309      322,   323,   323,   323,   324,   324,   324,   324,   325,   325,
    1310      325,   325,   326,   326,   327,   327,   327,   328,   328,   328,
    1311      328,   329,   329,   330,   330,   330,   331,   331,   331,   332,
    1312      332,   332,   333,   333,   333,   334,   334,   334,   335,   335,
    1313      335,   336,   336,   336,   337,   337,   337,   338,   338,   338,
    1314      338,   339,   339,   340,   340,   340,   341,   341,   341,   341,
    1315      342,   342,   342,   343,   343,   343,   343,   344,   344,   344,
    1316      345,   345,   345,   345,   346,   346,   346,   347,   347,   347,
    1317      347,   348,   348,   349,   349,   349,   350,   350,   351,   351,
    1318      352,   352,   352,   353,   353,   353,   353,   353,   354,   354,
    1319      354,   354,   355,   355,   355,   356,   356,   356,   357,   357,
    1320      357,   357,   358,   358,   358,   359,   359,   359,   359,   359,
    1321      360,   360,   360,   360,   361,   361,   361,   362,   362,   362,
    1322      363,   363,   363,   363,   363,   363,   364,   364,   364,   365,
    1323      365,   365,   365,   365,   366,   366,   366,   366,   367,   367,
    1324      368,   368,   368,   369,   369,   370,   370,   370,   370,   370,
    1325      370,   371,   371,   371,   371,   371,   371,   371,   371,   371,
    1326      371,   372,   372,   372,   372,   373,   373,   373,   374,   374,
    1327      375,   375,   375,   375,   375,   375,   376,   376,   376,   376,
    1328      376,   376,   377,   378,   378,   379,   379,   380,   380
     1326     311,   312,   311,   311,   313,   313,   313,   314,   314,   314,
     1327     314,   314,   314,   314,   314,   314,   315,   315,   315,   316,
     1328     317,   317,   318,   318,   319,   319,   320,   321,   321,   322,
     1329     322,   322,   323,   323,   323,   323,   324,   324,   324,   324,
     1330     325,   325,   326,   326,   326,   327,   327,   327,   327,   328,
     1331     328,   329,   329,   329,   330,   330,   330,   331,   331,   331,
     1332     332,   332,   332,   333,   333,   333,   334,   334,   334,   335,
     1333     335,   335,   336,   336,   336,   337,   337,   337,   337,   338,
     1334     338,   339,   339,   339,   340,   340,   340,   340,   341,   341,
     1335     341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
     1336     344,   344,   345,   345,   345,   346,   346,   346,   346,   347,
     1337     347,   348,   348,   348,   349,   349,   350,   350,   351,   351,
     1338     351,   352,   352,   352,   352,   352,   353,   353,   353,   353,
     1339     354,   354,   354,   355,   355,   355,   356,   356,   356,   356,
     1340     357,   357,   357,   358,   358,   358,   358,   358,   359,   359,
     1341     359,   359,   360,   360,   360,   361,   361,   361,   362,   362,
     1342     362,   362,   362,   362,   363,   363,   363,   364,   364,   364,
     1343     364,   364,   365,   365,   365,   365,   366,   366,   367,   367,
     1344     367,   368,   368,   369,   369,   369,   369,   369,   369,   370,
     1345     370,   370,   370,   370,   370,   370,   370,   370,   370,   371,
     1346     371,   371,   371,   372,   372,   372,   373,   373,   374,   374,
     1347     374,   374,   374,   374,   375,   375,   375,   375,   375,   375,
     1348     376,   377,   377,   378,   378,   379,   379
    13291349};
    13301350
     
    13471367       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
    13481368       1,     1,     1,     1,     6,     4,     2,     7,     1,     3,
    1349        1,     2,     1,     2,     1,     2,     2,     5,     7,     5,
    1350        9,     5,     9,     1,     3,     1,     1,     3,     3,     2,
    1351        1,     2,     2,     0,     1,     2,     3,     0,     1,     2,
    1352        3,     3,     4,     0,     1,     1,     2,     5,     7,     6,
    1353        6,     4,     3,     4,     2,     3,     2,     3,     3,     3,
    1354        3,     5,     3,     3,     4,     1,     5,     6,     5,     6,
    1355        9,    10,     9,    10,     2,     1,     2,     2,     2,     1,
    1356        6,     8,    10,    12,    14,     0,     1,     0,     1,     1,
    1357        3,     4,     7,     0,     1,     3,     1,     3,     1,     1,
    1358        1,     3,     1,     1,     1,     3,     0,     1,     3,     4,
    1359        1,     3,     1,     1,     3,     3,     3,     3,     3,     2,
    1360        3,     6,     3,     3,     4,     1,     2,     2,     3,     5,
    1361        7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
    1362        3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
    1363        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    1364        1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
    1365        5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
     1369       1,     2,     1,     2,     2,     1,     2,     2,     5,     7,
     1370       5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
     1371       2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
     1372       2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
     1373       6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
     1374       3,     3,     5,     3,     3,     4,     1,     5,     6,     5,
     1375       6,     9,    10,     9,    10,     2,     1,     2,     2,     2,
     1376       1,     6,     8,    10,    12,    14,     0,     1,     0,     1,
     1377       1,     3,     4,     7,     0,     1,     3,     1,     3,     1,
     1378       1,     1,     3,     1,     1,     1,     3,     0,     1,     3,
     1379       4,     1,     3,     1,     1,     3,     3,     3,     3,     3,
     1380       2,     3,     6,     3,     3,     4,     1,     2,     2,     3,
     1381       5,     7,     7,     5,     9,     2,     2,     5,     3,     5,
     1382       4,     3,     4,     4,     7,     4,     3,     3,     3,     3,
     1383       6,     1,     1,     1,     1,     1,     1,     1,     1,     0,
     1384       1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
     1385       0,     5,     1,     2,     3,     1,     2,     1,     1,     1,
    13661386       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    13671387       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1368        2,     2,     3,     3,     1,     3,     1,     2,     2,     2,
    1369        4,     4,     4,     4,     1,     2,     2,     3,     1,     2,
    1370        2,     1,     2,     2,     3,     1,     2,     2,     1,     1,
    1371        4,     2,     0,     6,     7,     2,     2,     2,     0,     2,
    1372        2,     3,     2,     3,     1,     2,     3,     2,     2,     4,
    1373        0,     1,     2,     2,     1,     0,     1,     2,     2,     5,
    1374        2,     0,     7,     2,     4,     0,     2,     0,     1,     1,
     1388       1,     2,     2,     3,     3,     1,     3,     1,     2,     2,
     1389       2,     4,     4,     4,     4,     1,     2,     2,     3,     1,
     1390       2,     2,     1,     2,     2,     3,     1,     2,     2,     1,
     1391       1,     5,     3,     0,     7,     8,     3,     1,     1,     0,
     1392       2,     2,     3,     3,     4,     1,     2,     3,     2,     1,
     1393       4,     0,     1,     2,     2,     1,     0,     1,     2,     6,
     1394       3,     0,     8,     2,     4,     0,     2,     0,     1,     1,
    13751395       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
    13761396       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
    13771397       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
    13781398       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
    1379        1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
    1380        0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
    1381        2,     2,     1,     2,     2,     5,     5,     7,     6,     1,
    1382        2,     2,     3,     1,     2,     2,     4,     2,     4,     0,
    1383        4,     2,     1,     1,     1,     1,     0,     2,     5,     5,
    1384       13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
    1385        1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
    1386        1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
    1387        1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
    1388        3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
    1389        1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
    1390        3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
    1391        2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1392        3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
    1393        3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
    1394        3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
    1395        2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
    1396        6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
    1397        2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
    1398        2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
    1399        1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
    1400        4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
    1401        6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
    1402        1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
    1403        2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
    1404        2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
    1405        1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
    1406        3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
    1407        2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
    1408        2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
    1409        4,     2,     5,     6,     6,     0,     1,     0,     2
     1399       1,     1,     1,     1,     1,     2,     1,     1,     0,     2,
     1400       2,     1,     4,     0,     1,     2,     3,     4,     2,     2,
     1401       1,     2,     2,     5,     5,     7,     6,     1,     2,     2,
     1402       3,     1,     2,     2,     4,     2,     4,     0,     4,     2,
     1403       1,     1,     1,     1,     0,     2,     5,     5,    13,     1,
     1404       1,     3,     3,     2,     3,     3,     2,     4,     1,     6,
     1405       9,     0,    11,     1,     3,     3,     3,     1,     1,     5,
     1406       2,     5,     0,     1,     1,     3,     0,     1,     1,     1,
     1407       1,     0,     6,     2,     1,     2,     4,     2,     3,     3,
     1408       3,     4,     5,     5,     5,     6,     1,     1,     1,     3,
     1409       0,     5,     0,     1,     1,     2,     6,     1,     3,     0,
     1410       1,     4,     1,     1,     1,     1,     2,     1,     2,     2,
     1411       1,     3,     2,     3,     4,     2,     4,     4,     3,     8,
     1412       3,     2,     1,     2,     6,     8,     3,     2,     3,     3,
     1413       4,     4,     3,     1,     1,     1,     4,     8,     3,     2,
     1414       3,     3,     4,     4,     3,     2,     1,     2,     2,     1,
     1415       3,     2,     3,     4,     2,     4,     4,     3,     6,     8,
     1416       3,     2,     1,     2,     2,     2,     3,     4,     2,     4,
     1417       4,     3,     6,     8,     3,     2,     1,     2,     2,     1,
     1418       1,     2,     3,     4,     2,     4,     6,     8,     1,     2,
     1419       2,     1,     2,     2,     3,     4,     1,     4,     4,     3,
     1420       5,     8,     3,     2,     3,     1,     5,     5,     6,     6,
     1421       1,     2,     2,     1,     2,     2,     3,     4,     1,     4,
     1422       4,     3,     5,     8,     3,     1,     2,     1,     2,     6,
     1423       5,     6,     7,     7,     1,     2,     2,     1,     2,     2,
     1424       3,     4,     1,     4,     4,     3,     8,     3,     1,     1,
     1425       2,     1,     1,     2,     3,     2,     3,     2,     3,     3,
     1426       2,     4,     3,     2,     3,     2,     4,     3,     2,     6,
     1427       6,     6,     7,     1,     2,     1,     1,     1,     2,     3,
     1428       2,     3,     2,     3,     3,     4,     2,     3,     4,     2,
     1429       5,     6,     6,     0,     1,     0,     2
    14101430};
    14111431
     
    14151435static const yytype_uint16 yydefact[] =
    14161436{
    1417      298,   298,   318,   316,   319,   317,   320,   321,   304,   306,
    1418      305,     0,   307,   332,   324,   329,   327,   328,   326,   325,
    1419      330,   331,   337,   338,   336,   333,   334,   335,   554,   554,
    1420      554,     0,     0,     0,   298,   225,   308,   322,   323,     9,
    1421      365,     0,    10,    16,    17,     0,     2,    72,    73,   572,
    1422       11,   298,   532,   530,   252,     3,   460,     3,   265,     0,
    1423        3,     3,     3,   253,     3,     0,     0,     0,   299,   300,
    1424      302,   298,   311,   314,   346,   290,   339,   344,   291,   354,
    1425      292,   361,   358,   368,     0,     0,   369,   293,   479,   483,
    1426        3,     3,     0,     2,   526,   531,   536,   303,     0,     0,
    1427      554,   584,   554,     2,   595,   596,   597,   298,     0,   738,
    1428      739,     0,    14,     0,    15,   298,   274,   275,     0,   299,
    1429      294,   295,   296,   297,   533,   309,   398,   555,   556,   376,
    1430      377,    14,   451,   452,    13,   447,   450,     0,   510,   505,
    1431      496,   451,   452,     0,     0,   535,   226,     0,   298,     0,
    1432        0,     0,     0,     0,     0,     0,     0,   298,   298,     0,
    1433      740,   299,   589,   601,   744,   737,   735,   742,     0,     0,
    1434        0,   259,     2,     0,   539,   445,   446,   444,     0,     0,
    1435        0,     0,   554,     0,   641,   642,     0,     0,   552,   548,
    1436      554,   569,   554,   554,   550,     2,   549,   554,   608,   554,
    1437      554,   611,     0,     0,     0,   298,   298,   316,   366,     2,
    1438      298,   266,   301,   312,   347,   359,   484,     0,     2,     0,
    1439      460,   267,   299,   340,   355,   362,   480,     0,     2,     0,
    1440      315,   341,   348,   349,     0,   356,   360,   363,   367,   452,
    1441      298,   378,   371,   375,     0,   400,   481,   485,     0,     0,
    1442        0,     1,   298,     2,   537,   583,   585,   298,     2,   748,
    1443      299,   751,   552,   552,     0,   299,     0,     0,   277,   554,
    1444      550,     2,   298,     0,     0,   298,   557,     2,   508,     2,
    1445      561,     0,     0,     0,     0,     0,     0,    21,    69,     4,
    1446        8,    19,     5,     6,     7,     0,     0,   298,     2,    74,
    1447       75,    76,    77,    57,    22,    58,    18,    26,    56,    78,
    1448      298,     0,    80,    84,    87,    90,    95,    98,   100,   102,
    1449      104,   106,   108,   112,   502,    23,   458,   501,     0,   456,
    1450      457,     0,   573,   588,   591,   594,   600,   603,   606,     2,
    1451      746,   298,   749,     2,    72,   298,     3,   432,     0,   440,
    1452      299,   298,   311,   339,   291,   354,   361,     3,     3,   414,
    1453      418,   428,   433,   479,   298,   434,   713,   714,   298,   435,
    1454      437,     2,   590,   602,   736,     2,     2,   254,     2,   465,
    1455        0,   463,   462,   461,   146,     2,     2,   256,     2,     2,
    1456      255,     2,   285,     2,   286,     0,   284,     0,     0,     0,
    1457        0,     0,     0,     0,     0,     0,   574,   613,     0,   460,
    1458        2,   568,   577,   667,   570,   571,   540,   298,     2,   607,
    1459      616,   609,   610,     0,   280,   298,   298,   345,   299,     0,
    1460      299,   298,   741,   745,   743,   541,   298,   552,   260,   268,
    1461      313,     0,     2,   542,   298,   506,   342,   343,   287,   357,
    1462      364,     0,   298,     0,   755,   405,     0,   482,   507,   257,
    1463      258,   527,   298,   442,     0,   298,   242,     0,     2,   244,
    1464        0,   299,     0,   262,     2,   263,   282,     0,     0,     2,
    1465      298,   552,   298,   492,   494,   493,   495,     0,     0,   757,
    1466        0,   298,     0,   298,   497,   298,   567,   564,   565,   566,
    1467        0,   559,   562,     0,     0,   298,    64,   298,    78,    59,
    1468      298,    66,   298,   298,    62,    63,     2,   132,     0,     0,
    1469      454,     0,   453,   735,   298,    20,    31,     0,    34,    35,
    1470       40,     2,     0,    40,   118,   119,   120,   121,   122,   123,
    1471      124,   125,   126,   127,   117,   116,     0,    60,    61,     0,
     1437     299,   299,   319,   317,   320,   318,   321,   322,   305,   307,
     1438     306,     0,   308,   333,   325,   330,   328,   329,   327,   326,
     1439     331,   332,   338,   339,   337,   334,   335,   336,   552,   377,
     1440     378,     0,     0,     0,   299,   226,   309,   323,   324,     9,
     1441     366,     0,    10,    16,    17,     0,     2,    72,    73,   570,
     1442      11,   299,   530,   528,   253,     3,   458,     3,   266,     0,
     1443       3,     3,     3,   254,     0,     0,     0,   300,   301,   303,
     1444     299,   312,   315,   347,   291,   340,   345,   292,   355,   293,
     1445     362,   359,   369,   552,   370,   294,   477,   481,     3,     3,
     1446       0,     2,   524,   529,   534,   304,     0,     0,   552,   582,
     1447     552,     2,   593,   594,   595,   299,     0,   736,   737,     0,
     1448      14,     0,    15,   299,   275,   276,     0,   300,   295,   296,
     1449     297,   298,   531,   310,     0,   553,   554,    14,   451,   452,
     1450      13,   447,   450,     0,   508,   503,   494,   451,   452,     0,
     1451       0,   533,   227,     0,   299,     0,     0,     0,     0,     0,
     1452       0,     0,     0,   299,   299,     0,   738,   300,   587,   599,
     1453     742,   735,   733,   740,     0,     0,     0,   260,     2,     0,
     1454     537,   445,   446,   444,     0,     0,     0,     0,   639,   640,
     1455       0,     0,     3,   550,   546,   552,   567,   552,   552,   548,
     1456       2,   547,   552,   606,   552,   552,   609,     0,     0,     0,
     1457     299,   299,   317,   367,     2,   299,   267,   302,   313,   348,
     1458     360,   482,     0,     2,     0,   458,   268,   300,   341,   356,
     1459     363,   478,     0,     2,     0,   316,   342,   349,   350,     0,
     1460     357,   361,   364,   368,     0,   479,   483,     0,     0,     0,
     1461       1,   299,     2,   535,   581,   583,   299,     2,   746,   300,
     1462     749,   550,   550,     0,   300,     0,     0,   278,   552,   548,
     1463       2,   299,     0,     0,   299,     0,   400,   555,     2,   506,
     1464       2,   559,     0,     0,     0,     0,     0,     0,    21,    69,
     1465       4,     8,    19,     5,     6,     7,     0,     0,   299,     2,
     1466      74,    75,    76,    77,    57,    22,    58,    18,    26,    56,
     1467      78,   299,     0,    80,    84,    87,    90,    95,    98,   100,
     1468     102,   104,   106,   108,   112,   500,    23,   454,   456,   499,
     1469       0,   453,   457,     0,   571,   586,   589,   592,   598,   601,
     1470     604,     2,   744,   299,   747,     2,    72,   299,     3,   432,
     1471       0,   440,   300,   299,   312,   340,   292,   355,   362,     3,
     1472       3,   414,   418,   428,   433,   477,   299,   434,   711,   712,
     1473     299,   435,   437,     2,   588,   600,   734,     2,     2,   255,
     1474       2,   463,     0,   461,   460,   459,   146,     2,     2,   257,
     1475       2,     2,   256,     2,   286,     2,   287,     0,     0,     0,
     1476       0,     0,     0,     0,     0,     0,   572,   611,   552,     0,
     1477       0,   458,     2,   566,   575,   665,   568,   569,   538,   299,
     1478       2,   605,   614,   607,   608,     0,   281,   299,   299,   346,
     1479     300,     0,   300,   299,   739,   743,   741,   539,   299,   550,
     1480     261,   269,   314,     0,     2,   540,   299,   504,   343,   344,
     1481     288,   358,   365,   452,   299,   379,   372,   376,   480,   505,
     1482     258,   259,   525,   299,   442,     0,   299,   243,     0,     2,
     1483     245,     0,   300,     0,   263,     2,   264,   283,     0,     0,
     1484       2,   299,   550,   299,   490,   492,   491,   493,     0,     0,
     1485     755,     0,   753,   405,     0,   299,     0,   299,   495,   299,
     1486     565,   562,   563,   564,     0,   557,   560,     0,     0,   299,
     1487      64,   299,    78,    59,   299,    66,   299,   299,    62,    63,
     1488       2,   132,     0,     0,     0,   733,   299,    20,    31,     0,
     1489      34,    35,    40,     2,     0,    40,   118,   119,   120,   121,
     1490     122,   123,   124,   125,   126,   127,   117,   116,     0,    60,
     1491      61,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    14721492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1473        0,     0,     0,     0,     0,     0,     0,     0,     2,   653,
    1474      459,   650,   554,   554,   658,   486,   298,     2,   592,   593,
    1475        0,   604,   605,     0,   747,   750,   298,   298,     0,   715,
    1476      299,   719,   710,   711,   717,     0,     2,     2,   675,   554,
    1477      757,   624,   554,   554,   757,   554,   638,   554,   554,   689,
    1478      441,   672,   554,   554,   680,   687,   298,   436,   299,     0,
    1479        0,   298,   725,   299,   730,   757,   722,   298,   727,   757,
    1480      298,   298,     0,     0,    21,     2,     0,    22,     0,   466,
    1481      755,     0,     0,   472,   246,     0,   298,     0,     0,     0,
    1482      552,   576,   580,   582,   612,   615,   619,   622,   575,   614,
    1483        0,   288,   665,     0,   298,   281,     0,     0,     0,     0,
    1484      279,     2,     0,   264,   543,   298,     0,     0,   298,     2,
    1485      370,   390,   379,     0,     0,   384,   378,   756,     0,     0,
    1486      403,     0,   299,     3,   421,     3,   425,   424,   598,     0,
    1487      538,   298,    72,     3,   298,   440,   299,     3,   434,   435,
    1488        2,     0,     0,     0,   491,   310,   298,     0,   487,   489,
    1489        3,     2,     2,     0,   509,     3,     0,   561,    40,     0,
    1490        0,   227,     0,     0,     0,     0,    41,     0,     0,   298,
    1491       24,     0,    25,     0,   699,   704,   455,   696,   554,   554,
     1493       2,   651,   455,   648,   552,   552,   656,   484,   299,     2,
     1494     590,   591,     2,   602,   603,     0,   745,   748,   299,   299,
     1495       0,   713,   300,   717,   708,   709,   715,     0,     2,     2,
     1496     673,   552,   755,   622,   552,   552,   755,   552,   636,   552,
     1497     552,   687,   441,   670,   552,   552,   678,   685,   299,   436,
     1498     300,     0,     0,   299,   723,   300,   728,   755,   720,   299,
     1499     725,   755,   299,   299,     0,     0,    21,     2,     0,    22,
     1500       0,   464,   753,     0,     0,   470,   247,     0,   299,     0,
     1501       0,     0,   552,   578,   580,   610,   552,   617,   620,   573,
     1502     612,     0,   285,     0,   289,   663,     0,   299,   282,     0,
     1503       0,     0,     0,   280,     2,     0,   265,   541,   299,     0,
     1504       0,   299,     0,   300,     3,   421,     3,   425,   424,   596,
     1505       0,   536,   299,    72,     3,   299,   440,   300,     3,   434,
     1506     435,     2,     0,     0,     0,   489,   311,   299,     0,   485,
     1507     487,   754,     0,     0,   403,     0,     3,     2,     2,     0,
     1508     507,     3,     0,   559,    40,     0,     0,   228,     0,     2,
     1509       0,     0,     0,    41,     0,     0,   299,    24,     0,    25,
    14921510       0,   114,     3,     2,    32,     0,    38,     0,     2,    29,
    14931511       0,   113,    81,    82,    83,    85,    86,    88,    89,    93,
    14941512      94,    91,    92,    96,    97,    99,   101,   103,   105,   107,
    1495        0,     0,   298,     0,     0,     0,   654,   655,   651,   652,
    1496      504,   503,   298,     0,   721,   298,   726,   299,   298,   669,
    1497      712,   668,     2,   298,     0,     0,     0,     0,     0,     0,
    1498        0,     0,   690,     0,   676,   627,   643,   677,     2,   623,
    1499      630,   438,   625,   626,   439,     2,   637,   646,   639,   640,
    1500      673,   674,   688,   716,   720,   718,   757,   272,     2,   752,
    1501        2,   429,   724,   729,   430,     3,   408,     3,     3,     3,
    1502      460,     0,     0,     2,   474,   471,   756,     0,   467,     2,
    1503      470,   473,     0,   298,   247,   269,     3,   276,   278,     0,
    1504      460,     2,   578,   579,     2,   617,   618,     0,   666,   544,
    1505        3,   351,   350,   353,   352,   298,   545,     0,   546,   378,
    1506        0,     0,   298,     0,     0,   699,   388,   391,   395,   554,
    1507      395,   394,   387,   380,   554,   382,   385,   298,   405,   399,
    1508      111,   406,   755,     0,     0,   443,   245,     0,     0,     3,
    1509        2,   675,   436,     0,   534,     0,   757,   758,   496,     0,
    1510      298,   298,   298,     0,   558,   560,     0,     0,   220,     0,
    1511        0,     0,   228,   229,    65,     0,    67,    70,    71,     0,
    1512      133,     0,     0,     0,   700,   701,   697,   698,   465,    79,
    1513      115,   130,     3,   114,     0,    28,    40,     3,     0,    37,
    1514      110,     0,     3,   657,   661,   664,   656,     3,   599,   723,
    1515      728,     2,    72,   298,     3,     3,   299,     0,     3,   629,
    1516      633,   636,   645,   679,   683,   686,   298,     3,   628,   644,
    1517      678,   298,   298,   431,   298,   298,     0,     0,     0,     0,
    1518      261,   111,     0,     3,     3,     0,   468,     0,   464,     0,
    1519        0,   250,   298,     0,     0,   134,     0,     0,     0,     0,
    1520        0,   134,     0,     0,   114,   114,    21,   365,   446,    69,
    1521        0,    22,   135,     0,     3,   136,   137,     2,   148,   138,
    1522      139,   140,   141,   142,   143,   150,     0,   152,     0,     0,
    1523        0,   289,   298,   298,   554,     0,   547,   298,   381,   383,
    1524        0,   397,   700,   392,   396,   393,   386,   390,   373,   404,
    1525        0,   586,     2,   671,   670,     0,   676,     2,   488,   490,
    1526      511,     3,   519,   520,     0,     2,   515,     3,     3,     0,
    1527        0,   563,   227,     0,     0,     0,   227,     0,     0,   703,
    1528      707,   709,   702,   755,   114,     0,     3,    54,     0,    54,
     1513       0,     0,   299,     0,     0,     0,   652,   653,   649,   650,
     1514     502,   501,   299,   299,   719,   299,   724,   300,   299,   667,
     1515     710,   666,     2,   299,     0,     0,     0,     0,     0,     0,
     1516       0,     0,   688,     0,   674,   625,   641,   675,     2,   621,
     1517     628,   438,   623,   624,   439,     2,   635,   644,   637,   638,
     1518     671,   672,   686,   714,   718,   716,   755,   273,     2,   750,
     1519       2,   429,   722,   727,   430,     3,   408,     3,     3,     3,
     1520     458,     0,     0,     2,   472,   469,   754,     0,   465,     2,
     1521     468,   471,     0,   299,   248,   270,     3,   277,   279,     0,
     1522       2,   574,   576,   577,     2,   613,   615,   616,   550,     0,
     1523     664,   542,     3,   352,   351,   354,   353,   299,   543,     0,
     1524     544,     0,   299,   371,   391,   380,     0,   385,   379,     0,
     1525       0,   443,   246,     0,     0,     3,     2,   673,   436,     0,
     1526     532,     0,   755,   756,   494,   405,   399,   111,   406,   753,
     1527       0,   299,   299,   299,     0,   556,   558,     0,     0,   221,
     1528       0,     0,     0,   229,   230,    65,   299,     0,    67,    70,
     1529      71,     0,   133,   463,    79,   115,   130,     3,   114,     0,
     1530      28,    40,     3,     0,    37,   110,     0,     3,   552,   659,
     1531     662,   654,     3,     3,   721,   726,     2,    72,   299,     3,
     1532       3,   300,     0,     3,   552,   631,   634,   552,   552,   681,
     1533     684,   299,     3,   626,   642,   676,   299,   299,   431,   299,
     1534     299,     0,     0,     0,     0,   262,   111,     0,     3,     3,
     1535       0,   466,     0,   462,     0,     0,   251,   299,     0,     0,
     1536     134,     0,     0,     0,     0,     0,   134,     0,     0,   114,
     1537     114,    21,   366,   446,    69,     0,    22,   135,     0,     3,
     1538     136,   137,     2,   148,   138,   139,   140,   141,   142,   143,
     1539     150,     0,   152,     0,     0,     0,   299,   299,   458,   552,
     1540       0,   545,   379,   391,     0,     0,     0,   697,     0,   389,
     1541     392,   396,   552,   396,   702,   395,   694,   552,   552,   388,
     1542     381,   386,   299,   584,     2,   669,   668,     0,   674,     2,
     1543     486,   488,   404,     0,   509,     3,   517,   518,     0,     2,
     1544     513,     3,     3,     0,     0,   561,   228,     0,     0,     0,
     1545     228,     0,     0,   753,   114,     0,     3,    54,     0,    54,
    15291546      54,     3,    42,    44,    39,     0,     3,   109,     0,     2,
    1530      659,   660,     0,   298,     0,     0,     0,     3,   645,     0,
    1531        2,   631,   632,     2,   647,     2,   681,   682,     0,     0,
    1532       72,     0,     3,     3,     3,     3,   416,   415,   419,   754,
    1533        2,     2,   753,     0,     0,     0,     0,     3,   469,     3,
    1534        0,   248,   151,     3,   299,   298,     0,     0,     0,     0,
    1535        2,   196,     0,   194,     0,     0,     0,     0,     0,     0,
    1536        0,     0,     0,   156,   153,   298,     0,   554,     0,   271,
    1537      283,     3,     3,   553,   620,   374,   389,   402,   298,   270,
    1538      298,     0,   522,   499,   298,     0,     0,   498,   513,     0,
    1539        0,     0,   221,     0,   230,    68,     2,   705,   706,     0,
    1540      131,   128,     0,    51,     2,    45,    52,    53,     0,     0,
    1541        0,     0,    27,     0,   662,   298,   587,   731,   732,   733,
    1542        0,   684,   298,   298,   298,     3,     3,     0,   692,     0,
    1543        0,     0,     0,   298,   298,     3,   551,   475,   476,     0,
    1544      251,   299,     0,     0,     0,     0,   298,   197,   195,     0,
    1545      192,   198,     0,     0,     0,     0,   202,   205,   203,   199,
    1546        0,   200,    40,   149,   147,   134,   249,     0,     0,   423,
    1547      427,   426,     0,   516,     2,   517,     2,   518,   512,   298,
    1548      233,     0,   231,     0,   233,   298,    36,   129,    55,     0,
    1549       43,    33,     2,    49,     2,    47,    30,     3,   734,     3,
    1550        3,     3,     0,     0,   691,   693,   634,   648,   273,     2,
    1551      413,     3,   412,     0,   478,   134,     0,     0,   134,     3,
    1552        0,   134,   193,     0,     2,     2,   214,   204,     0,     0,
    1553        0,     0,   145,   581,   621,     2,     0,     0,     2,   234,
    1554        0,     0,   222,     0,     3,     3,     0,     0,     0,     0,
    1555        0,     0,   694,   695,   298,     0,   477,   157,     0,     0,
    1556        2,   170,   134,   159,     0,   187,     0,   134,     0,     2,
    1557      161,     0,     2,     0,     2,     2,     2,   201,    37,   298,
    1558      521,   523,   514,     0,     0,     0,     0,     0,     0,     3,
    1559        3,   663,   635,   649,   685,   417,   134,   163,   166,     0,
    1560      165,   169,     3,   172,   171,     0,   134,   189,   134,     3,
    1561        0,   298,     0,   298,     0,     2,     0,     2,   144,     2,
    1562      235,   236,     0,   232,   223,   708,    46,     0,     0,   158,
    1563        0,     0,   168,   238,   173,     2,   240,   188,     0,   191,
    1564      177,   206,     3,   215,   219,   208,     3,     0,   298,     0,
    1565      298,     0,     0,     0,    50,    48,   164,   167,   134,     0,
    1566      174,   298,   134,   134,     0,   178,     0,     0,   699,   216,
    1567      217,   218,     0,   207,     3,   209,     3,   298,   224,   237,
    1568      154,   175,   160,   134,   241,   190,   185,   183,   179,   162,
    1569      134,     0,   700,     0,     0,     0,     0,   155,   176,   186,
    1570      180,   184,   183,   181,     3,     3,     0,     0,   500,   182,
    1571      210,   212,     3,     3,   211,   213
     1547     655,   657,   658,     0,     0,   299,     0,     0,     0,     3,
     1548     552,     0,     2,   627,   629,   630,     2,   643,   645,     2,
     1549     677,   679,   680,     0,     0,    72,     0,     3,     3,     3,
     1550       3,   416,   415,   419,   752,     2,     2,   751,     0,     0,
     1551       0,     0,     3,   467,     3,     0,   249,   151,   153,     0,
     1552       0,     0,     0,     2,   197,     0,   195,     0,     0,     0,
     1553       0,     0,     0,     0,     0,     0,   157,   154,   299,     0,
     1554     552,     0,   272,   284,     3,     3,   290,   551,   618,   299,
     1555       0,   382,     0,     0,     0,     0,   398,   698,   699,   552,
     1556     383,   393,   397,   394,   695,   696,   387,   374,   299,   271,
     1557     299,   402,     0,   520,   497,   299,     0,     0,   496,   511,
     1558       0,     0,     0,   222,     0,   231,    68,     0,   131,   128,
     1559       0,    51,     2,    45,    52,    53,     0,     0,     0,     0,
     1560      27,     0,   660,   299,   585,   597,   729,   730,   731,     0,
     1561     682,   299,   299,   299,     3,     3,     0,   690,     0,     0,
     1562       0,     0,   299,   299,     3,   549,   473,   474,     0,   252,
     1563       0,     0,     0,     0,   299,   198,   196,     0,   193,   199,
     1564       0,     0,     0,     0,   203,   206,   204,   200,     0,   201,
     1565      40,   149,   147,   134,   250,     0,     0,   375,   384,   552,
     1566     705,   707,   700,   391,   423,   427,   426,     0,   514,     2,
     1567     515,     2,   516,   510,   299,   234,     0,   232,     0,   234,
     1568      36,   129,    55,     0,    43,    33,     2,    49,     2,    47,
     1569      30,     3,   732,     3,     3,     3,     0,     0,   689,   691,
     1570     632,   646,   274,     2,   413,     3,   412,     0,   476,   134,
     1571       0,     0,   134,     3,     0,   134,     3,   300,   299,   194,
     1572       0,     2,     2,   215,   205,     0,     0,     0,     0,   145,
     1573     579,   619,     2,   701,   703,   704,   390,     2,     0,     0,
     1574       2,   235,     0,     0,   223,     0,     3,     0,     0,     0,
     1575       0,     0,     0,   692,   693,   299,     0,   475,   158,     0,
     1576       0,     2,   171,   134,   160,     0,   188,     0,   134,     0,
     1577     300,     2,   162,     0,     2,     0,     2,     2,     2,   202,
     1578      37,   299,   299,   519,   521,   512,     0,     0,     0,     0,
     1579       0,     3,     3,   661,   633,   647,   683,   417,   134,   164,
     1580     167,     0,   166,   170,     3,   173,   172,     0,   134,   190,
     1581     134,     3,     0,   299,     0,   299,     0,     2,     0,     2,
     1582     144,     3,     2,   236,   237,     0,   233,   224,    46,     0,
     1583       0,   159,     0,     0,   169,   239,   174,     2,   241,   189,
     1584       0,   192,   178,   207,     3,   216,   220,   209,     3,     0,
     1585     299,     0,   299,     0,     0,     0,     0,    50,    48,   165,
     1586     168,   134,     0,   175,   299,   134,   134,     0,   179,     0,
     1587       0,   697,   217,   218,   219,     0,   208,     3,   210,     3,
     1588     706,   299,   225,   238,   155,   176,   161,   134,   242,   191,
     1589     186,   184,   180,   163,   134,     0,   698,     0,     0,     0,
     1590       0,   156,   177,   187,   181,   185,   184,   182,     3,     3,
     1591       0,     0,   498,   183,   211,   213,     3,     3,   212,   214
    15721592};
    15731593
     
    15751595static const yytype_int16 yydefgoto[] =
    15761596{
    1577       -1,   803,   466,   303,    49,   135,   136,   304,   305,   306,
    1578      307,   308,   755,   756,  1121,  1122,  1123,  1233,   309,   380,
    1579      311,   312,   313,   314,   315,   316,   317,   318,   319,   320,
    1580      321,   322,   323,  1012,   517,   961,   546,   325,   962,  1042,
    1581     1043,  1510,  1045,  1046,  1047,  1048,  1511,  1049,  1050,  1428,
    1582     1429,  1391,  1392,  1393,  1489,  1490,  1494,  1495,  1530,  1531,
    1583     1051,  1350,  1052,  1053,  1286,  1287,  1288,  1472,  1054,   147,
    1584      941,   942,   943,  1370,  1452,  1464,  1465,   467,   468,   863,
    1585      864,  1020,    53,    54,    55,    56,    57,   347,   159,    60,
    1586       61,    62,    63,    64,   349,    66,    67,   265,    69,    70,
    1587      275,   351,   352,    73,    74,    75,   120,    77,   205,   354,
    1588      121,    80,   122,    82,    83,   453,    84,   452,   682,   683,
    1589      684,   896,  1073,   897,    85,    86,   456,   454,   690,   845,
    1590      846,   357,   358,   693,   694,   695,   359,   360,   361,   362,
    1591      464,  1056,   137,   138,   521,   327,   171,   639,   640,   641,
    1592      642,   643,    87,   123,    89,   488,   489,   928,   490,   278,
    1593      494,   328,    90,   139,   140,    91,  1309,  1095,  1096,  1097,
    1594     1098,    92,    93,   711,    94,   274,    95,    96,   188,  1014,
    1595      673,   411,   127,    97,   500,   501,   502,   189,   269,   191,
    1596      192,   193,   270,   100,   101,   102,   103,   104,   105,   106,
    1597      196,   197,   198,   199,   200,   815,   601,   602,   603,   604,
    1598      201,   606,   607,   608,   570,   571,   572,   573,   745,   107,
    1599      610,   611,   612,   613,   614,   615,   955,   747,   748,   749,
    1600      591,   365,   366,   367,   368,   329,   165,   109,   110,   111,
    1601      370,   688,   718
     1597      -1,   783,   457,   294,    49,   131,   132,   295,   296,   297,
     1598     298,   299,   735,   736,  1091,  1092,  1093,  1221,   300,   372,
     1599     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
     1600     312,   313,   314,   977,   511,   926,   538,   316,   927,  1007,
     1601    1008,  1514,  1010,  1011,  1012,  1013,  1515,  1014,  1015,  1430,
     1602    1431,  1392,  1393,  1394,  1492,  1493,  1497,  1498,  1534,  1535,
     1603    1016,  1344,  1017,  1018,  1274,  1275,  1276,  1474,  1019,   143,
     1604     912,   913,   914,  1372,  1455,  1466,  1467,   458,   459,   843,
     1605     844,   985,    53,    54,    55,    56,    57,   339,   155,    60,
     1606      61,    62,    63,   182,   341,    65,    66,   254,    68,    69,
     1607     264,   343,   344,    72,    73,    74,   118,    76,   200,   346,
     1608     119,    79,   120,    81,    82,   672,    83,   671,   875,   876,
     1609    1038,  1039,  1191,  1040,    84,   484,   482,   704,   825,   826,
     1610     349,   350,   674,   675,   676,   351,   352,   677,   354,   455,
     1611    1021,   133,   134,   318,   319,   167,   631,   632,   633,   634,
     1612     635,    85,   121,    87,   479,   480,   894,   481,   269,   488,
     1613     320,    88,   135,   136,    89,  1304,  1069,  1070,  1071,  1072,
     1614      90,    91,   692,    92,   263,    93,    94,   183,   979,   666,
     1615     403,   125,    95,   494,   495,   496,   184,   258,   186,   187,
     1616     188,   259,    98,    99,   100,   101,   102,   103,   104,   191,
     1617     192,   193,   194,   195,   795,   593,   594,   595,   596,   196,
     1618     598,   599,   600,   562,   563,   564,   565,  1044,   105,   602,
     1619     603,   604,   605,   606,   607,  1045,  1046,  1047,  1048,   583,
     1620     357,   358,   359,   360,   321,   161,   107,   108,   109,   362,
     1621     702,   699
    16021622};
    16031623
    16041624/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    16051625   STATE-NUM.  */
    1606 #define YYPACT_NINF -1328
     1626#define YYPACT_NINF -1276
    16071627static const yytype_int16 yypact[] =
    16081628{
    1609     7094,  5192, -1328,    47, -1328, -1328, -1328, -1328, -1328, -1328,
    1610    -1328,    41, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1611    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,   209,   209,
    1612      209,  1263,  1027,   118,  7336,   312, -1328, -1328, -1328, -1328,
    1613    -1328,   248, -1328, -1328, -1328,  1020,   187, -1328, -1328, -1328,
    1614    -1328,  8977, -1328, -1328, -1328, -1328,   126,   266, -1328,  1653,
    1615    -1328, -1328, -1328, -1328,   285,  1985,   410,    77,  7457, -1328,
    1616    -1328,  8977,   983, -1328, -1328,   602,   416,  4937,   741,  1118,
    1617      602,  1546, -1328, -1328,  1203,   473, -1328,   602,  1860, -1328,
    1618      325, -1328,   471,   476, -1328, -1328, -1328, -1328,   367,   266,
    1619      209, -1328,   209, -1328, -1328, -1328, -1328,  7962,  1653, -1328,
    1620    -1328,  1653, -1328,   375, -1328,  8082, -1328, -1328,  2291,  9246,
    1621    -1328,   847,   847,   847, -1328, -1328, -1328,   209, -1328, -1328,
    1622    -1328,   408,   426,   461, -1328, -1328, -1328,   472, -1328, -1328,
    1623    -1328, -1328, -1328,   508,   512, -1328, -1328,   103,  8623,  1598,
    1624      500,   443,   518,   536,   544,   548,   556,  9286,  6718,   568,
    1625    -1328,  9017, -1328, -1328, -1328, -1328,   575, -1328,   190,  3423,
    1626     3423, -1328,   577,   294, -1328, -1328, -1328, -1328,   578,   352,
    1627      387,   393,   209,   564, -1328, -1328,  1985,  3980,   641, -1328,
    1628       84, -1328,   209,   209,   266, -1328, -1328,   214, -1328,   209,
    1629      209, -1328,  4262,   597,   616,   847,  6752, -1328, -1328, -1328,
    1630     8977, -1328, -1328,   602, -1328, -1328, -1328,   266, -1328,  1653,
    1631      126, -1328,  7808, -1328,   847,   847,   847,   266, -1328,  1263,
    1632    -1328,  6380, -1328, -1328,   600,   847, -1328,   847, -1328,   248,
    1633     8623, -1328,   625, -1328,  1027,   697,   847, -1328,  1263,   667,
    1634      675, -1328,  7336,   663, -1328, -1328, -1328,  3551, -1328, -1328,
    1635     8539, -1328,   641,   128,  5841,  9246,  2291,  4262, -1328,   236,
    1636    -1328, -1328,  8082,  1653,   700, 10420, -1328, -1328,   221, -1328,
    1637      493,   710,   742,  6026,   753,  5841,  9865, -1328,   766, -1328,
    1638    -1328, -1328, -1328, -1328, -1328,  9924,  9924,  8387,   187, -1328,
    1639    -1328, -1328, -1328, -1328, -1328, -1328,   808, -1328,  2340,  2114,
    1640     8623,  5841, -1328,   633,    22,   547,   447,   693,   771,   758,
    1641      785,   800,    32, -1328, -1328, -1328,   572, -1328,   268, -1328,
    1642    -1328,  1598, -1328, -1328,   329,   827, -1328,   417,   827, -1328,
    1643    -1328,  7962, -1328,   807,   834,  8741, -1328, -1328,  1437,  2015,
    1644     8168,  6752,   602, -1328,   602,   847,   847, -1328, -1328, -1328,
    1645    -1328, -1328, -1328,   847,  7962,  1653, -1328, -1328,  9286,  1675,
    1646    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,  4621,
    1647     5841, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1648    -1328, -1328, -1328, -1328, -1328,  2291, -1328,   818,   832,   839,
    1649      851,   857,   865,   870,   881,  3980, -1328, -1328,   888,   126,
    1650      903, -1328, -1328,   889, -1328, -1328, -1328,  3551, -1328, -1328,
    1651    -1328, -1328, -1328,  4262, -1328,  8623,  8623, -1328,   847,  2291,
    1652     6876,  8243, -1328, -1328, -1328, -1328,  3551,   128, -1328, -1328,
    1653      602,   266, -1328, -1328,  3551, -1328,  6628, -1328, -1328,   847,
    1654      847,   552,  5831,   902,   906,   897,   905,   847, -1328, -1328,
    1655    -1328, -1328,  9444, -1328,   569, 10160, -1328,   266,   913, -1328,
    1656     2291, 10200,  9983, -1328, -1328, -1328, -1328,   896,  4262, -1328,
    1657     8243,   641,  7215, -1328, -1328, -1328, -1328,  1315,   613,   907,
    1658     1027, 10420,  1475,  8082, -1328, 10420, -1328, -1328, -1328, -1328,
    1659      654, -1328,   931,   742,   246,  8387, -1328,  9319, -1328, -1328,
    1660     8387, -1328,  8505,  8387, -1328, -1328,   187, -1328,   666,   933,
    1661      695,   936, -1328, -1328,  6470, -1328, -1328,   345, -1328, -1328,
    1662     5841, -1328,   431,  5841, -1328, -1328, -1328, -1328, -1328, -1328,
    1663    -1328, -1328, -1328, -1328, -1328, -1328,  5841, -1328, -1328,  5841,
    1664     5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,  5841,
    1665     5841,  5841,  5841,  5841,  5841,  5841,  5841,  4496,   572,   830,
    1666    -1328, -1328,   209,   209, -1328, -1328,  8623, -1328, -1328,   889,
    1667      663, -1328,   889, 10042, -1328, -1328,  9286,  6470,   929, -1328,
    1668     9246, -1328, -1328,   575, -1328,   937,   947,   939,  3082,   257,
    1669      907, -1328,   209,   209,   907,   260, -1328,   209,   209,   889,
    1670    -1328, -1328,   209,   209, -1328,   827,  9404,  1653, 10351,   176,
    1671      238,  9404, -1328,  8539, -1328,   907, -1328,  7962, -1328,     8,
    1672     5680,  5680,  1653,  5204,   927, -1328,   546,   943,   945, -1328,
    1673      950,  3423,   381, -1328,  1033,  1653,  5680,   663,  2291,   663,
    1674      641,   477,   827, -1328, -1328,   604,   827, -1328, -1328, -1328,
    1675      742, -1328,   827,   266,  9444, -1328,   678,   967,   680,   968,
    1676    -1328,   807,   266, -1328, -1328,  3551,   266,   965,  9319,   187,
    1677    -1328,  1893, -1328,   436,   439,  1027, -1328,  1027,   966,  5841,
    1678    -1328,  1027, 10351, -1328, -1328,   972, -1328, -1328, -1328,   663,
    1679    -1328, 10276,   834, -1328,  5680,   707,  8168, -1328, -1328,   575,
    1680      973,   976,  1315,  1837, -1328, -1328, 10420,  5841, -1328, -1328,
    1681      979, -1328, -1328,   993, -1328,   979,   982,   493,  5841,   977,
    1682      974,    26,  1002,   998,  1007,  1008, -1328,  1011,  1012,  6470,
    1683    -1328,  5841, -1328,   695,  1078, -1328, -1328, -1328,   209,   209,
    1684     5376,  5841,  1015, -1328, -1328,   718, -1328,  5841, -1328, -1328,
    1685      733, -1328, -1328, -1328, -1328,   633,   633,    22,    22,   547,
    1686      547,   547,   547,   447,   447,   693,   771,   758,   785,   800,
    1687     5841,   106,  9444,  1023,  1035,  1036,   830, -1328, -1328, -1328,
    1688    -1328, -1328,  9444,   730, -1328,  7962, -1328,  6842,  8859, -1328,
    1689    -1328, -1328,   947,  9444,   952,  1039,  1040,  1041,  1042,  1044,
    1690     1046,  1047, -1328,  4747,  3082, -1328, -1328, -1328, -1328, -1328,
    1691    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1692    -1328, -1328,   889, -1328, -1328, -1328,   907, -1328, -1328, -1328,
    1693    -1328, -1328, -1328, -1328, -1328, -1328, -1328,  1053,  1054, -1328,
    1694      126,  1015,  5204, -1328, -1328, -1328,  4621,  1051, -1328, -1328,
    1695    -1328, -1328,  1027,  6163,  1143, -1328, -1328, -1328, -1328,  1049,
    1696      126, -1328, -1328,   889, -1328, -1328,   889,  1060,   889, -1328,
    1697    -1328, -1328, -1328, -1328, -1328,  6718, -1328,   266, -1328, -1328,
    1698      444,   451,  6718,  2036,  5841,  3709, -1328, -1328,  1045,    40,
    1699     1045, -1328,  1027, -1328,   209, -1328, -1328,  9131,   897, -1328,
    1700    -1328, -1328,   906,  1061,  1056, -1328, -1328,  1069,  1072, -1328,
    1701      707,  1770, -1328,   275, -1328,  1837,   907, -1328, -1328,  1076,
    1702    10420,  8082,  8623,  1081, -1328, -1328,   734,  1058, -1328,  5841,
    1703     1084,   279,  1082, -1328,  1080,   663,  1080, -1328, -1328,  1080,
    1704    -1328,  1087,  1089,  1091,  1078, -1328, -1328, -1328,  4621, -1328,
    1705    -1328, -1328,  1088,  5841,   919, -1328,  5841, -1328,   919, -1328,
    1706    -1328,  5841, -1328,   611,   827, -1328, -1328, -1328, -1328, -1328,
    1707    -1328, -1328,   834,  8741, -1328, -1328,  6966,  1093, -1328,   640,
    1708      827, -1328,   652,   657,   827, -1328,   847,  4999, -1328, -1328,
    1709    -1328,  9444,  9444, -1328,  8243,  8243,  1096,  1094,  1095,  1099,
    1710    -1328,   347,    89,  1015, -1328,   919, -1328,  3423, -1328,  5841,
    1711      464, -1328,  6346,  1103,  1105,  9806,  1107,  1112,   627,   759,
    1712     1566,  5841,  1115,   266,  5841,  5841,  1092,  1104,   248,   228,
    1713      302,  1108,  1123,  1097, -1328, -1328, -1328,  1128, -1328, -1328,
    1714    -1328, -1328, -1328, -1328, -1328, -1328,  1119, -1328,  1027,  1138,
    1715     5841, -1328,  9444,  9444,   209,  1140, -1328,  9171, -1328, -1328,
    1716      806, -1328,  3709, -1328, -1328, -1328, -1328,  1893, -1328, -1328,
    1717     1136, -1328, -1328, -1328, -1328,  1144,  1770, -1328, -1328,  1127,
    1718    -1328,   979, -1328, -1328,  2291,  1145, -1328, -1328, -1328,   749,
    1719     1149, -1328,    26,  1146,  5841,  1132,    26,    26,  1157,   672,
    1720      827, -1328, -1328,   950,  5841,  1159,  1088, -1328,  1148, -1328,
    1721    -1328,  1158, -1328,    81, -1328,  1166,  1158, -1328,  1169, -1328,
    1722    -1328,   889,  1171,  6594,  1173,  1184,  1185, -1328, -1328,  1189,
    1723    -1328, -1328,   889, -1328, -1328, -1328, -1328,   889,  5841,  5841,
    1724      834,  1188, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1725    -1328, -1328, -1328,  5841,  5841,  1190,  1194,  1158, -1328, -1328,
    1726     1027, -1328, -1328, -1328,  7733,  8082,  5841,  5841,  1274,  5841,
    1727    -1328, -1328,  1191, -1328,  1192,  5841,  1199,  1206,  5841,  1013,
    1728     1207,    37,  2395, -1328, -1328,  6163,  1211,   209,   482, -1328,
    1729    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,  9622, -1328,
    1730     8243,  1231, -1328, -1328,  8082,   492,   506, -1328,  1227,  1219,
    1731      742,  1242, -1328,   293, -1328, -1328, -1328, -1328,   889,  1238,
    1732    -1328, -1328,  1243,  1273, -1328, -1328,  1273,  1273,   919,  1245,
    1733     1200,  1221, -1328,  1247, -1328,  9444, -1328, -1328, -1328, -1328,
    1734     1251, -1328,  9444,  9444,  9444, -1328, -1328,  1252, -1328,  1254,
    1735     1257,  1259,   446,  7928,  8048, -1328, -1328, -1328, -1328,  1258,
    1736    -1328,  8318,   754,   762,  1267,   767,  3351, -1328, -1328,   507,
    1737    -1328, -1328,   782,  1269,  1270,   266,  1323,   868, -1328, -1328,
    1738     5841, -1328,  5841, -1328, -1328,  9806, -1328,  1272,  1280, -1328,
    1739    -1328, -1328,  1277, -1328, -1328, -1328, -1328, -1328, -1328,  8082,
    1740      742,  1284, -1328,  1264,   742,  9444, -1328, -1328, -1328,   919,
    1741    -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328, -1328,
    1742    -1328, -1328,  1285,  1288, -1328, -1328, -1328, -1328, -1328, -1328,
    1743    -1328,  1292, -1328,  1294, -1328,  9806,   292,  5841,  9806, -1328,
    1744     1297,  5841, -1328,   298,  1308,  1314, -1328, -1328,  1302,  1303,
    1745     1282,   817, -1328, -1328, -1328, -1328,  1653,  2291,  1300, -1328,
    1746      139,  5841, -1328,   792, -1328,  1158,   919,   919,  1310,  1312,
    1747     1313,  1317, -1328, -1328,  8243,  1309, -1328,  1388,  5841,  1299,
    1748    -1328, -1328,  9716, -1328,   793, -1328,  1298,  9806,  1304, -1328,
    1749    -1328,  1325, -1328,  1327, -1328,  1342,  1344, -1328,  1316,  8082,
    1750    -1328, -1328, -1328,   742,   663,  1334,  1318,  1337,  1343,  1158,
    1751     1158, -1328, -1328, -1328, -1328, -1328,  9806,   149, -1328,   165,
    1752    -1328, -1328,  7578, -1328, -1328,  1322,  5841, -1328,  5841,  7578,
    1753      266,  9319,   266,  9319,  1351, -1328,  1352, -1328, -1328,  1348,
    1754    -1328, -1328,   794, -1328, -1328, -1328, -1328,  1347,  1355, -1328,
    1755     5841,  5841, -1328, -1328,   893,   117, -1328, -1328,  1338, -1328,
    1756      893, -1328, -1328,  2215,   663, -1328, -1328,   266,  9319,   266,
    1757     9319,  1362,  1341,   663, -1328, -1328, -1328, -1328,  9716,  1365,
    1758      893,  7657,  5841,  9626,  1366,   893,  1367,  2215,  3729, -1328,
    1759    -1328, -1328,  1372, -1328, -1328, -1328, -1328,  8623, -1328, -1328,
    1760    -1328,  9488, -1328,  9716, -1328, -1328,  1353,  5938, -1328, -1328,
    1761     9626,   266,  3729,   266,  1376,  1377,   795, -1328,  9488, -1328,
    1762    -1328, -1328,  5938, -1328, -1328, -1328,   266,   266, -1328, -1328,
    1763    -1328, -1328, -1328, -1328, -1328, -1328
     1629    7275,  9192, -1276,    31, -1276, -1276, -1276, -1276, -1276, -1276,
     1630   -1276,    12, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1631   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,    99, -1276,
     1632   -1276,  1603,   681,    89,  7517,   210, -1276, -1276, -1276, -1276,
     1633   -1276,   116, -1276, -1276, -1276,   429,   144, -1276, -1276, -1276,
     1634   -1276,  4252, -1276, -1276, -1276, -1276,    32,   152, -1276,  1816,
     1635   -1276, -1276, -1276, -1276,  1962,   287,    93,  5921, -1276, -1276,
     1636    4252,  1910, -1276, -1276,  1592,   306,  3283,   540,   736,  1592,
     1637    1249, -1276, -1276,    99, -1276,  1592,  1618, -1276,   235, -1276,
     1638     384,   511, -1276, -1276, -1276, -1276,   414,   152,    99, -1276,
     1639      99, -1276, -1276, -1276, -1276,  8217,  1816, -1276, -1276,  1816,
     1640   -1276,   362, -1276,  9392, -1276, -1276,  2239,  9432, -1276,  1003,
     1641    1003,  1003, -1276, -1276,  1463,    99, -1276,   471,   504,   530,
     1642   -1276, -1276, -1276,   542, -1276, -1276, -1276, -1276, -1276,   556,
     1643     565, -1276, -1276,    28,  8758,  2572,   309,   566,   591,   602,
     1644     611,   630,   646,  9465,  6899,   621, -1276,  9152, -1276, -1276,
     1645   -1276, -1276,   649, -1276,   146,  5718,  5718, -1276,   655,   206,
     1646   -1276, -1276, -1276, -1276,   679,   277,   321,   326, -1276, -1276,
     1647    1962,  2534,   677,   743, -1276,    23, -1276,    99,    99,   152,
     1648   -1276, -1276,    55, -1276,    99,    99, -1276,  3049,   700,   703,
     1649    1003,  6685, -1276, -1276, -1276,  4252, -1276, -1276,  1592, -1276,
     1650   -1276, -1276,   152, -1276,  1816,    32, -1276,  7868, -1276,  1003,
     1651    1003,  1003,   152, -1276,  1603, -1276,  3585, -1276, -1276,   684,
     1652    1003, -1276,  1003, -1276,   652,  1003, -1276,  1603,   709,   712,
     1653   -1276,  7517,   615, -1276, -1276, -1276,  9119, -1276, -1276,  8674,
     1654   -1276,   743,    35,  3690,  9432,  2239,  3049, -1276,    59, -1276,
     1655   -1276,  9392,  1816,   718, 10847,   681,   733, -1276, -1276,   582,
     1656   -1276,   359,   716,   770, 10233,   748,  3690, 10292, -1276,   750,
     1657   -1276, -1276, -1276, -1276, -1276, -1276, 10351, 10351,  8522,   144,
     1658   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   786, -1276,  1681,
     1659    2360,  8758,  3690, -1276,   222,   671,   732,   427,   759,   755,
     1660     741,   747,   784,    38, -1276, -1276, -1276,   667, -1276, -1276,
     1661     145, -1276, -1276,  2572, -1276, -1276,   415,   774, -1276,   509,
     1662     774, -1276, -1276,  8217, -1276,   779,   788,  8876, -1276, -1276,
     1663     810,  1492,  8303,  6685,  1592, -1276,  1592,  1003,  1003, -1276,
     1664   -1276, -1276, -1276, -1276, -1276,  1003,  8217,  1816, -1276, -1276,
     1665    9465,  1201, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1666   -1276,  4829,  3690, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1667   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   787,   794,   804,
     1668     807,   858,   830,   835,   845,  2534, -1276, -1276,    99,   827,
     1669     811,    32,   872, -1276, -1276,   876, -1276, -1276, -1276,  9119,
     1670   -1276, -1276, -1276, -1276, -1276,  3049, -1276,  8758,  8758, -1276,
     1671    1003,  2239,  6809,  8378, -1276, -1276, -1276, -1276,  9119,    35,
     1672   -1276, -1276,  1592,   152, -1276, -1276,  9119, -1276,  4366, -1276,
     1673   -1276,  1003,  1003,   116,  8758, -1276,   877, -1276,  1003, -1276,
     1674   -1276, -1276, -1276,  9703, -1276,   336, 10587, -1276,   152,   879,
     1675   -1276,  2239, 10627, 10410, -1276, -1276, -1276, -1276,   862,  3049,
     1676   -1276,  8378,   743,  7396, -1276, -1276, -1276, -1276,   620,   381,
     1677     869,   681,   890,   882,   911, 10847,  1023,  9392, -1276, 10847,
     1678   -1276, -1276, -1276, -1276,   405, -1276,   917,   770,   259,  8522,
     1679   -1276,  9550, -1276, -1276,  8522, -1276,  8640,  8522, -1276, -1276,
     1680     144, -1276,   435,   919,   921, -1276,  6651, -1276, -1276,   329,
     1681   -1276, -1276,  3690, -1276,   450,  3690, -1276, -1276, -1276, -1276,
     1682   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  3690, -1276,
     1683   -1276,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,
     1684    3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3690,  3309,
     1685     667,  1689, -1276, -1276,    99,    99, -1276, -1276,  8758, -1276,
     1686   -1276,   876, -1276, -1276,   876, 10469, -1276, -1276,  9465,  6651,
     1687     923, -1276,  9432, -1276, -1276,   649, -1276,   927,  1763,   929,
     1688    2234,    63,   869, -1276,    99,    99,   869,    76, -1276,    99,
     1689      99,   876, -1276, -1276,    99,    99, -1276,   774,  9583,  1816,
     1690   10778,   446,   465,  9583, -1276,  8674, -1276,   869, -1276,  8217,
     1691   -1276,   294,  7988,  7988,  1816, 10174,   903, -1276,  1168,   913,
     1692     916, -1276,   932,  5718,   550, -1276,  1024,  1816,  7988,   615,
     1693    2239,   615,    79,   774, -1276, -1276,    80,   774, -1276, -1276,
     1694   -1276,  2239, -1276,   770, -1276,   774,   152,  9703, -1276,   498,
     1695     942,   515,   944, -1276,   779,   152, -1276, -1276,  9119,   152,
     1696     563,  5344,   941, 10778, -1276, -1276,   948, -1276, -1276, -1276,
     1697     615, -1276, 10703,   788, -1276,  7988,   693,  8303, -1276, -1276,
     1698     649,   945,   949,   620,  2900, -1276, -1276, 10847,  3690, -1276,
     1699   -1276,   681,   964,  3690, -1276,   681,   943, -1276, -1276,   971,
     1700   -1276,   943,   976,   359,  3690,   957,   956,    62,   980,   144,
     1701     975,   982,   988, -1276,   992,   994,  6651, -1276,  3690, -1276,
     1702    6072,  3690,   993, -1276, -1276,   595, -1276,  3690, -1276, -1276,
     1703     773, -1276, -1276, -1276, -1276,   222,   222,   671,   671,   732,
     1704     732,   732,   732,   427,   427,   759,   755,   741,   747,   784,
     1705    3690,   195,  9703,  1002,  1005,  1010,  1689, -1276, -1276, -1276,
     1706   -1276, -1276,  9703,  9703, -1276,  8217, -1276,  7023,  8994, -1276,
     1707   -1276, -1276,  1763,  9703,   887,  1011,  1012,  1015,  1017,  1018,
     1708    1021,  1029, -1276,  4594,  2234, -1276, -1276, -1276, -1276, -1276,
     1709   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1710   -1276, -1276,   876, -1276, -1276, -1276,   869, -1276, -1276, -1276,
     1711   -1276, -1276, -1276, -1276, -1276, -1276, -1276,  1031,  1034, -1276,
     1712      32,   993, 10174, -1276, -1276, -1276,  4829,   996, -1276, -1276,
     1713   -1276, -1276,   681,  6383,  1087, -1276, -1276, -1276, -1276,  1014,
     1714   -1276, -1276, -1276,   876, -1276, -1276, -1276,   876,   743,  1037,
     1715     876, -1276, -1276, -1276, -1276, -1276, -1276,  6899, -1276,   152,
     1716   -1276,  1020,  9550, -1276,  1883, -1276,   395,   681, -1276,  1038,
     1717    1036, -1276, -1276,  1042,  1045, -1276,   693,  1694, -1276,   494,
     1718   -1276,  2900,   869, -1276, -1276,   882, -1276, -1276, -1276,   890,
     1719    1048, 10847,  9392,  8758,  1049, -1276, -1276,   599,  1032, -1276,
     1720    3690,  1052,   284,  1050, -1276,  1056,  6899,   615,  1056, -1276,
     1721   -1276,  1056, -1276,  4829, -1276, -1276, -1276,  1055,  3690,  1312,
     1722   -1276,  3690, -1276,  1312, -1276, -1276,  3690, -1276,   265,   774,
     1723   -1276, -1276, -1276, -1276, -1276, -1276, -1276,   788,  8876, -1276,
     1724   -1276,  7147,  1054, -1276,   273,   774, -1276,   289,   296,   774,
     1725   -1276,  1003,  6008, -1276, -1276, -1276,  9703,  9703, -1276,  8378,
     1726    8378,  1062,  1058,  1059,  1069, -1276,   528,    60,   993, -1276,
     1727    1312, -1276,  5718, -1276,  3690,   459, -1276,  6520,  1071,  1075,
     1728   10115,  1076,  1078,   495,   516,  1001,  3690,  1081,   152,  3690,
     1729    3690,  1064,  1066,   116,   161,   546,  1072,  1083,  1060, -1276,
     1730   -1276, -1276,  1086, -1276, -1276, -1276, -1276, -1276, -1276, -1276,
     1731   -1276,  1074, -1276,   681,  1096,  3690,  9703,  9703,    32,    99,
     1732    1099, -1276, -1276,  1883,   479,  1980,  3690,  2331,   485, -1276,
     1733   -1276,  1082,    14,  1082, -1276, -1276, -1276,    99,    99,   681,
     1734   -1276, -1276,  9277, -1276, -1276, -1276, -1276,  1101,  1694, -1276,
     1735   -1276,  1091, -1276,  1100, -1276,   943, -1276, -1276,  2239,  1107,
     1736   -1276, -1276, -1276,   616,  1115, -1276,    62,  1102,  3690,  1103,
     1737      62,    62,  1123,   932,  3690,  1124,  1055, -1276,  1148, -1276,
     1738   -1276,  1121, -1276,   215, -1276,  1127,  1121, -1276,  1134, -1276,
     1739   -1276, -1276,   876,  1135,  1136,  6775,  1150,  1154,  1155, -1276,
     1740      99,  1138, -1276, -1276, -1276,   876, -1276, -1276, -1276, -1276,
     1741   -1276, -1276,   876,  3690,  3690,   788,  1156, -1276, -1276, -1276,
     1742   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  3690,  3690,
     1743    1164,  1169,  1121, -1276, -1276,   681, -1276, -1276, -1276,  3690,
     1744    3690,  1238,  3690, -1276, -1276,  1157, -1276,  1159,  3690,  1161,
     1745    1162,  3690,   946,  1166,    25,  2027, -1276, -1276,  6383,  1184,
     1746      99,   527, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  9317,
     1747     534, -1276,   796,  1190,  1192,  1196, -1276,  2331, -1276,    99,
     1748   -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276,  9931, -1276,
     1749    8378, -1276,  1202, -1276, -1276,  9392,   537,   538, -1276,  1209,
     1750    1186,   770,  1207, -1276,   320, -1276, -1276,  1210, -1276, -1276,
     1751    1216,  1257, -1276, -1276,  1257,  1257,  1312,  1218,  2023,  2049,
     1752   -1276,  1227, -1276,  9703, -1276, -1276, -1276, -1276, -1276,  1228,
     1753   -1276,  9703,  9703,  9703, -1276, -1276,  1229, -1276,  1230,  1233,
     1754    1234,   575,  8063,  8183, -1276, -1276, -1276, -1276,  1236, -1276,
     1755     647,   658,  1240,   665,  6215, -1276, -1276,   561, -1276, -1276,
     1756     670,  1241,  1246,   152,  1300,   854, -1276, -1276,  3690, -1276,
     1757    3690, -1276, -1276, 10115, -1276,  1255,  1256, -1276, -1276,   312,
     1758     774, -1276, -1276,  1883, -1276, -1276, -1276,  1245, -1276, -1276,
     1759   -1276, -1276, -1276, -1276,  9392,   770,  1261, -1276,  1239,   770,
     1760   -1276, -1276, -1276,  1312, -1276, -1276, -1276, -1276, -1276, -1276,
     1761   -1276, -1276, -1276, -1276, -1276, -1276,  1262,  1267, -1276, -1276,
     1762   -1276, -1276, -1276, -1276, -1276,  1270, -1276,  1273, -1276, 10115,
     1763     240,  3690, 10115, -1276,  1276,  3690, -1276,  7793,  9392, -1276,
     1764     271,  1291,  1294, -1276, -1276,  1282,  1288,  1272,   818, -1276,
     1765   -1276, -1276, -1276, -1276, -1276,   876, -1276, -1276,  1816,  2239,
     1766    1287, -1276,   339,  3690, -1276,   690,  1121,  1312,  1312,  1289,
     1767    1296,  1299,  1304, -1276, -1276,  8378,  1303, -1276,  1370,  3690,
     1768    1286, -1276, -1276, 10025, -1276,   707, -1276,  1293, 10115,  1298,
     1769    8453, -1276, -1276,  1310, -1276,  1311, -1276,  1330,  1335, -1276,
     1770    1302,  9703,  9392, -1276, -1276, -1276,   770,   615,  1322,  1305,
     1771    1323,  1121,  1121, -1276, -1276, -1276, -1276, -1276, 10115,   147,
     1772   -1276,   420, -1276, -1276,  7638, -1276, -1276,  1313,  3690, -1276,
     1773    3690,  7638,   152,  9550,   152,  9550,  1326, -1276,  1332, -1276,
     1774   -1276, -1276,  1328, -1276, -1276,   714, -1276, -1276, -1276,  1337,
     1775    1342, -1276,  3690,  3690, -1276, -1276,   883,    84, -1276, -1276,
     1776    1324, -1276,   883, -1276, -1276,  2177,   615, -1276, -1276,   152,
     1777    9550,   152,  9550,  1334,  1349,  1336,   615, -1276, -1276, -1276,
     1778   -1276, 10025,  1345,   883,  7717,  3690,  9935,  1351,   883,  1357,
     1779    2177,  2664, -1276, -1276, -1276,  1359, -1276, -1276, -1276, -1276,
     1780   -1276,  8758, -1276, -1276, -1276,  9797, -1276, 10025, -1276, -1276,
     1781    1346,  9707, -1276, -1276,  9935,   152,  2664,   152,  1369,  1372,
     1782     730, -1276,  9797, -1276, -1276, -1276,  9707, -1276, -1276, -1276,
     1783     152,   152, -1276, -1276, -1276, -1276, -1276, -1276, -1276, -1276
    17641784};
    17651785
     
    17671787static const yytype_int16 yypgoto[] =
    17681788{
    1769    -1328,  4218,  2910, -1328,  2669, -1328,   454,     0,  -147, -1328,
    1770    -1328,   463,  -522,  -472,  -935, -1037, -1328,  -158,  4217,  1113,
    1771    -1328,   115,   430,   459,   419,   456,   932,   938,   935,   940,
    1772      941, -1328,  -236,  -629,  5014,  -930, -1328, -1328,   543,  -135,
    1773     -872,  -345, -1328,  1349, -1328,   324,  -967, -1328, -1328,    49,
    1774    -1328, -1273,  -818,   170, -1328, -1328, -1328, -1328,    -5, -1312,
    1775    -1328, -1328, -1328, -1328, -1328, -1328,   244, -1175,    35, -1328,
    1776     -502, -1328,   424,   219, -1328,    95, -1328,  -308, -1328, -1328,
    1777    -1328,   479,  -837, -1328, -1328,     4,  -995,   175,  1139, -1328,
    1778    -1328, -1328,  -119, -1328,    57,   315,  -193,  1470,  3860, -1328,
    1779    -1328,    63,   160,   685,  1861, -1328,  1798, -1328, -1328,    18,
    1780     1913, -1328,  2277,  2037, -1328, -1328, -1328,  -545, -1328,   862,
    1781      867,   458,   646,   -93, -1328, -1328, -1328,   856,   647,  -449,
    1782    -1328,  -478,  -351,  -615, -1328, -1328,  -928,  -975,    -3,   985,
    1783      981,   776, -1328,   107,   366,   -24,  -195,  -132,   609,   706,
    1784    -1328,   926, -1328,  2605,  1917,  -447,   855, -1328, -1328,   645,
    1785    -1328,  -234, -1328,  -136, -1328, -1328, -1328, -1230,   360, -1328,
    1786    -1328, -1328,  1098, -1328,    12, -1328, -1328,  -835,  -110, -1327,
    1787     -138,  2640, -1328,  3073, -1328,   848, -1328,  -166,    72,  -183,
    1788     -179,  -176,     2,   -41,   -36,   -32,    62,    10,    19,    21,
    1789      -98,  -172,  -171,  -170,  -167,  -307,  -494,  -481,  -476,  -551,
    1790     -310,  -510, -1328, -1328,  -515,  1010,  1014,  1017,  1772,  4826,
    1791     -557,  -496,  -482,  -480,  -543, -1328,  -503,  -723,  -721,  -720,
    1792     -573,  -287,  -290, -1328, -1328,   226,   457,    -9, -1328,  3666,
    1793      -27,  -611,  -257
     1789   -1276,  4372,  2980, -1276,  2546, -1276,   133,     0,   353, -1276,
     1790   -1276,   484,  -503,  -488,  -816,  -925, -1276,  -155,  5343,   687,
     1791   -1276,    -8,   438,   439,   406,   473,   936,   937,   938,   940,
     1792     935, -1276,    16,  -629,  5085,  -872, -1276, -1276,   571,   711,
     1793    -953,   442, -1276,   143, -1276,   337, -1218, -1276, -1276,    43,
     1794   -1276, -1095,  -891,   157, -1276, -1276, -1276, -1276,   -28, -1182,
     1795   -1276, -1276, -1276, -1276, -1276, -1276,   239, -1036,    39, -1276,
     1796    -292, -1276,   428,   203, -1276,    73, -1276,  -329, -1276, -1276,
     1797   -1276,   497,  -831, -1276, -1276,     8, -1177,   119,  2152, -1276,
     1798   -1276, -1276,  -200, -1276,   218,   464,  -197,  1593,  4090, -1276,
     1799   -1276,    54,    10,    81,   870, -1276,  1757, -1276, -1276,     4,
     1800    2080, -1276,  2209,   245, -1276, -1276, -1276,  -810, -1276,   651,
     1801     492,   236,   490,  -591, -1276, -1276,   829,   640,  -247, -1276,
     1802    -487,  -338,   961, -1276, -1276,  -885,  -918,  -131,   -60, -1276,
     1803     462, -1276,  1284,  -121,  -305,  -157,  -103,   614,   708, -1276,
     1804     905, -1276,  2602,  1460,  -448,   848, -1276, -1276,   661, -1276,
     1805    -437, -1276,   217, -1276, -1276, -1276, -1269,   341, -1276, -1276,
     1806   -1276,  1085, -1276,     6, -1276, -1276,  -796,   -87, -1275,  -158,
     1807    2622, -1276,  4369, -1276,   843, -1276,    21,   165,  -174,  -172,
     1808    -169,     2,   -40,   -32,   -30,  1684,    26,    53,    66,   110,
     1809    -166,  -163,  -160,  -159,  -293,  -485,  -480,  -434,  -541,  -314,
     1810    -513, -1276, -1276,  -535,  1006,  1008,  1016,  1639,  4667,  -574,
     1811    -533,  -528,  -509,  -421, -1276,  -961, -1011, -1007, -1005,  -575,
     1812    -287,  -299, -1276, -1276,   298,   238,   -63, -1276,  3674,   814,
     1813    -613,  -492
    17941814};
    17951815
     
    17971817   positive, shift that token.  If negative, reduce the rule which
    17981818   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1799 #define YYTABLE_NINF -530
     1819#define YYTABLE_NINF -528
    18001820static const yytype_int16 yytable[] =
    18011821{
    1802       50,   114,    99,   398,   151,   116,   451,   399,   268,   152,
    1803      400,   760,   427,   153,   401,   402,   403,   746,    78,   404,
    1804      951,   406,   952,   953,   167,   438,  1055,  1173,  1057,   857,
    1805     1158,   114,   114,  1126,    50,    52,    99,   382,   383,   605,
    1806      735,   817,   600,   834,   720,    50,   145,   816,   725,   880,
    1807      409,    50,    78,   162,   787,   154,   820,    65,   592,    50,
    1808      911,  1430,   827,    71,   155,    50,   156,   194,    50,    52,
    1809      217,    50,    98,   227,   624,   220,  1156,  1157,   628,  1368,
    1810     1167,  1235,    33,   398,   114,   114,   808,   399,   167,   407,
    1811      400,    65,   424,   445,   401,   402,   403,    71,   261,   404,
    1812      809,   406,   805,  1290,  1190,  1191,    98,   203,    50,   663,
    1813      291,    50,   458,   163,   810,   806,   811,   150,    50,  1434,
    1814      807,   330,   474,    98,   473,   475,    33,   195,   672,   707,
    1815      218,   124,   566,   228,  1430,   504,   676,   190,   469,   143,
    1816       98,   907,   939,    98,   717,   151,   552,   553,   342,    50,
    1817      152,   162,   847,   847,   153,   125,   410,   281,   204,  1187,
    1818       72,    50,   518,   372,  -239,  -239,   567,   972,   847,   407,
    1819      951,  1240,   952,   953,  1291,    58,   117,   977,   901,  1449,
    1820      714,  1518,   849,   434,  1230,  1172,    50,    50,   988,   162,
    1821     1163,   242,   245,   708,    72,   408,   154,   866,   253,  1241,
    1822      410,  1320,    50,  1323,  1325,   155,   936,   156,  1533,    58,
    1823       50,   163,   162,   330,   661,  1434,  1164,   282,   805,    50,
    1824     1434,    98,    50,   373,   441,   151,   847,   741,   213,   114,
    1825      152,   806,   144,    98,   153,  1158,   807,  -239,   169,   658,
    1826     1434,   971,   474,   211,   114,   434,   221,  1434,   114,   163,
    1827     1460,    33,    50,   114,    99,   919,    33,  1000,   397,   190,
    1828     1413,   820,   170,   999,   461,  1071,    50,    50,  1476,   162,
    1829       78,   976,   163,    50,  1414,    78,  1164,   164,    33,   848,
    1830      848,  1173,    98,   167,   442,   650,  1461,    52,   605,  1158,
    1831      666,   668,   987,   837,    98,   848,   796,   838,   469,    33,
    1832     1462,  1080,    33,  1504,   157,  1506,   809,   659,   805,    65,
    1833     1103,   376,   658,   665,   470,    71,   118,   469,   594,   670,
    1834      810,   806,   811,   146,    98,   469,   807,   377,   418,   592,
    1835      410,    50,   585,   372,   592,  1156,  1157,   843,   477,  1388,
    1836     1389,   164,   512,   821,  1067,  1388,  1389,   824,    50,    50,
    1837      479,   455,   410,   848,   492,   839,   729,   493,  1055,   840,
    1838     1057,   730,   148,   -10,   817,    50,   160,   887,   841,    50,
    1839      518,   818,   844,   597,   825,   518,   597,   287,   518,   637,
    1840      659,   731,   440,   575,  1375,   172,  1153,  1154,   707,   576,
    1841       43,    44,   839,   373,  1105,    50,  1087,   439,   330,   330,
    1842      509,   667,   669,    98,  1349,    50,   182,   372,  1313,  1158,
    1843      834,  1390,    72,   202,  1106,   386,   513,  1399,   378,  -294,
    1844      112,   599,   259,    50,   809,   547,   548,    58,  1314,    50,
    1845      160,   387,   781,    43,    44,    78,   433,  1173,   810,  1351,
    1846      811,  1419,  1420,   577,  1173,   410,   248,  1201,  1202,  1144,
    1847     1146,  1112,   708,   910,    78,   113,  1425,   108,   108,   696,
    1848      547,   753,    78,   326,  -112,   114,   330,   373,  -112,   724,
    1849       50,   251,   340,   389,   470,  1221,  -525,   190,    50,  1398,
    1850      372,   253,    50,  1091,    99,   330,   638,    50,   737,   390,
    1851      114,   108,   114,   470,  1124,   547,  1173,   859,   433,   636,
    1852       78,   470,  1229,   496,   605,   980,   112,   998,   391,   858,
    1853      213,   264,   870,   877,   393,   898,   860,    52,  1044,    43,
    1854       44,   429,   -12,   522,   392,   432,  1517,   114,   108,  1000,
    1855      394,   580,   114,   410,  1265,  1266,   164,   705,   868,    65,
    1856     -448,   707,   556,   557,   970,    71,  1528,   758,   112,   330,
    1857      141,   142,   791,  1532,    98,   326,   469,   902,   333,   599,
    1858      904,    43,    44,  1338,  1468,   902,  1469,  1339,   497,  1112,
    1859      498,   499,   904,   903,   901,  -449,   905,   558,   559,  1003,
    1860      114,  1068,   916,   900,   940,  1170,   277,   432,  1069,   835,
    1861      487,   871,   244,   410,   594,  1466,    50,   719,    50,   723,
    1862     1219,  1171,  1466,  1170,  1223,   708,     2,   207,     4,     5,
    1863        6,     7,   520,  1304,   253,   332,  1011,    50,   998,  1296,
    1864     1515,   112,   279,   141,   142,   160,   280,  1306,   741,  1305,
    1865     1327,   213,    50,   334,    43,    44,   114,  1329,  1330,  1331,
    1866      554,   555,    72,  1307,  1352,    50,  1488,   114,    50,   114,
    1867      798,   335,  1493,  1155,  1514,  1010,   584,    58,   910,   336,
    1868      589,   696,   853,   337,   762,   763,   764,   677,   804,  1088,
    1869      599,   338,  1513,   576,    37,  1061,    38,  1520,   685,   622,
    1870     1178,    50,   371,   626,   698,   114,   568,   114,   410,   375,
    1871      699,   114,   388,    78,    47,    48,   592,   384,  1099,   114,
    1872     1374,   396,    39,   910,   175,   176,    42,   463,   408,   108,
    1873      398,   425,    50,    50,   399,    43,    44,   400,   874,    78,
    1874      410,   401,   402,   403,  1016,  1129,   404,   410,   715,   406,
    1875      426,   522,   470,   522,   716,  1127,   522,   448,   112,   522,
    1876      326,   326,  1415,   854,  -372,     2,   207,     4,     5,     6,
    1877        7,    43,    44,   899,  1140,   549,   410,   230,   470,  1427,
    1878      231,   550,   551,   235,  1181,   237,  1143,   681,   597,   726,
    1879     1361,  1145,   246,   597,   951,   727,   952,   953,   440,   696,
    1880      118,   740,   707,  1011,   804,   599,  1226,   741,   410,   696,
    1881      560,   561,   906,   881,   908,   883,   705,   407,   455,   741,
    1882      696,   741,    50,  1148,   459,  1074,   487,  1074,   326,   743,
    1883      487,   410,   460,    37,    50,    38,  -401,    47,    48,   482,
    1884      520,   920,   520,   597,   503,   520,   291,   326,   520,    47,
    1885       48,  1486,  1427,   965,    39,   178,   175,   176,    42,   966,
    1886        8,     9,    10,    11,    12,   978,   708,    43,    44,  1101,
    1887     1044,   699,   213,   969,   966,   966,   637,     8,     9,    10,
    1888       11,    12,   114,  1041,  1217,   959,   213,   507,   910,  1345,
    1889      576,   732,    33,   733,   804,   741,   734,  1346,    -3,   738,
    1890      512,    78,  1348,   741,   262,  1168,   599,   263,   741,    33,
    1891      563,   326,   525,    50,   562,    50,  1183,  1353,   230,   565,
    1892       36,   794,   114,   741,   685,   330,   658,  1416,  1435,  1482,
    1893     1538,   898,  1341,  1413,   741,  1483,   576,    36,   564,   113,
    1894       65,   332,   410,   708,   586,    50,    71,   910,   910,  1358,
    1895     1359,   833,   253,   332,   410,  1092,   589,  1408,   966,   108,
    1896     1388,  1389,   842,   339,   568,   114,   410,   651,   798,   705,
    1897     1362,    -3,    47,    48,   652,   940,   835,   213,   637,   940,
    1898      940,  1236,  1237,   638,   114,  1070,   653,   899,   114,  1021,
    1899     1500,   418,   654,   410,   659,   769,   770,   771,   772,   900,
    1900      655,   754,   765,   766,  1212,   656,   759,     2,   207,     4,
    1901        5,     6,     7,   681,   112,   437,   657,   599,   696,   696,
    1902     1387,  1117,   660,  1395,  1118,   258,  1119,    43,    44,  1076,
    1903      479,   332,   410,   767,   768,   114,   773,   774,   229,  1112,
    1904      662,   686,    39,    72,   691,  1041,    42,   687,    50,    50,
    1905       50,   487,  -243,   689,   463,    43,    44,   230,    58,   235,
    1906       78,  1272,  1273,   717,  1275,   728,   799,  1433,   742,   481,
    1907     1279,   750,  1437,  1282,   801,    37,   812,    38,   114,   696,
    1908      696,   802,   -14,   597,   862,   638,   818,   332,   597,    47,
    1909       48,   856,    50,  1311,  1283,  1284,  1285,    50,   -15,   470,
    1910      855,  1459,   882,   884,   889,  1175,   909,  -422,     8,     9,
    1911       10,    11,    12,  -529,    50,    39,   924,   934,   547,    42,
    1912      716,   867,   112,   869,   141,   142,  1093,   932,    43,    44,
    1913      979,   938,   937,    51,   115,    43,    44,   944,   114,   945,
    1914       33,  -295,   946,   947,   178,   230,   948,   949,     8,     9,
    1915       10,    11,    12,   685,    45,   910,   963,   509,   973,    59,
    1916       59,   625,    47,    48,   899,   629,   440,    51,    36,   899,
    1917      974,   975,   910,   915,   989,   990,   991,   992,   149,   993,
    1918       33,   994,   995,  1369,    51,  1021,  1527,  1369,  -410,  -409,
    1919      114,  1018,  1527,    59,  1058,  1064,  1081,  1082,   187,   220,
    1920      894,   210,    72,  1527,    51,  1060,  1083,  1527,    36,  1084,
    1921      705,  1090,   743,  1102,   410,  1041,  1100,    58,  1104,   958,
    1922       47,    48,  1109,  1107,  1110,  1300,  1111,    59,  1138,  1114,
    1923       59,  1159,  1394,    78,  1162,  1160,  1161,  1176,  1092,  1177,
    1924      115,  1179,   681,   112,   910,   910,  1180,    -9,   115,  1188,
    1925     1117,   267,   272,  1118,  1193,  1119,    43,    44,   114,  -445,
    1926      114,   114,   696,   -11,   741,   487,  1094,   326,    -3,   696,
    1927      696,   696,    65,  1199,  1197,  1204,  1207,  1411,    71,  1209,
    1928      492,   310,   149,  1220,  1234,  1213,  1450,   705,  1218,  1222,
    1929      115,   345,  1225,  1526,   210,   112,  1231,  1270,   112,  1238,
    1930      141,   239,  1117,  1242,  1244,  1118,  1246,  1119,    43,    44,
    1931     1247,    43,    44,   685,    78,  1041,   112,   348,   833,   187,
    1932      187,  1248,  1249,  1117,  1251,  1258,  1118,  1267,  1119,    43,
    1933       44,  1268,   696,  1092,   398,   267,  1322,   240,   399,   114,
    1934      108,   400,   241,    51,  1274,   401,   402,   403,  1277,  1278,
    1935      404,  1294,   406,   470,   213,   210,  1280,  1324,   131,  1175,
    1936      132,   133,   134,  1281,  1289,  1041,  1302,  1308,  1041,   211,
    1937      221,    43,    44,   310,  1310,    72,   658,  1312,  1316,  1318,
    1938     1317,    59,  1321,  1499,  1326,    51,    50,    50,  1328,  1334,
    1939       58,  1335,  1336,   272,  1337,  1344,   114,   114,   272,   267,
    1940      267,  1347,   681,  1354,  1355,   115,  1285,  1363,   108,  1093,
    1941       39,    59,  1041,   836,    42,  1364,  1365,  1041,  1371,  1108,
    1942      407,  1372,  1382,    43,    44,  1383,   174,  -411,   850,  1401,
    1943      310,  1386,  1397,  1092,   114,  1403,  1405,  1406,  1120,  1407,
    1944     1412,   865,  1120,   310,   659,  1421,  1041,  1422,  1423,   712,
    1945     1339,   440,  1424,  1426,  1431,  1436,    72,    47,    48,   569,
    1946     1440,  1438,  1442,  1444,   149,  1446,   439,   697,   254,  1453,
    1947       78,    58,  1455,  1448,   115,  1454,   151,    78,   345,  1467,
    1948     1456,   152,   598,   616,  1484,   153,  1477,  1479,  1481,  1120,
    1949       68,   119,  1485,    50,   114,  1492,  1507,   621,  1508,   108,
    1950      330,   621,  1521,   114,  1093,  1512,  1519,  1523,  1041,   470,
    1951     1529,  1536,  1537,  1041,   775,  1175,   470,    50,    50,   777,
    1952      162,   776,  1175,  1192,    68,   778,  1116,   779,   267,    78,
    1953     1487,  1041,    39,  1041,   175,   176,    42,  1041,   187,  1293,
    1954     1041,   161,    50,  1400,   372,    43,    44,  1539,  1041,  1094,
    1955     1357,  1224,  1041,  1373,  1470,  1206,   267,  1198,   310,   310,
    1956      890,   222,   267,   416,   621,   891,  1075,   912,   470,  -296,
    1957      112,   371,   141,   142,  1175,  1079,     8,     9,    10,    11,
    1958       12,   793,  1017,    43,    44,   115,   435,  1113,   861,   477,
    1959      348,   926,  1120,  1089,  1303,   935,   443,   260,   783,     0,
    1960      710,     0,   784,   267,  1093,   785,     0,     0,    33,   721,
    1961        0,   267,    72,   621,   722,    51,     0,     0,     0,    72,
    1962      713,     0,     0,     0,     0,     0,   115,    58,     8,     9,
    1963       10,    11,    12,     0,    58,     0,    36,     0,   310,   331,
    1964      115,    59,     0,   310,  1094,   310,   310,   260,   350,     0,
    1965        0,     0,   108,   744,     0,     0,     0,   345,     0,     0,
    1966       33,    39,     0,   175,   176,    42,   519,     0,     0,   697,
    1967        0,    72,   108,     0,    43,    44,     0,   405,     0,     0,
    1968        0,     0,     0,   348,     0,     0,    58,  1474,    36,  1474,
    1969        0,   108,   423,    39,     0,   428,   430,    42,     0,     0,
    1970      161,   569,   569,     0,     0,     0,    43,    44,  1185,   310,
    1971        0,     0,  1120,     0,  1120,  1120,     0,     0,     0,   621,
    1972      345,   446,     0,   616,  1474,   449,  1474,   450,     0,   598,
    1973        0,   598,    45,     0,     0,     0,   457,     0,     0,     0,
    1974       47,    48,    68,     0,  1094,     0,   348,   471,    39,   621,
    1975      175,   176,    42,   108,   621,     0,   616,   478,     0,     0,
    1976      621,    43,    44,   621,   621,   430,     0,     0,     0,     0,
    1977       39,     0,   175,   176,    42,     0,  1473,     0,  1473,   621,
    1978        0,   267,     0,    43,    44,     0,   108,   697,     0,   348,
    1979      348,     0,     0,  1120,     0,     0,     0,   697,     0,     0,
    1980        8,     9,    10,    11,    12,   348,     0,     0,   697,   375,
    1981      674,   115,     0,  1473,   895,  1473,     0,     0,    76,     0,
    1982        0,     0,     0,     0,  1182,  1184,  1186,     0,     0,     0,
    1983        0,   260,    33,     0,     0,   590,   700,   621,   921,   616,
    1984        0,   618,   326,     0,     0,   713,   713,     0,     0,     0,
    1985     1120,  1120,    76,     0,   623,     0,     0,     0,   623,     0,
    1986       36,     0,     0,   348,     0,     0,     0,     8,     9,    10,
    1987       11,    12,   345,     0,   519,     0,   744,   744,     0,   519,
    1988        0,     0,   519,  -297,     0,     0,   108,     0,  1451,   223,
    1989        8,     9,    10,    11,    12,     0,     0,     0,     0,    33,
    1990        0,     0,     0,     0,   920,     0,   597,   471,     0,   108,
    1991        0,     0,    47,    48,     0,     0,   108,     0,     0,   569,
    1992        0,   350,    33,     0,     0,     0,   471,    36,   621,     0,
    1993      983,     0,    39,    79,   471,   598,    42,     0,     0,     0,
    1994        0,     0,     0,     0,     0,    43,    44,   598,  1501,   214,
    1995       36,     0,   692,     0,     0,   430,     0,  1509,   233,     0,
    1996        0,     0,     0,     0,     0,     0,     0,    79,   108,     0,
    1997      706,   712,    68,     0,     0,     0,   353,     0,     0,    47,
    1998       48,   430,   412,     0,     0,   430,     0,     0,    39,   420,
    1999      184,   185,    42,     0,     0,     0,   310,     0,     0,     0,
    2000      214,    43,    44,     0,   224,   216,   697,   697,     0,     0,
    2001        0,     0,     0,     0,   350,     0,     0,     0,   345,     0,
    2002        0,   243,    59,     0,     0,   345,   895,   893,   895,   410,
    2003        0,     0,   879,     0,     0,    47,    48,     0,     0,     0,
    2004      115,   886,   214,     0,   348,   888,     0,     0,   894,   447,
    2005        0,     0,     0,   921,   921,     0,   216,     0,   713,   786,
    2006        0,   412,     0,     0,   115,   310,     0,   697,   697,     0,
    2007       76,     0,     0,     0,     0,    76,   623,   797,     0,     0,
    2008       39,     0,   184,   185,    42,     0,     0,   744,   814,     0,
    2009       59,   355,     0,    43,    44,     0,     0,     0,   216,     0,
    2010        0,     0,     0,   214,     0,     0,   590,     0,     0,     0,
    2011       39,   590,   184,   185,    42,     0,   345,   623,   574,   186,
    2012      350,   350,     0,    43,    44,   215,   578,    47,    48,   581,
    2013        0,    39,     0,   184,   185,    42,   350,   621,   621,     0,
    2014        0,   214,     0,     0,    43,    44,   214,     0,     0,   596,
    2015        0,   597,     0,     0,   692,   310,     0,    47,    48,   216,
    2016        0,     0,  1410,   348,   348,   471,     0,     0,     0,   223,
    2017      893,     0,   410,     0,     0,     0,   215,     0,    47,    48,
    2018        0,    59,     0,     0,     0,    79,     0,     0,     0,   412,
    2019       79,   471,     0,   420,   350,     0,     0,   216,     0,     0,
    2020      115,     0,   216,   925,     0,   895,   430,     0,     0,     0,
    2021      895,     0,     0,  1301,     0,     0,     0,     0,   215,   921,
    2022        0,     0,     0,     0,     0,     0,     0,   267,     0,   706,
    2023        0,   214,     0,     0,   954,    76,   534,   535,   536,   537,
    2024      538,   539,   540,   541,   542,   543,   544,     0,     0,   353,
    2025      697,     0,     0,     0,    76,     0,  1066,   697,   697,   697,
    2026        0,     0,    76,     0,     0,     0,   345,     0,     0,   412,
    2027      545,     0,   692,     0,     0,     0,     0,     0,     0,   215,
    2028      353,     0,   692,     0,   224,   623,     0,   216,   986,     0,
    2029        0,     0,     0,   692,     0,     0,     0,    81,   353,     0,
    2030       76,     0,     0,   997,     0,     0,     0,   272,   115,     0,
    2031       39,   214,   184,   185,    42,     0,     0,   215,     0,     0,
    2032      697,     0,   215,    43,    44,     0,     0,   214,   310,     0,
    2033        0,    81,     0,    59,    59,     0,     0,     0,     0,     0,
    2034        0,     0,   353,   621,     0,     0,     0,   115,     0,  1497,
    2035       79,   410,   214,    68,    59,     0,     0,    47,    48,     0,
    2036      574,   574,     0,     0,   355,     0,     0,   216,   225,    79,
    2037        0,     0,     0,    59,     0,   797,     0,    79,     0,     0,
    2038        0,     0,   706,     0,     0,  1072,    39,     0,   184,   185,
    2039       42,     0,     0,     0,     0,   355,   621,   621,     0,    43,
    2040       44,     0,  1189,     0,   272,   353,     0,   215,   216,   310,
    2041        0,  1086,     0,   355,     0,    79,     0,     0,     0,     0,
    2042      430,   119,   348,   348,     0,   266,     0,     0,     0,     0,
    2043       59,     0,     0,    47,    48,    59,     0,     0,     0,     0,
    2044        0,     0,   115,   872,     0,     0,   526,   875,   353,   353,
    2045      527,   528,   529,     0,     0,   356,     0,   355,     0,     0,
    2046        0,     0,     0,     0,   353,     0,     0,     0,    59,     0,
    2047        0,   214,     0,   590,   530,     0,   531,     0,   532,   533,
    2048        0,     0,   353,     0,     0,     0,   428,   215,     0,     0,
    2049        0,   692,   692,    76,   350,   350,     0,     0,     0,   214,
    2050      267,   526,     0,     0,   214,   527,   528,   529,     0,     0,
    2051        0,     0,  1174,     0,     0,     0,     0,   621,     0,    76,
    2052      355,     0,   353,     0,     0,     0,     0,   216,   215,   530,
    2053        0,   531,     0,   532,  1292,     0,     0,     0,     0,     0,
    2054        0,     0,   115,   348,     0,     0,     0,     0,     0,    81,
    2055        0,     0,   692,   692,    81,   216,     0,   353,     0,     0,
    2056      216,     0,     0,   355,   355,   115,     0,     0,    59,     0,
    2057        0,     0,   115,   214,   115,     0,   115,     0,   574,   355,
    2058        0,     0,     0,     0,     0,     0,     0,   214,     0,     0,
    2059        0,    59,     0,     0,     0,     0,     0,   355,    59,     0,
    2060      353,     0,     0,     0,     0,     0,  1498,     0,    79,     0,
    2061      353,   115,     0,   115,     0,     0,   223,     0,     0,     0,
    2062        0,   353,     0,   706,   115,    88,     0,     0,     0,   216,
    2063     1498,  1498,     0,     0,    79,     0,     0,   355,     0,     0,
    2064      310,     0,     0,   216,     0,     0,     0,   215,   225,     0,
    2065       59,     0,     0,     0,  1356,  1498,     0,     0,     0,    88,
    2066        0,     0,     0,     0,     0,  1271,     0,     0,     0,     0,
    2067        0,     0,   355,     0,     0,   215,     0,     0,   214,     0,
    2068      215,    76,     0,     0,     0,    68,     0,     0,   126,   129,
    2069      130,   412,     0,     0,     0,     0,   226,     0,   692,     0,
    2070      706,     0,     0,   353,   119,     0,     0,     0,     0,     0,
    2071      353,     0,     0,     0,    81,   355,     0,     0,     0,     0,
    2072        0,     0,     0,     0,     0,   355,     0,     0,   356,     0,
    2073        0,   224,     0,    81,   216,   692,   355,     0,     0,     0,
    2074        0,    81,   692,   692,   692,     0,     0,     0,   177,   215,
    2075        0,     0,     0,   350,   350,     0,     0,     0,     0,   356,
    2076      255,     0,   256,   215,     0,  1130,  1174,     0,     0,     0,
    2077        0,     0,     0,     0,     0,     0,     0,   356,     0,    81,
    2078        0,  1141,     0,   363,     0,     0,     0,     0,     0,     0,
    2079        0,     0,     0,     0,     0,     0,    79,   177,     0,   119,
    2080      177,     0,     0,     0,     0,   692,     0,     0,     0,  1471,
    2081        0,  1475,     0,     0,     0,     0,     0,     0,   355,   353,
    2082      353,   356,   353,   353,     0,   355,     0,     0,     0,     0,
     1822      50,   112,    97,   419,    77,   147,   388,   670,   389,   114,
     1823      71,   390,  1020,   148,   391,   149,   797,   392,   722,   837,
     1824     393,   394,   740,   353,  1183,   401,   767,   597,  1184,   257,
     1825    1185,   112,   112,   814,    50,  1370,    97,   706,    77,    52,
     1826     141,   711,   250,  1160,    71,    50,   460,  1022,   592,   796,
     1827     584,    50,  1133,   158,    70,   789,    33,   616,   430,    50,
     1828     790,   620,   374,   375,    50,    33,   189,    50,  1052,   212,
     1829      50,   150,   222,    52,   898,   788,  1188,   208,   215,   791,
     1830     656,   388,   272,   389,  1131,  1132,   390,  1346,    70,   391,
     1831     334,  1278,   392,   464,   466,   393,   394,    33,   151,   665,
     1832     801,    33,   400,   785,   804,    33,    50,   669,   786,    50,
     1833     416,   152,   660,   662,  1432,   122,    50,  1096,    33,    58,
     1834     115,    33,    33,   198,   112,   821,   123,  1163,  1164,   824,
     1835     402,  -240,  -240,   688,   111,   827,   827,   242,   558,   402,
     1836     147,    33,   273,  1452,   165,    50,   282,   158,   148,   465,
     1837     149,   827,   225,    58,   787,   226,  1147,    50,   230,   364,
     1838     232,  1138,  1279,  1223,  1142,    96,   235,   514,   166,   410,
     1839     800,   402,   559,   470,   199,   402,   807,   798,   910,   589,
     1840      50,    50,   710,   158,   689,   695,   206,  1139,  1432,   216,
     1841     805,  1148,   589,   850,   854,   402,   402,    50,   827,    96,
     1842     170,   724,   396,   140,  -240,    50,   150,   158,   785,   460,
     1843     146,   907,  1218,   786,    50,   147,    96,    50,    64,   433,
     1844     965,   142,  1179,   148,   112,   149,  1292,   432,   460,   185,
     1845     144,   941,    96,   151,   112,    96,   460,   112,   106,   106,
     1846     243,    50,   112,    97,   654,    77,   152,   452,  1462,   789,
     1847      77,    71,    64,   964,   790,    50,    50,  1346,   158,   787,
     1848     567,   153,    50,   771,  1346,   112,   568,   368,   503,   952,
     1849     577,   168,   106,   791,  1139,   506,   597,   396,  1521,   776,
     1850      52,  1077,  1133,   369,   828,   828,  1063,  1389,  1390,   225,
     1851     197,   397,   353,   539,   540,    70,   -10,   785,  1436,  1532,
     1852     828,  1314,   786,  1317,  1319,  1228,  1536,    33,   106,  -295,
     1853      96,  1343,   210,   797,  1522,    33,   728,  1346,  1389,  1390,
     1854     823,   584,    96,    50,   968,   364,   584,   378,   658,   539,
     1855     936,    33,   408,  1229,   663,  1133,   431,  1020,    33,   869,
     1856      50,    50,  1537,   379,   541,   387,   185,   828,   787,   160,
     1857     542,   543,   208,   789,    33,   427,   237,    50,   790,  1391,
     1858      58,    50,   210,   800,   539,   435,   397,  1131,  1132,   490,
     1859      96,   629,  1022,   814,   716,   454,   829,   791,   718,  1099,
     1860     720,   402,    96,   721,   240,   353,   725,  1112,   688,   402,
     1861    1401,   846,  1399,   678,   717,    50,  1436,   364,   381,  1079,
     1862    1060,  1436,   210,  1116,   110,   589,    96,  1186,   465,  1478,
     1863    1119,   160,   589,    77,   382,    50,   649,    43,    44,  1080,
     1864     468,    50,  1436,   242,   324,   225,  1362,   230,   402,  1436,
     1865     698,   513,    77,  1345,   491,  1308,   492,   493,   885,   689,
     1866      77,   437,   383,  1094,  1507,   733,  1509,   385,   353,  1212,
     1867    1192,   679,  1192,  1065,   449,  1309,   112,   680,   384,    64,
     1868    1416,    50,   210,   386,   461,   116,  1073,  1133,   460,    50,
     1869    1217,   364,   208,    50,  1417,    97,   945,    77,    50,   106,
     1870     597,   112,   882,    71,   965,  1470,   112,  1471,    96,  1183,
     1871     649,   353,   353,  1184,   210,  1185,   696,  1376,   253,   210,
     1872    1427,   963,   697,   425,    39,   650,   591,   353,    42,  1254,
     1873    1255,  -523,    52,   225,  1503,   156,  1049,    43,    44,   112,
     1874     712,   174,   548,   549,   112,   110,   713,    70,   242,   569,
     1875     838,   402,  1050,   742,   743,   744,  1118,  1121,    43,    44,
     1876    1188,  1463,  1519,    45,     2,   202,     4,     5,     6,     7,
     1877     727,    47,    48,   848,   353,  1464,   728,   550,   551,   425,
     1878     185,  1421,  1422,   817,   858,  1292,   738,   818,   251,   248,
     1879      39,   252,   171,   172,    42,  1491,   667,   156,   688,   650,
     1880    1145,  1496,   819,    43,    44,   -12,   820,   210,    50,   111,
     1881      50,    39,    58,   171,   172,    42,  1146,   678,   963,   160,
     1882    1049,   681,  1517,  1468,    43,    44,  1189,  1524,   317,    50,
     1883    1468,   819,    37,   863,    38,  1059,  1181,   332,  -448,   728,
     1884     432,   278,  1190,   572,    50,   402,   498,   461,   112,   689,
     1885     865,  1130,  1154,   778,    43,    44,   728,    50,    96,   112,
     1886      50,   112,   513,   591,  -449,  -112,   461,   513,  1145,  -112,
     1887     513,    50,   734,  1156,   461,  1189,   268,   739,  1299,  1301,
     1888     507,   584,   370,  1518,  1284,   421,   839,   210,   628,   424,
     1889     270,  1288,    77,   975,  1300,  1302,   429,    -3,   871,   271,
     1890     112,   325,   728,   208,   568,   840,    77,    51,   113,   686,
     1891     110,    64,  1332,    50,    50,    39,  1333,   208,  1349,    42,
     1892    1028,   112,   678,    43,    44,   112,   326,   210,    43,    44,
     1893     930,   106,   678,   678,  1075,   486,   931,   327,   487,   897,
     1894     931,    51,   924,   678,   472,   424,   328,   110,   478,   137,
     1895     443,  1208,   145,   981,   693,   363,   353,   568,    51,  -296,
     1896      43,    44,    47,    48,  1418,   329,     8,     9,    10,    11,
     1897      12,   181,   317,   784,   205,   591,   110,    51,   137,   138,
     1898    1429,   330,  1339,   367,  1123,   156,   444,   688,   728,    43,
     1899      44,   445,   847,  1340,   849,   376,   935,  1358,    33,   728,
     1900    1342,   560,    50,   402,  1210,  1350,   728,   208,  1214,    47,
     1901      48,   728,   113,   380,    50,   544,   545,   576,   398,   861,
     1902     113,   581,   174,   256,   261,  1419,    36,   886,   868,   589,
     1903     400,  1416,   870,   881,   417,    47,    48,   418,   689,   617,
     1904     614,   440,  1437,   621,   618,   546,   547,   210,   728,  1485,
     1905     497,   301,   145,  1489,  1429,  1486,   629,   473,   353,   353,
     1906     113,   337,   112,  1006,   205,  1542,   450,    77,   976,   451,
     1907     715,   568,  -401,    71,   282,   210,   552,   553,   784,   591,
     1908     210,   388,   501,   389,   506,   163,   390,   181,   181,   391,
     1909     517,  1176,   392,   555,    50,   393,   394,   112,   554,  1143,
     1910     556,   317,   317,   557,   256,    39,   461,   171,   172,    42,
     1911     331,    50,    51,   934,   931,  1041,   578,    70,    43,    44,
     1912     461,   242,   324,   402,   205,    -3,   678,   678,   317,   642,
     1913    1066,   324,   402,   689,  1335,  1355,  1356,   112,   210,   643,
     1914     116,   778,   644,   629,   363,   653,   897,   163,    51,   112,
     1915    1389,  1390,   210,   112,  1224,  1225,   261,   209,  1410,   931,
     1916     539,   261,   256,   256,   686,   646,   228,   784,   113,   478,
     1917     647,   317,  1097,   478,   749,   750,   751,   752,   322,   591,
     1918     648,   432,    58,   317,   652,   317,   678,   678,   317,   877,
     1919     317,   317,   410,   645,   402,   301,   470,   324,   402,   503,
     1920     112,  1203,   745,   746,  1043,   747,   748,   209,   301,   655,
     1921    1006,    77,   247,    50,    50,    50,  -373,    71,  -244,   512,
     1922     976,   798,   324,   589,   561,   698,   859,  1271,  1272,  1273,
     1923     145,   701,  1031,     8,     9,    10,    11,    12,   703,   426,
     1924     113,  1067,   210,   112,   337,   753,   754,   209,   590,   608,
     1925     705,   714,   317,    50,   729,    50,   730,    50,   -14,  1042,
     1926     779,    70,   774,   613,   781,    33,   792,   613,   -15,   112,
     1927    1082,   835,   897,   836,  1041,   842,   591,   864,   396,   866,
     1928     878,    64,  1090,  -422,   697,  -527,  1090,  1295,    50,   890,
     1929     911,   816,   813,    36,  1530,   426,    39,   581,   171,   172,
     1930      42,   106,   181,   822,   896,   903,   830,   209,   112,    43,
     1931      44,   905,   908,   909,   897,   915,   917,   918,   110,   845,
     1932     137,   138,   256,   919,   301,   301,    58,   920,   256,   921,
     1933     613,    43,    44,  1090,   928,   163,   983,   938,  1023,   209,
     1934     939,   353,   353,  1158,   209,   940,   954,   955,   659,   661,
     1935     956,   301,   957,   958,   686,   874,   959,   707,  1296,  1032,
     1936     106,  1162,   708,  1043,   960,   112,  -410,   397,   256,  -409,
     1937    1025,   586,  1029,  1053,   897,   897,   256,  1054,   613,  1055,
     1938      51,   478,  1056,  1064,  1074,   694,  1078,  1076,  1006,  1110,
     1939     877,  1081,    77,   678,   113,   923,  1084,  1134,    71,  1135,
     1940    1136,   678,   678,   678,  1137,  1149,   301,    50,   113,  1150,
     1941    1152,   301,  1153,   301,   301,  1161,   210,  1166,  1042,    -9,
     1942    1182,  -445,  1042,   337,   728,    64,    -3,   -11,   649,  1170,
     1943     512,  1172,   209,  1066,  1178,   512,  1199,  1036,   512,  1211,
     1944    1201,  1090,    70,   110,   486,   106,   112,  1204,   112,   112,
     1945    1087,   322,   322,  1088,  1209,  1089,    43,    44,  1216,   944,
     1946    1213,  1219,  1226,   110,  1230,   137,   138,   561,   561,  1232,
     1947    1234,  1235,  -297,  1240,   353,   301,    43,    44,   322,     8,
     1948       9,    10,    11,    12,  1222,   613,   337,  1236,    77,   608,
     1949     761,  1237,  1238,  1247,    71,   590,    39,   590,   171,   172,
     1950      42,  1256,  1414,  1006,   833,  1009,  1257,    58,  1262,    43,
     1951      44,    33,   209,    50,  1265,   613,  1266,   650,  1268,  1269,
     1952     613,   322,   608,  1277,  1282,  1289,   613,  1290,   209,   613,
     1953     613,  1291,  1066,   112,  1041,   367,   139,  1297,  1348,    36,
     1954     322,  1305,  1307,   686,  1067,   613,   388,   256,   389,  1303,
     1955    1310,   390,   209,  1311,   391,  1315,  1033,   392,   256,  1006,
     1956     393,   394,  1006,  1312,  1320,  1322,  1328,  1329,  1330,  1331,
     1957     877,   678,  1042,  1338,  1341,  1351,   215,   208,   113,  1090,
     1958    1352,  1090,  1090,  1273,  1367,   478,  1068,   317,    50,    50,
     1959    1360,  1361,   613,   887,   608,  1373,  1374,   112,   112,  1383,
     1960     694,   694,   322,    58,  1384,  -411,    64,   110,  1502,   897,
     1961    1387,  1398,  1403,  1006,  1087,  1405,  1407,  1088,  1006,  1089,
     1962      43,    44,  1408,  1043,  1423,   897,   106,  1415,   266,  1409,
     1963     432,  1424,   813,   337,  1425,  1428,  1353,   112,   686,  1426,
     1964    1066,  1433,   815,  1067,  1333,  1442,  1444,   586,  1006,   911,
     1965    1438,  1446,  1151,   911,   911,  1440,  1448,  1456,    77,  1450,
     1966    1458,  1479,  1457,   106,    71,    77,  1090,  1481,  1484,  1510,
     1967    1469,    71,   209,   561,  1487,  1155,  1157,  1159,  1042,  1488,
     1968     147,  1495,   613,  1511,   948,  1516,   206,   216,   148,   590,
     1969     149,  1523,  1525,  1512,  1527,    50,   112,   877,   897,   897,
     1970     209,   590,   461,  1533,  1540,   209,   112,  1541,  1348,  1165,
     1971     755,  1006,   756,   759,   757,  1348,  1006,   758,    77,  1086,
     1972      50,    50,   106,   158,    71,  1281,  1490,  1402,  1543,  1215,
     1973    1090,  1090,  1375,  1354,  1472,  1006,   874,  1006,   446,   431,
     1974    1171,  1006,   396,  1034,  1006,  1180,    50,   211,   364,  1366,
     1975     301,  1067,  1006,  1193,   899,  1062,  1006,  1083,   110,   841,
     1976     137,   138,   106,   209,   982,   892,  1298,   649,  1348,   483,
     1977    1454,    43,    44,    58,   337,  1061,   906,   209,   691,   113,
     1978      58,  1037,     0,     0,  1306,     0,   763,    39,   764,   178,
     1979     179,    42,     0,   887,   887,     0,   765,   211,   694,     0,
     1980      43,    44,   265,     0,     0,  1473,   106,  1477,     0,   113,
     1981     301,     0,   210,    67,   117,     0,     2,   202,     4,     5,
     1982       6,     7,     0,   337,     0,     0,   588,     0,   589,  1504,
     1983    1009,   397,     0,    58,    47,    48,     0,   211,   862,  1513,
     1984       0,  -298,  1506,     0,  1508,     0,     0,    67,     8,     9,
     1985      10,    11,    12,     0,     0,   337,   650,     0,     0,     0,
     1986       0,     0,     0,   874,   157,   210,     0,   209,     0,     0,
     1987     106,     0,   461,     0,     0,   630,   613,   613,  1371,   461,
     1988      33,     0,  1371,   217,    37,   468,    38,     0,  1538,  1068,
     1989    1539,     0,   106,     0,   301,     0,     0,   211,   127,   106,
     1990     128,   129,   130,  1546,  1547,     0,     0,     0,    36,     0,
     1991       0,    43,    44,     0,   447,     0,     0,     0,   249,     8,
     1992       9,    10,    11,    12,     8,     9,    10,    11,    12,   211,
     1993       0,     0,   461,     0,   211,     0,     0,   322,     0,     0,
     1994    1037,     0,  1037,   937,  1037,  1359,     0,     0,     0,     0,
     1995       0,    33,   106,   942,   943,   159,    33,     0,   323,   113,
     1996       0,  1476,     0,  1476,   953,   887,   249,   342,   190,     0,
     1997       0,   213,     0,     0,   223,   256,     0,    75,     0,    36,
     1998       0,     0,   815,     0,    36,   700,     0,   518,  1068,  1453,
     1999     709,   519,   520,   521,   395,     0,     0,     0,  1476,     0,
     2000    1476,  1388,     0,     0,  1396,     0,     0,     0,     0,     0,
     2001     415,    75,   337,   420,   422,   522,     0,   523,   157,   524,
     2002     525,     0,   211,   560,     0,   402,     0,     0,   886,     0,
     2003     589,    47,    48,     0,     0,     0,    47,    48,     0,   438,
     2004       0,   209,     0,   441,   404,   442,     0,   218,   448,   159,
     2005    1413,   412,     0,     0,    67,  1435,     0,     0,    39,   462,
     2006    1439,   365,    42,     0,     0,     0,     0,     0,     0,   469,
     2007       0,    43,    44,     0,     0,   301,     0,   422,     0,     0,
     2008    1260,  1261,     0,  1263,     0,   159,   113,     0,     0,  1267,
     2009    1461,     0,  1270,     0,  1037,     0,  1068,   782,     0,   589,
     2010       0,     0,   211,     0,     0,    47,    48,   613,     0,   159,
     2011       0,    39,   113,   171,   172,    42,     0,   404,     0,     0,
     2012       0,   434,     0,     0,    43,    44,     0,  1475,     0,  1475,
     2013       0,   345,   834,     0,     2,   202,     4,     5,     6,     7,
     2014       0,     0,   211,     0,     0,     0,   249,  1128,  1129,     0,
     2015     582,     0,     0,     0,     0,     0,   610,     0,     0,   613,
     2016     613,     0,     0,     0,  1475,   224,  1475,     0,     0,   615,
     2017       0,   301,     0,   615,     0,     0,   566,  1531,    39,     0,
     2018     178,   179,    42,  1531,     0,   570,     0,     0,   573,     0,
     2019       0,    43,    44,     0,  1531,   317,     0,     0,  1531,     0,
     2020    1037,     0,    37,   439,    38,   895,     0,  1174,  1175,   483,
     2021       0,   113,     0,     0,     0,     0,     0,  1035,    75,   402,
     2022       0,     0,   462,    75,     0,    47,    48,   365,     0,     0,
     2023       0,     0,     0,     0,     0,     0,   342,     0,  1036,     0,
     2024       0,   462,     0,     0,     0,     0,   404,     0,     0,   462,
     2025     412,     0,     0,     0,   261,   113,     0,    39,     0,   178,
     2026     179,    42,   211,     0,     0,     0,   673,     0,     0,   422,
     2027      43,    44,  1395,     0,     0,    39,   256,   178,   179,    42,
     2028       0,     0,     0,     0,   687,     0,    67,     0,    43,    44,
     2029     211,     0,   613,     0,     0,   211,   180,     0,   422,   365,
     2030      78,     0,   422,     0,    47,    48,     0,   261,     0,     0,
     2031       0,     0,     0,     0,  1035,     0,   402,     0,   110,   113,
     2032     218,     0,    47,    48,     0,  1087,     0,   404,  1088,   342,
     2033    1089,    43,    44,   518,    78,     0,     0,   519,   520,   521,
     2034     630,   113,     0,     0,   110,     0,   986,     0,   113,     0,
     2035     113,  1087,   113,   211,  1088,     0,  1089,    43,    44,  1316,
     2036       0,   522,     0,   523,     0,   524,  1280,   211,     0,     0,
     2037     219,     0,    59,    59,   766,     0,     0,     0,     0,     0,
     2038       0,  1051,  1501,     0,     0,  1318,    75,   113,     0,   113,
     2039       0,   615,   777,     0,     0,     0,     0,     0,     0,     0,
     2040     345,   113,     0,   794,     0,    75,    59,  1501,  1501,     0,
     2041       0,     0,     0,    75,  1321,     0,     0,     0,   301,   566,
     2042     566,   582,  1323,  1324,  1325,     0,   582,   630,     0,    80,
     2043     345,     0,   615,  1501,     0,   342,   342,   209,     0,    59,
     2044       0,     0,    59,     0,     0,     0,     0,     0,   345,     0,
     2045      75,   342,     0,     0,   347,     0,     0,   211,     0,     0,
     2046       0,     0,     0,    80,     8,     9,    10,    11,    12,     0,
     2047     673,     0,    39,     0,   178,   179,    42,     0,     0,     0,
     2048       0,   462,     0,     0,     0,    43,    44,     0,     0,     0,
     2049     209,     0,     0,   345,     0,   462,    33,     0,   342,   220,
     2050       0,   852,     0,     0,     0,   856,     0,   891,     0,     0,
     2051     422,  1500,     0,   402,     0,     0,     0,     0,     0,    47,
     2052      48,     0,     0,     0,    36,     0,   340,   986,     0,    39,
     2053       0,   178,   179,    42,    39,     0,   178,   179,    42,   687,
     2054       0,    78,    43,    44,     0,   322,    78,    43,    44,     0,
     2055       0,     0,     0,  1196,     0,     0,   345,     0,     0,     0,
     2056       0,     8,     9,    10,    11,    12,     0,     0,   588,     0,
     2057     589,     0,     0,   255,     0,   673,    47,    48,     0,     0,
     2058       0,    47,    48,   348,     0,   673,   673,     0,   615,    59,
     2059       0,   951,  1451,    33,     0,     0,   673,     0,     0,   345,
     2060     345,     0,     0,     0,     0,     0,   962,     0,     0,     0,
     2061       0,     0,     0,    59,     0,   345,     0,     0,     0,     0,
     2062       0,    36,     0,     0,     0,   566,    39,     0,   178,   179,
     2063      42,   211,     0,     0,   345,     0,     0,     0,     0,    43,
     2064      44,     0,     0,   219,     0,    75,     0,     0,     0,  1259,
     2065       0,     0,     0,     0,     0,     0,    67,     0,     0,    75,
     2066       0,     0,   345,     0,     0,  1035,     0,   402,     0,     0,
     2067      80,     0,     0,    47,    48,    80,     0,     0,     0,     0,
     2068     777,     0,   526,   527,   528,   529,   530,   531,   532,   533,
     2069     534,   535,   536,     0,     0,     0,     0,     0,     0,     0,
     2070    1058,     0,     0,   345,     0,     0,     0,     0,     0,    78,
     2071       0,     0,     0,     0,   422,   117,   537,     0,     0,     0,
     2072       0,     0,     0,   347,     0,     0,     0,     0,    78,   687,
     2073       0,     0,     0,     0,     0,     0,    78,     0,     0,   345,
     2074       0,     0,     0,     0,     0,     0,     0,     0,     0,   345,
     2075     345,     0,     0,   347,     0,   218,     0,     0,     0,     0,
     2076     345,   582,     0,     0,     8,     9,    10,    11,    12,     0,
     2077       0,   347,   220,    78,   420,     0,     0,     0,     0,   673,
     2078     673,     0,   342,   342,     0,     0,     0,     0,     0,     0,
     2079       0,     0,     0,     0,     0,   340,    33,  1101,     0,     0,
     2080      67,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2081       0,     0,     0,  1114,     0,     0,   347,     0,     0,     0,
     2082      75,     0,    86,     0,    36,   173,     0,     0,     0,    39,
     2083       0,   178,   179,    42,    33,     0,     0,     0,    80,   673,
     2084     673,     0,    43,    44,   345,    59,     0,     0,     0,     0,
     2085    1187,     0,   348,     0,     0,     0,    86,    80,     0,     0,
     2086       0,     0,    36,     0,     0,    80,     0,    39,   180,     0,
     2087     124,    42,   173,     0,     0,   173,    47,    48,     0,   347,
     2088      43,    44,   348,     0,     0,     0,     0,     0,   340,     0,
     2089       0,     0,   221,   345,     8,     9,    10,    11,    12,     0,
     2090     348,   404,    80,     0,     0,     0,    45,     0,     0,     0,
     2091       0,     0,     0,     0,    47,    48,     0,     0,   687,     0,
     2092       0,     0,   347,   347,     0,   234,    33,     0,     0,     0,
     2093       0,     0,     0,     0,     0,     0,     0,     0,   347,     0,
     2094     244,     0,   245,   345,   345,   348,   345,   345,     0,     0,
     2095       0,   340,     0,     0,    36,     0,     0,   347,     0,    39,
     2096       0,   178,   179,    42,    75,     0,     0,     0,    78,     0,
     2097       0,     0,    43,    44,     0,     0,   355,     0,     0,     0,
     2098     173,    67,    78,     0,     0,   347,     0,     0,     0,     0,
     2099       0,     0,     0,     0,   340,   340,     0,     0,  1500,     0,
     2100     402,     0,     0,   345,   345,     0,    47,    48,   348,     0,
     2101     340,   673,     0,   687,     0,     0,     0,     0,   117,     0,
     2102       0,     0,     0,     0,     0,     0,   347,   211,   173,   406,
     2103     407,     0,     0,     0,   411,     0,   413,   414,     0,     0,
     2104       0,   404,     0,     0,     0,     0,   673,     0,     0,     0,
     2105       0,   348,   348,     0,   673,   673,   673,   340,     0,     0,
     2106       0,     0,   347,    86,     0,   342,   342,   348,    86,     0,
     2107       0,     0,   347,   347,     0,     0,     0,  1347,   219,     0,
     2108     211,     0,   345,   347,     0,     0,   348,     0,     0,     0,
     2109       0,     0,     0,     0,     0,     0,     0,    80,     0,     0,
     2110       0,     0,     0,     0,     0,     0,   173,     0,     0,     0,
     2111       0,    80,     0,     0,   348,     0,     0,   117,     0,     0,
     2112       0,     0,     0,   173,     0,     0,     0,   173,     0,     0,
     2113       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
     2114       0,     0,     0,    78,     0,    75,     0,     0,  1364,     0,
     2115       0,     0,     0,     0,     0,   348,     0,     0,     0,     0,
     2116       0,  1400,    33,     0,     0,   221,     0,   347,     0,     0,
     2117       0,     0,     0,     0,     0,   345,     0,   345,     0,     0,
    20832118       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2084       76,     0,   395,     0,     0,     0,  1503,     0,  1505,     0,
    2085        0,     0,   414,   415,   215,     0,     0,   419,     0,   421,
    2086      422,     0,   412,     0,     0,     0,     0,   214,     0,     0,
    2087        0,     0,     0,     0,   350,     0,     0,    88,     0,     0,
    2088      353,   353,    88,     0,   356,     0,     0,     0,     0,     0,
    2089     1534,     0,  1535,     0,     0,     0,     0,     0,     0,   119,
    2090        0,  1227,     0,     0,     0,  1542,  1543,     0,   177,     0,
     2119      36,   348,     0,     0,     0,    39,     0,     0,   342,    42,
     2120       0,   348,   348,     0,     0,     0,     0,   220,    43,    44,
     2121     345,     0,   348,     0,     0,    59,   347,     0,   345,   345,
     2122     345,     0,     0,     0,   673,   117,     0,     0,     0,   345,
     2123     345,    86,     0,     0,   693,     0,     0,     0,     0,   340,
     2124     651,    75,    47,    48,     0,   355,     0,  1347,     0,     0,
     2125      86,     0,     0,     0,  1347,   164,     0,   169,    86,     0,
     2126     175,   176,   177,     0,     0,     0,   347,   347,     0,   347,
     2127     347,     0,    80,     0,    59,   355,     0,   229,     0,     8,
     2128       9,    10,    11,    12,     0,     0,     0,    78,   238,   239,
     2129       0,     0,     0,   355,     0,    86,   348,     0,     0,     0,
     2130       0,     0,     0,     0,     0,     0,     0,  1347,     0,     0,
     2131       0,    33,     0,     0,  1526,     0,     0,     0,     0,     0,
     2132       0,     0,     0,     0,     0,   218,   347,   347,     0,     0,
     2133       0,     0,     0,     0,     0,     0,     0,     0,   355,    36,
     2134       0,   340,   340,     0,    39,   348,   178,   179,    42,     0,
     2135       0,     0,     0,     0,     0,     0,     0,    43,    44,    59,
     2136       0,     0,   345,     0,     0,     0,     0,     0,     0,     0,
     2137       0,     0,     0,     0,     0,   173,     0,     0,     0,     0,
     2138       0,     0,   399,   255,     0,     0,     0,     0,   345,     0,
     2139     173,    47,    48,     0,     0,   348,   348,     0,   348,   348,
     2140       0,   355,     0,   173,     0,   347,   768,   769,     0,     0,
     2141       0,    75,     0,     0,     0,     0,    80,     0,    75,     0,
    20912142       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2092        0,     0,  1174,   216,     0,     0,     0,   356,   356,  1174,
    2093        0,     0,     0,     0,   355,   355,     0,   355,   355,     0,
     2143       0,     0,     0,   799,     0,     0,   802,   803,     0,   806,
     2144       0,   808,   809,     0,   355,   355,   810,   811,     0,     0,
     2145       0,     0,     0,     0,     0,   348,   348,     0,     0,     0,
     2146     355,     0,     0,     0,     0,     0,     0,     0,    78,     0,
     2147       0,    75,     0,     0,     0,     0,     0,     0,     0,   355,
     2148       0,     0,     0,     0,   851,     0,     0,     0,   855,     0,
     2149      86,     0,     0,     0,     0,     0,     0,     0,   347,     0,
     2150     347,     0,     0,     0,    86,     0,     0,   355,     0,     0,
     2151       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2152      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2153      25,    26,    27,   347,   348,     0,   580,     0,   587,     0,
     2154      59,   347,   347,   347,     0,    33,     0,     0,   355,   611,
     2155     612,     0,   347,   347,     0,     0,     0,     0,     0,     0,
     2156       0,     0,     0,     0,    78,     0,     0,     0,     0,   274,
     2157     275,     0,   276,    36,     0,     0,     0,    59,     0,     0,
     2158       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
     2159       0,     0,     0,     0,   355,   355,     0,    80,   277,     0,
     2160     221,     0,     0,     0,   278,   355,     0,     0,   279,   173,
     2161       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2162     286,   287,     0,     0,   340,   340,     0,   348,     0,   348,
     2163       0,     0,     0,     0,     0,     0,    59,     0,     0,     0,
     2164       0,     0,     0,   288,     0,   370,     0,     0,   219,     0,
     2165       0,    47,    48,   290,   291,   292,   293,     0,     0,     0,
     2166       0,     0,   348,     0,   760,    86,     0,     0,     0,     0,
     2167     348,   348,   348,     0,     0,     0,    59,     0,     0,     0,
     2168       0,   348,   348,     0,     0,   347,     0,     0,     0,   355,
     2169       0,     0,     0,    80,     0,     0,     0,     0,     0,     0,
     2170       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2171       0,   347,     0,     0,     0,     0,     0,     0,     0,    59,
     2172      59,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2173       0,     0,     0,     0,    78,     0,     0,     0,   355,     0,
     2174       0,    78,     0,     0,     0,     0,     0,     0,     0,     0,
     2175       0,     0,     0,     0,     0,     0,   173,   340,     0,   173,
     2176     173,   173,     0,     0,     0,     0,     0,     0,     0,     0,
     2177       0,     0,    59,     0,     0,     0,     0,   220,     0,     0,
     2178    1100,     0,     0,     0,    59,     0,     0,     0,   355,   355,
     2179       0,   355,   355,     0,    78,     0,  1113,     0,     0,  1117,
     2180    1120,     0,     0,     0,     0,     0,    59,     0,     0,    86,
     2181       0,     0,     0,    59,   348,     8,     9,    10,    11,    12,
     2182      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2183      23,    24,    25,    26,    27,  -299,     0,     0,     0,     0,
     2184     348,     0,     0,     0,     0,     0,     0,    33,   355,   355,
     2185       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2186       0,     0,     0,    80,     0,     0,    59,     0,     0,     0,
     2187      80,  1177,     0,     0,   879,    36,   880,     0,     0,     0,
     2188       0,     0,     0,   883,   884,     0,  -299,     0,   889,  1194,
     2189    1195,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2190       0,     0,     0,     0,     0,     0,   900,     0,     0,     0,
     2191       0,   904,     0,     0,     0,     0,     0,     0,     0,     0,
     2192       0,     0,     0,    80,     0,     0,     0,   355,     0,     0,
     2193       0,     0,   587,     0,   173,     0,     0,     0,     0,     0,
     2194       0,     0,     0,     0,     0,   162,     0,     0,     0,     0,
     2195     274,   275,  1117,   276,     0,     0,     0,     0,     0,     0,
     2196       0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
     2197       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
     2198       0,     0,     0,     0,     0,   278,     0,     0,     0,   279,
     2199      86,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2200       0,   286,   287,     0,     0,     0,     0,   162,     0,     0,
     2201       0,   262,  1283,     0,     0,     0,     0,     0,     0,     0,
     2202     355,     0,   355,     0,   288,   971,   370,   972,   973,   974,
     2203       0,  1293,    47,    48,   290,   291,   292,   293,   162,     0,
     2204       0,     0,     0,     0,     0,     0,  1024,     0,   361,   173,
     2205       0,   366,     0,     0,     0,   355,     0,     0,     0,     0,
     2206       0,     0,  1030,   355,   355,   355,     0,     0,     0,     0,
     2207       0,     0,     0,     0,   355,   355,     0,     0,     0,     0,
     2208       0,     0,     0,     0,     0,  1057,    86,     0,     0,     0,
     2209       0,     0,     0,     0,     0,     0,     0,     0,     0,   162,
     2210       0,     0,     0,     0,     0,   173,     0,     0,   173,     0,
     2211       0,   214,     0,     0,     0,     0,     0,     0,     0,     0,
     2212       0,     0,     0,     0,     0,     0,     0,  1085,     0,     0,
     2213       0,  1363,  1095,     0,   173,     0,     0,  1098,     0,     0,
     2214       0,     0,  1103,  1104,     0,     0,     0,  1106,   366,  1107,
     2215    1108,     0,     0,  1111,     0,   162,     0,     0,     0,   173,
     2216       0,     0,  1126,     0,   173,     0,     0,     0,     0,     0,
     2217     221,     0,     0,     0,     0,     0,     0,     0,  1140,  1141,
     2218       0,     0,   515,     0,     0,     0,     0,     0,     0,     0,
     2219       0,     0,     0,     0,   173,   162,     0,     0,     0,     0,
     2220       0,     0,     0,     0,     0,     0,     0,   355,     0,  1167,
     2221       0,     0,  1169,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2223       0,   585,     0,   355,     0,     0,   609,     0,     0,     0,
     2224       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2225       0,     0,     0,     0,     0,     0,    86,   173,     0,     0,
     2226       0,     0,   173,    86,     0,  1202,     0,     0,     0,     0,
     2227       0,  1206,  1207,     0,     0,     0,     0,     0,     0,     0,
     2228       0,   173,     0,   173,     0,     0,  1220,   173,     0,     0,
     2229     173,  1227,     0,     0,     0,     0,  1231,     0,   173,     0,
     2230       0,     0,   173,     0,     0,     0,     0,     0,     0,  1239,
     2231       0,   162,   162,     0,     0,     0,    86,   361,     0,     0,
     2232       0,     0,     0,     0,     0,  1246,     0,  1248,  1249,  1250,
     2233    1251,     0,     0,     0,     0,     0,     0,     0,   162,     0,
     2234       0,     0,  1258,     0,  1140,     0,     0,     0,     0,     0,
     2235       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2236       0,     0,     0,     0,     0,   690,     0,     0,     0,     0,
     2237       0,     0,     0,     0,  1285,  1286,     0,   207,     0,     0,
     2238       0,   162,     0,     0,     0,     0,   227,     0,   231,     0,
     2239     233,     0,     0,   515,     0,   515,   236,     0,   515,     0,
     2240     162,   515,     0,     0,     0,     0,     0,     0,     0,     0,
     2241     361,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2242       0,     0,     0,     0,     0,     0,     0,   207,     0,   231,
     2243     233,   236,     0,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,     0,     0,  1326,  1327,     0,     0,     0,     0,
     2245       0,     0,     0,     0,  1337,     0,     0,     0,     0,     0,
     2246       0,     0,   162,     0,     0,     0,     0,   207,     0,     0,
     2247       0,     0,     0,   361,     0,     0,   780,     0,     0,     0,
     2248       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2249      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2250      26,    27,   585,     0,    28,    29,    30,   585,     0,     0,
     2251       0,     0,     0,     0,    33,     0,   361,   361,     0,     0,
     2252       0,  1379,     0,  1380,  1381,  1382,     0,   207,     0,   231,
     2253     233,   236,   361,     0,     0,  1386,     0,     0,     0,     0,
     2254       0,     0,    36,  1397,     0,     0,   169,    39,     0,    40,
     2255      41,    42,     0,     0,     0,     0,     0,     0,     0,   207,
     2256      43,    44,     0,     0,   207,   515,     0,     0,     0,     0,
     2257       0,     0,     0,     0,     0,     0,  1420,     0,     0,   361,
     2258       0,   888,     0,     0,     0,     0,    45,     0,    46,     0,
     2259       0,     0,     0,     0,    47,    48,     8,     9,    10,    11,
     2260      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2261      22,    23,    24,    25,    26,    27,  -300,   126,     0,     0,
     2262     690,  1459,  1460,     0,     0,     0,     0,     0,    33,     0,
     2263       0,     0,     0,   207,  1465,     0,     0,     0,   154,     0,
     2264       0,  1465,     0,     0,     0,     0,     0,     0,     0,     0,
     2265       0,  1483,   207,     0,     0,     0,    36,   231,   233,     0,
     2266       0,     0,     0,     0,     0,   236,     0,  -300,     0,     0,
     2267       0,   609,   126,     0,  1499,     0,     0,     0,  1505,     0,
     2268       0,     0,     0,   241,     0,     0,     0,   126,     0,   126,
     2269       0,     0,     0,   246,     0,     0,     0,     0,     0,     0,
     2270       0,     0,     0,     0,     0,   207,     0,  1528,     0,  1529,
     2271       0,     0,     0,     0,   267,     0,     0,     0,     0,     0,
     2272       0,     0,     0,     0,     0,   207,     0,     0,     0,     0,
     2273     207,     0,   207,     0,     0,     0,     0,     0,  1544,  1545,
     2274       0,     0,     0,     0,     0,     0,  1548,  1549,   207,     0,
     2275       0,   207,   207,     0,     0,     0,     0,     0,   207,     0,
     2276     377,   361,     0,     0,     0,     0,   515,     0,     0,     0,
     2277       0,     0,   207,     0,   126,     0,   126,   126,     0,   207,
     2278       0,   126,   409,   126,   126,     0,     0,     0,     0,     0,
     2279       0,     0,     0,     0,     0,     0,   423,   162,     0,     0,
     2280       0,     0,     0,     0,     0,   428,     0,     0,     0,     0,
     2281     690,     0,     0,     0,     0,   436,     0,     0,     0,     0,
     2282       0,   961,     0,     0,     8,     9,    10,    11,    12,     0,
     2283       0,     0,     0,     0,   453,     0,     0,     0,     0,   463,
     2284       0,     0,   585,     0,     0,     0,     0,   126,     0,     0,
     2285       0,     0,   471,     0,   274,   275,    33,   276,     0,     0,
     2286     485,     0,   489,   361,   361,     0,     0,     0,     0,     0,
     2287       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2288       0,   516,     0,   277,    36,     0,     0,     0,     0,   278,
     2289       0,     0,   207,   279,     0,     0,   280,   281,   282,   283,
     2290     284,   285,    43,    44,     0,   286,   287,     0,     0,     0,
     2291       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2292     207,     0,     0,   575,     0,   207,     0,   579,   288,     0,
     2293     370,     0,     0,     0,     0,     0,   336,    48,   290,   291,
     2294     292,   293,     0,     0,     0,     0,   515,     0,     0,     0,
     2295       0,     0,     0,     0,     0,   622,     0,     0,     0,   623,
     2296     624,     0,   625,     0,     0,     0,     0,     0,     0,   636,
     2297     637,     0,   638,   639,     0,   640,     0,   641,     0,     0,
     2298       0,     0,     0,   207,     0,     0,     0,   126,     0,     0,
     2299       0,     0,     0,     0,   575,     0,     0,   207,     0,   690,
     2300       0,     0,   657,     0,     0,     0,     0,     0,     0,     0,
     2301       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2302       0,     0,     0,     0,     0,     0,   668,     0,     0,     0,
     2303       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2304     333,   356,     0,     0,     0,     0,     0,     0,     0,     0,
     2305       0,   682,     0,     0,     0,     0,     0,   685,     0,     0,
     2306       0,     0,   453,     0,     0,     0,     0,     0,     0,     0,
     2307       0,     0,   405,   515,     0,     0,   207,     0,     0,   405,
     2308       0,     0,     0,     0,     0,     0,     0,   207,     0,   274,
     2309     275,     0,   276,     0,   690,     0,     0,     0,     0,     0,
     2310       0,     0,   726,     0,   207,     0,     0,     0,     0,     0,
     2311       0,     0,     0,     0,     0,   737,     0,     0,   277,     0,
     2312       0,     0,     0,     0,   626,     0,   137,   138,   279,     0,
     2313       0,   280,   281,   282,   283,   284,   285,    43,    44,     0,
     2314     286,   287,     0,     0,     0,   405,   361,   361,     0,     0,
     2315       0,     0,   762,   126,   126,     0,     0,     0,     0,     0,
     2316       0,   772,     0,   288,   773,   627,     0,   628,   371,     0,
     2317       0,    47,    48,   290,   291,   292,   293,     0,     0,     0,
     2318     126,   793,     0,   126,   126,     0,   126,     0,   126,   126,
     2319       0,     0,     0,   126,   126,     0,     0,     0,     0,     0,
     2320       0,   207,     0,     0,   405,     0,     0,     0,     0,     0,
     2321       0,     0,     0,   405,   571,     0,   405,   574,     0,   832,
     2322       0,     0,     0,     0,   356,     0,     0,     0,   601,     0,
     2323       0,   126,     0,     0,     0,   126,     0,     0,     0,     0,
     2324       0,   214,     0,     0,     0,     0,     0,   619,     0,     0,
     2325       0,     0,     0,     0,     0,     0,   867,     0,     0,     0,
     2326       0,   207,     0,     0,     0,     0,     0,     0,     0,     0,
     2327       0,     0,   207,     0,   405,     0,     0,     0,   405,   361,
     2328       0,     0,     0,   241,     0,     0,     0,     0,     0,     0,
     2329       0,     0,     0,     0,   214,     0,     0,     0,     0,   901,
     2330     902,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2331     356,   916,     0,     0,     0,     0,     0,     0,     0,     0,
     2332       0,     0,     0,     0,     0,   929,     0,     0,     0,     0,
     2333     933,     0,     0,     0,     0,     0,     0,   515,     0,   515,
     2334       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2335       0,     0,     0,     0,     0,   405,     0,     0,   356,     0,
     2336       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
     2337       0,     0,     0,     0,   515,     0,   515,     0,     0,     0,
     2338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2339     966,     0,     0,     0,     0,     0,     0,   967,     0,     0,
     2340       0,     0,     0,   356,     0,   162,     0,     0,     0,     0,
     2341     969,     0,   970,     0,     0,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,     0,   980,     0,     0,     0,     0,
     2343       0,   984,     0,     0,     0,     0,     0,     0,     0,     0,
     2344       0,     0,  1026,     0,     0,     0,  1027,   405,   405,   315,
     2345       0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
     2346       0,     0,     0,     0,     0,   775,   356,     0,     0,     0,
     2347     373,   373,     0,     0,     0,   601,     0,   601,   601,     0,
     2348       0,     0,     0,     0,   601,     0,     0,     0,     0,     0,
     2349       0,     0,     0,     0,   812,   356,     0,   207,     0,     0,
     2350     356,     0,     0,     0,     0,     0,     0,     0,     0,   356,
     2351     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2352       0,     0,     0,     0,     0,   356,     0,   126,     0,   405,
     2353     853,     0,     0,   405,   857,     0,     0,     0,  1105,     0,
     2354       0,     0,   860,   126,     0,     0,   126,   126,     0,     0,
     2355       0,     0,     0,     0,     0,     0,     0,     0,   467,     0,
     2356       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2357       0,     0,   356,   601,     8,     9,    10,    11,    12,    13,
     2358      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2359      24,    25,    26,    27,     0,     0,    28,    29,    30,     0,
     2360       0,     0,     0,     0,  1168,     0,    33,   872,     0,     0,
     2361       0,     0,     0,   356,     0,     0,     0,     0,   126,     0,
     2362       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2363       0,   126,     0,     0,    36,     0,   126,   126,     0,     0,
     2364       0,    40,    41,     0,     0,     0,  1198,     0,     0,     0,
     2365       0,  1200,     0,   405,     0,     0,     0,   207,     0,     0,
     2366       0,  1205,     0,     0,     0,     0,     0,     0,     0,   601,
     2367       0,   601,     0,     0,     0,     0,   373,     0,     0,     0,
     2368     719,   601,     0,     0,   873,     0,    47,    48,     0,     0,
     2369       0,  1233,     0,     0,     0,     0,     0,     0,     0,   126,
     2370       0,     0,     0,     0,  1241,     0,     0,     0,  1242,     0,
     2371     207,  1243,     0,     0,     0,     0,     0,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,  1252,  1253,     0,
     2373       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2374       0,     0,     0,     0,     0,  1264,     0,     0,     0,   315,
     2375       0,     0,     0,     0,   356,     0,     0,     0,     0,   126,
     2376       0,   405,     0,     0,     0,     0,     0,     0,   684,     0,
     2377       0,     0,     0,   601,   601,     0,     0,     0,   126,     0,
     2378       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2379       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    20942380       0,     0,     0,   356,     0,     0,     0,     0,     0,     0,
    2095        0,   353,     0,     0,     0,    79,     0,     0,     0,     0,
    2096        0,   356,   177,     0,     0,     0,     0,     0,     0,     0,
    2097        0,     0,    81,     0,     0,     0,   226,     0,     0,     0,
    2098        0,  1174,     0,     0,     0,   168,     0,   173,  1522,     0,
    2099      179,   180,   181,   223,   183,   355,   355,     0,    81,     0,
    2100        0,   356,     0,     0,     0,     0,     0,     0,   234,     0,
    2101        0,     0,     0,    76,     0,     0,     0,     0,     0,     0,
    2102      249,   250,     0,     0,     0,     0,   353,     0,   353,     0,
    2103        0,     0,     0,     0,     0,     0,   356,   177,     0,     0,
    2104        0,     0,    88,   215,     0,     0,     0,     0,     0,     0,
    2105        0,     0,     0,     0,   177,   214,   363,     0,   177,     0,
    2106        0,    88,     0,   353,     0,     0,   355,     0,     0,    88,
    2107      353,   353,   353,     0,     0,     0,     0,     0,     0,   356,
    2108        0,   353,   353,     0,     0,     0,     0,   363,     0,   356,
    2109        0,     0,     0,     0,    76,   225,     0,     0,     0,     0,
    2110      356,     0,     0,     0,     0,   363,     0,    88,   224,     0,
    2111        0,   216,     8,     9,    10,    11,    12,     0,     0,     0,
    2112        0,   128,   128,   128,     0,     0,     0,     0,    79,     0,
    2113        0,     0,     0,   353,     0,     0,     0,     0,     0,     0,
    2114        0,   355,     0,   355,    33,     0,     0,     0,     0,   363,
    2115        0,     0,   214,     0,     0,     0,     0,     0,     0,     0,
    2116       81,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2117        0,     0,    36,     0,     0,     0,     0,    39,   355,   184,
    2118      185,    42,   356,     0,     0,   355,   355,   355,     0,   356,
    2119       43,    44,     0,   128,     0,   128,   355,   355,     0,     0,
    2120        0,     0,   353,     0,     0,     0,     0,     0,   216,    79,
    2121        0,     0,   363,     0,     0,     0,   596,     0,   597,     0,
    2122      276,     0,     0,     0,    47,    48,     0,     0,     0,     0,
    2123        0,   215,   788,   789,     0,     0,     0,     0,     0,     0,
    2124        0,     0,     0,     0,     0,     0,     0,     0,   355,     0,
    2125       76,     0,     0,     0,     0,   363,   363,    76,     0,   819,
    2126        0,     0,   822,   823,     0,   826,     0,   828,   829,     0,
    2127        0,   363,   830,   831,   588,   128,   595,     0,     0,     0,
    2128        0,     0,     0,   128,     0,   128,   128,   619,   620,   363,
    2129      128,     0,   128,   128,     0,     0,     0,     0,   356,   356,
    2130       88,   356,   356,     0,     0,     0,   177,     0,     0,    76,
    2131        0,     0,     0,     0,     0,     0,     0,   355,     0,    81,
    2132        0,   177,     0,     0,     0,     0,    88,     0,   215,   363,
    2133        0,     0,     0,     0,   177,     0,     0,     0,     0,     0,
    2134        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2135        0,     0,     0,     0,     0,     0,     0,     0,     0,   356,
    2136      356,     0,   128,     0,   363,    79,     0,     0,     0,     0,
    2137        0,     0,    79,     0,     1,     2,   207,     4,     5,     6,
     2381       0,   723,     0,     0,  1313,     0,     0,     0,     0,     0,
     2382       0,   732,     0,     0,     0,   405,  1102,   723,     0,     0,
     2383     723,     0,     0,     0,     0,   356,   207,   500,     0,   502,
     2384     505,   405,  1115,   741,   601,   601,  1122,     0,     0,   508,
     2385     509,     0,     0,     0,     0,     0,   356,   356,     0,     0,
     2386       0,     0,     0,     0,   502,   502,     0,     0,     0,     0,
     2387       0,     0,     0,   770,     0,     0,     0,     0,   126,     0,
     2388     338,     0,     0,     0,   732,     0,     0,     0,     0,     0,
     2389       0,  1368,     0,  1369,     0,     0,     0,     0,     0,     0,
     2390     502,     0,     0,     0,     0,     0,     0,     0,  1377,     0,
     2391    1378,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2392     405,     0,   405,     0,   405,  1385,     0,     0,     0,   405,
     2393     831,     0,     0,     0,     0,   502,     0,     0,   373,     0,
     2394       0,     0,     0,  1404,  1406,   601,     0,     0,     0,     0,
     2395       0,     0,     0,     0,  1411,     0,     0,     0,     0,  1412,
     2396       0,     0,  1205,     0,     0,     0,     0,     0,     0,     0,
     2397       0,     0,     0,     0,     0,     0,     0,     0,   274,   275,
     2398       0,   276,     0,  1434,     0,     0,     0,     0,     0,     0,
     2399       0,     0,   356,  1441,     0,     0,  1443,     0,  1445,  1447,
     2400    1449,     0,     0,   893,     0,     0,     0,   277,     0,     0,
     2401       0,     0,     0,   278,     0,     0,     0,   279,     0,   723,
     2402     280,   281,   282,   283,   284,   285,    43,    44,     0,   286,
     2403     287,   732,     0,   922,     0,     0,   925,     0,     0,  1480,
     2404       0,  1482,   932,     0,  1205,     0,     0,     0,     0,     0,
     2405       0,     0,   288,     0,   370,     0,     0,   371,     0,  1494,
     2406      47,    48,   290,   291,   292,   293,     0,     0,     0,   405,
     2407       0,     0,     0,     0,   405,     0,     0,     0,     0,     0,
     2408       0,     0,   949,   950,     0,     0,     0,   356,     0,     0,
     2409       0,     0,     0,     0,     0,     0,     0,     0,   338,     0,
     2410       0,     0,     0,     0,   502,   502,   502,   502,   502,   502,
     2411     502,   502,   502,   502,   502,   502,   502,   502,   502,   502,
     2412     502,   502,     0,     0,     0,     0,     0,     0,     0,     0,
     2413       0,     0,     0,     0,     0,     0,     0,   978,     0,   356,
     2414     356,   373,     0,     0,   201,     2,   202,     4,     5,     6,
    21382415       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    21392416      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    2140       27,     0,     0,    28,    29,    30,    31,   363,   956,   957,
    2141       32,   283,   284,    33,   285,     0,     0,   363,     0,     0,
    2142        0,     0,     0,   226,    79,     0,     0,     0,   363,     0,
    2143      356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2144      286,    36,     0,    37,     0,    38,   287,     0,    40,    41,
    2145      288,     0,     0,   289,   290,   291,   292,   293,   294,    43,
    2146       44,     0,   295,   296,     0,     0,     0,     0,     0,     0,
    2147        0,     0,   225,     0,     0,     0,     0,     0,     0,     0,
    2148        0,     0,     0,   283,   284,   297,   285,   298,    88,     0,
    2149        0,     0,    81,    47,    48,   299,   300,   301,   302,     0,
    2150        0,     0,     0,     0,     0,   356,     0,   356,  -134,     0,
    2151      363,     0,   286,     0,     0,     0,     0,   363,   287,     0,
    2152        0,     0,   288,     0,     0,   289,   290,   291,   292,   293,
    2153      294,    43,    44,     0,   295,   296,     0,     0,     0,     0,
    2154        0,     0,   356,     0,     0,     0,     0,     0,     0,   356,
    2155      356,   356,   177,     0,     0,     0,     0,   297,     0,   378,
    2156      356,   356,   379,     0,  1077,    47,    48,   299,   300,   301,
    2157      302,     0,     0,    81,   465,     2,   207,     4,     5,     6,
     2417      27,     0,   338,    28,    29,    30,   405,  1365,     0,     0,
     2418     405,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2419       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2420       0,     0,     0,     0,     0,     0,     0,     0,   315,     0,
     2421       0,    36,     0,    37,     0,    38,    39,     0,   203,    41,
     2422      42,   338,     0,     0,     0,     0,     0,     0,   373,    43,
     2423      44,     0,     0,   925,     0,  1124,   723,     0,     8,     9,
     2424      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
     2425       0,     0,     0,     0,     0,    45,  1109,   204,     0,     0,
     2426       0,     0,     0,    47,    48,     0,   502,  1127,   274,   275,
     2427      33,   276,   356,     0,     0,     0,     0,     0,     0,     0,
     2428       0,     0,     0,     0,     0,     0,     0,   373,     0,  1144,
     2429       0,     0,     0,   502,     0,     0,     0,   277,    36,     0,
     2430       0,     0,     0,   278,   925,   925,     0,   279,     0,     0,
     2431     280,   281,   282,   283,   284,   285,    43,    44,     0,   286,
     2432     287,     0,     0,   502,     0,     0,     0,     0,     0,     0,
     2433    1173,     0,   274,   275,     0,   276,     0,     0,     0,     0,
     2434       0,     0,   288,     0,   370,     0,     0,     0,     0,     0,
     2435    1125,    48,   290,   291,   292,   293,     0,     0,     0,     0,
     2436       0,   277,   405,     0,     0,     0,     0,   278,     0,     0,
     2437       0,   279,     0,     0,   280,   281,   282,   283,   284,   285,
     2438      43,    44,     0,   286,   287,     0,     0,   405,   405,   925,
     2439       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2440       0,     0,     0,     0,     0,     0,   288,     0,   370,     0,
     2441     831,   923,     0,   405,    47,    48,   290,   291,   292,   293,
     2442       0,     0,     0,     0,     0,     0,     0,     0,  1244,  1245,
     2443       0,     0,     0,     0,     0,     0,     0,     0,     1,     2,
     2444     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2445      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2446      23,    24,    25,    26,    27,     0,     0,    28,    29,    30,
     2447      31,     0,     0,   502,    32,   274,   275,    33,   276,     0,
     2448       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2449       0,     0,     0,     0,     0,     0,     0,     0,     0,   502,
     2450       0,     0,     0,     0,   277,    36,     0,    37,     0,    38,
     2451     278,   502,    40,    41,   279,     0,     0,   280,   281,   282,
     2452     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2453       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2454       0,     0,     0,     0,     0,     0,     0,     0,     0,   288,
     2455     502,   289,     0,     0,     0,     0,     0,    47,    48,   290,
     2456     291,   292,   293,     0,     0,     0,     0,     0,     0,     0,
     2457       0,     0,  -134,     0,     0,     0,     0,     0,     0,     0,
     2458       0,     0,     0,  1357,     0,   723,     0,     0,     0,     0,
     2459       0,     0,     0,     0,     0,     0,     0,     0,     0,   502,
     2460       0,     0,     0,     0,     0,     0,     1,     2,   202,     4,
     2461       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2462      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2463      25,    26,    27,     0,     0,    28,    29,    30,    31,     0,
     2464       0,   502,    32,   274,   275,    33,   987,   988,     0,   989,
     2465       0,     0,   990,   991,   992,   993,   994,   995,   996,   997,
     2466       0,     0,     0,   998,     0,     0,     0,   999,  1000,     0,
     2467      35,     0,   277,    36,     0,    37,     0,    38,  1001,     0,
     2468    1002,  1003,  1004,     0,     0,   280,   281,   282,   283,   284,
     2469     285,    43,    44,     0,   286,   287,     0,     0,     0,     0,
     2470       0,   502,   502,     0,     0,     0,     0,     0,     0,     0,
     2471       0,     0,     0,     0,     0,     0,     0,   288,     0,   289,
     2472       0,     0,   168,     0,     0,    47,    48,   290,   291,   292,
     2473     293,     0,     0,     0,     0,  1005,     0,     0,     0,     0,
     2474    -134,     0,     0,     1,     2,   202,     4,     5,     6,     7,
     2475       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2476      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     2477       0,     0,    28,    29,    30,    31,     0,     0,     0,    32,
     2478     274,   275,    33,   276,     0,     0,     0,     0,     0,     0,
     2479       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2480       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
     2481      36,     0,    37,     0,    38,   278,   315,    40,    41,   279,
     2482       0,     0,   280,   281,   282,   283,   284,   285,    43,    44,
     2483       0,   286,   287,     0,     0,     0,     0,     0,     0,     0,
     2484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2485       0,     0,     0,     0,   288,     0,   289,     0,     0,     0,
     2486       0,     0,    47,    48,   290,   291,   292,   293,     0,     0,
     2487       0,     0,     0,     0,     0,     2,   202,     4,     5,     6,
    21582488       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    21592489      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    21602490      27,     0,     0,    28,    29,    30,     0,     0,     0,     0,
    2161        0,     0,   356,    33,     0,     0,     0,     0,     0,     0,
    2162        0,     0,     0,   913,     0,   914,   363,   363,     0,   363,
    2163      363,     0,   917,   918,     0,     0,     0,   923,     0,     0,
    2164        0,    36,     0,    37,     0,    38,     0,    88,    40,    41,
    2165      929,     0,     0,     0,     0,   933,     0,     0,     0,     0,
    2166        0,     0,     0,     0,     0,   128,   128,     0,     0,     0,
     2491       0,   274,   275,    33,   276,     8,     9,    10,    11,    12,
     2492      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2493      23,    24,    25,    26,    27,     0,   502,    28,    29,    30,
     2494     277,    36,     0,    37,     0,    38,   278,    33,    40,    41,
     2495     279,     0,   502,   280,   281,   282,   283,   284,   285,    43,
     2496      44,     0,   286,   287,     0,     0,     0,     0,     0,     0,
     2497       0,     0,     0,     0,     0,    36,     0,     0,     0,     0,
     2498       0,     0,    40,    41,     0,   288,     0,   335,     0,     0,
     2499       0,     0,   731,   336,    48,   290,   291,   292,   293,     2,
     2500     202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2501      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2502      23,    24,    25,    26,    27,   502,   502,    28,    29,    30,
     2503       0,     0,     0,     0,     0,   274,   275,    33,   276,     8,
     2504       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2505      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2506       0,    28,    29,    30,   277,    36,     0,    37,     0,    38,
     2507     278,    33,    40,    41,   279,     0,     0,   280,   281,   282,
     2508     283,   284,   285,    43,    44,     0,   286,   287,     0,     0,
     2509       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
     2510       0,     0,     0,     0,     0,     0,   203,    41,     0,   288,
     2511       0,   335,     0,     0,     0,     0,   731,    47,    48,   290,
     2512     291,   292,   293,     2,   202,     4,     5,     6,     7,     8,
     2513       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2514      19,    20,    21,    22,    23,    24,    25,    26,    27,     0,
     2515       0,    28,    29,    30,     0,     0,     0,     0,     0,   274,
     2516     275,    33,   276,     0,     0,     0,     0,     0,     0,     0,
    21672517       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2168        0,   356,   595,     0,     0,     0,     0,   363,   363,     0,
    2169       -3,     0,   128,     0,     0,   128,   128,     0,   128,     0,
    2170      128,   128,     0,     0,     0,   128,   128,     0,     0,     0,
    2171        0,     0,     0,     0,   177,     0,     0,   177,   177,   177,
    2172        0,     0,     0,     0,  1203,     0,     0,     0,     0,    81,
    2173        0,     0,     0,     0,     0,     0,    81,   166,     0,     8,
    2174        9,    10,    11,    12,     0,     0,     0,     0,     0,     0,
    2175        0,     0,     0,     0,   219,     0,     0,     0,   363,     8,
    2176        9,    10,    11,    12,     0,     0,     0,     0,     0,     0,
    2177        0,    33,     0,     0,     0,  1006,     0,  1007,  1008,  1009,
    2178        0,     0,     0,     0,     0,     0,     0,     0,    81,     0,
    2179        0,    33,     0,     0,     0,     0,  1059,     0,     0,    36,
    2180      226,   166,     0,     0,    39,   273,   184,   185,    42,     0,
    2181     1065,     0,     0,     0,     0,     0,     0,    43,    44,    36,
    2182       88,     0,     0,     0,    39,     0,   184,   185,    42,     0,
    2183        0,     0,     0,   363,   166,   363,     0,    43,    44,     0,
    2184        0,   128,   128,   893,   369,   410,     0,   374,     0,  1085,
    2185        0,    47,    48,     0,     0,     0,     0,  1295,     0,     0,
    2186        0,     0,     0,  1497,     0,   410,     0,     0,     0,     0,
    2187      363,    47,    48,     0,     0,     0,     0,   363,   363,   363,
    2188        0,     0,     0,     0,   177,     0,     0,     0,   363,   363,
    2189        0,     0,  1115,     0,     0,     0,   166,  11