Changeset 413f7f8


Ignore:
Timestamp:
Jul 7, 2015, 1:49:58 PM (10 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
82dd287
Parents:
e0ff3e6 (diff), 8686f31 (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:software/cfa/cfa-cc

Files:
10 added
25 edited

Legend:

Unmodified
Added
Removed
  • include/bfd.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Thu Jan  8 15:50:56 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 07:54:59 2015
    13 // Update Count     : 5
     12// Last Modified On : Sun Jun 28 09:07:14 2015
     13// Update Count     : 7
    1414
    1515// This include file uses the CFA keyword "type" as a field name of a structure.
    1616// The name is changed only for the include file.
    1717
     18#ifndef type    // nesting ?
    1819#define type `type`
    19 #include_next <math.h>
     20#define __CFA_BFD_H__
     21#endif // type
     22#include_next <bfd.h>
     23#ifdef __CFA_BFD_H__
    2024#undef type
     25#endif // __CFA_BFD_H__
    2126
    2227// Local Variables: //
  • include/math.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Mon Nov 10 23:41:29 2014
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 07:55:52 2015
    13 // Update Count     : 3
     12// Last Modified On : Sun Jun 28 09:05:22 2015
     13// Update Count     : 6
    1414
    1515// This include file uses the CFA keyword "type" as a field name of a structure.
    1616// The name is changed only for the include file.
    1717
     18#ifndef type    // nesting ?
    1819#define type `type`
     20#define __CFA_MATH_H__
     21#endif // type
    1922#include_next <math.h>
     23#ifdef __CFA_MATH_H__
    2024#undef type
     25#endif // __CFA_MATH_H__
    2126
    2227// Local Variables: //
  • src/CodeGen/CodeGenerator.cc

    re0ff3e6 r413f7f8  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:11:41 2015
    13 // Update Count     : 143
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jun 26 16:52:58 2015
     13// Update Count     : 144
    1414//
    1515
     
    269269             
    270270                                  case OT_CONSTANT:
    271                                         // there are no intrinsic definitions of 0 or 1 as functions
     271                                  case OT_LABELADDRESS:
     272                                        // there are no intrinsic definitions of 0/1 or label addresses as functions
    272273                                        assert( false );
    273274                                }
  • src/Common/utility.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 14:43:54 2015
    13 // Update Count     : 13
     12// Last Modified On : Thu Jul  2 18:04:41 2015
     13// Update Count     : 16
    1414//
    1515
     
    8686}
    8787
    88 static inline std::string assign_strptr( std::string *str ) {
     88static inline std::string assign_strptr( const std::string *str ) {
    8989        if ( str == 0 ) {
    9090                return "";
     
    9797}
    9898
    99 template< class T, typename ResultType, ResultType (T::* memfunc)() >
     99template< class T, typename ResultType, ResultType( T::* memfunc )() >
    100100ResultType dispatch( T *pT ) {
    101101        return (pT->*memfunc)();
  • src/ControlStruct/LabelFixer.h

    re0ff3e6 r413f7f8  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Jun 23 15:47:25 2015
    13 // Update Count     : 28
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jun 29 17:24:39 2015
     13// Update Count     : 29
    1414//
    1515
     
    9494                        }
    9595
    96                         void add_uses ( Entry &other ) { usage.insert( usage.end(), other.usage.begin(), usage.end() ); }
     96                        void add_uses ( Entry &other ) { usage.insert( usage.end(), other.usage.begin(), other.usage.end() ); }
    9797                  private:
    9898                        Label label; 
  • src/ControlStruct/MLEMutator.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jun 04 15:12:33 2015
    13 // Update Count     : 173
     12// Last Modified On : Sat Jun 27 10:56:14 2015
     13// Update Count     : 174
    1414//
    1515
     
    143143                        if ( enclosingLoops.empty() ) {
    144144                                throw SemanticError( "'continue' outside a loop" );
    145                         } else if ( std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
     145                        } else if ( branchStmt->get_target() != "" && std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
    146146                                throw SemanticError( "'continue' target label must be an enclosing loop: " + originalTarget );
    147147                        }
  • src/GenPoly/Box.cc

    re0ff3e6 r413f7f8  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 09:12:19 2015
    13 // Update Count     : 4
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jun 24 16:19:07 2015
     13// Update Count     : 10
    1414//
    1515
     
    366366                                } else {
    367367                                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
    368                                         newObj->get_type()->get_qualifiers() = Type::Qualifiers();
     368                                        newObj->get_type()->get_qualifiers() = Type::Qualifiers(); // TODO: is this right???
    369369                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
    370370                                        UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
  • src/MakeLibCfa.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 10:33:33 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 10:40:44 2015
    13 // Update Count     : 13
     12// Last Modified On : Fri Jun 26 16:52:59 2015
     13// Update Count     : 14
    1414//
    1515
     
    7878                        }
    7979                  case CodeGen::OT_CONSTANT:
     80                  case CodeGen::OT_LABELADDRESS:
     81                        // there are no intrinsic definitions of 0/1 or label addresses as functions
    8082                        assert( false );
    8183                } // switch
  • src/Parser/DeclarationNode.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 24 15:29:19 2015
    13 // Update Count     : 86
     12// Last Modified On : Fri Jul  3 12:35:02 2015
     13// Update Count     : 108
    1414//
    1515
     
    173173}
    174174
    175 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields ) {
     175DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) {
    176176        DeclarationNode *newnode = new DeclarationNode;
    177177        newnode->type = new TypeData( TypeData::Aggregate );
    178178        newnode->type->aggregate->kind = kind;
    179179        newnode->type->aggregate->name = assign_strptr( name );
    180         if ( newnode->type->aggregate->name == "" ) {
     180        if ( newnode->type->aggregate->name == "" ) {           // anonymous aggregate ?
    181181                newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    182         } // if
    183 
    184         // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified by
    185         // "struct"
    186         typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
    187         DeclarationNode *typedf = new DeclarationNode;
    188         typedf->name = newnode->type->aggregate->name;
    189         newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
    190 
    191         newnode->type->aggregate->params = formals;
     182        } else {
     183                // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified
     184                // by "struct"
     185                typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
     186                DeclarationNode *typedf = new DeclarationNode;
     187                typedf->name = newnode->type->aggregate->name;
     188                newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
     189        } // if
    192190        newnode->type->aggregate->actuals = actuals;
    193         newnode->type->aggregate->members = fields;
     191        newnode->type->aggregate->fields = fields;
    194192        return newnode;
    195193}
     
    200198        newnode->type = new TypeData( TypeData::Enum );
    201199        newnode->type->enumeration->name = newnode->name;
    202         if ( newnode->type->enumeration->name == "" ) {
     200        if ( newnode->type->enumeration->name == "" ) {         // anonymous enumeration ?
    203201                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    204         } // if
    205 
    206         // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be qualified
    207         // by "enum"
    208         typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
    209         DeclarationNode *typedf = new DeclarationNode;
    210         typedf->name = newnode->type->enumeration->name;
    211         newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
    212 
     202        } else {
     203                // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be
     204                // qualified by "enum"
     205                typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
     206                DeclarationNode *typedf = new DeclarationNode;
     207                typedf->name = newnode->type->enumeration->name;
     208                newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
     209        } // if
    213210        newnode->type->enumeration->constants = constants;
    214211        return newnode;
     
    251248        newnode->type->aggregate->kind = Context;
    252249        newnode->type->aggregate->params = params;
    253         newnode->type->aggregate->members = asserts;
     250        newnode->type->aggregate->fields = asserts;
    254251        newnode->type->aggregate->name = assign_strptr( name );
    255252        return newnode;
     
    371368                                        if ( type->kind == TypeData::Aggregate ) {
    372369                                                type->aggregate->params = q->type->forall;
     370                                                // change implicit typedef from TYPEDEFname to TYPEGENname
     371                                                typedefTable.changeKind( type->aggregate->name, TypedefTable::TG );
    373372                                        } else {
    374373                                                type->forall = q->type->forall;
     
    407406                                src = 0;
    408407                                break;
    409 
    410408                          case TypeData::Basic:
    411409                                dst->qualifiers.splice( dst->qualifiers.end(), src->qualifiers );
     
    416414                                } // if
    417415                                break;
    418 
    419416                          default:
    420417                                switch ( src->kind ) {
     
    429426                                        src = 0;
    430427                                        break;
    431 
    432428                                  default:
    433429                                        if ( dst->forall ) {
     
    684680                } else {
    685681                        assert( newnode->type->aggInst->aggregate->kind == TypeData::Aggregate );
    686                         delete newnode->type->aggInst->aggregate->aggregate->members;
    687                         newnode->type->aggInst->aggregate->aggregate->members = 0;
     682                        delete newnode->type->aggInst->aggregate->aggregate->fields;
     683                        newnode->type->aggInst->aggregate->aggregate->fields = 0;
    688684                } // if
    689685        } // if
     
    710706                                } else {
    711707                                        assert( newType->aggInst->aggregate->kind == TypeData::Aggregate );
    712                                         delete newType->aggInst->aggregate->aggregate->members;
    713                                         newType->aggInst->aggregate->aggregate->members = 0;
     708                                        delete newType->aggInst->aggregate->aggregate->fields;
     709                                        newType->aggInst->aggregate->aggregate->fields = 0;
    714710                                } // if
    715711                        } // if
  • src/Parser/ParseNode.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun 24 14:09:51 2015
    13 // Update Count     : 81
     12// Last Modified On : Thu Jul  2 17:57:05 2015
     13// Update Count     : 84
    1414//
    1515
     
    287287        static DeclarationNode *newForall( DeclarationNode *);
    288288        static DeclarationNode *newFromTypedef( std::string *);
    289         static DeclarationNode *newAggregate( Aggregate kind, std::string *name, DeclarationNode *formals, ExpressionNode *actuals, DeclarationNode *fields );
     289        static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields );
    290290        static DeclarationNode *newEnum( std::string *name, DeclarationNode *constants );
    291291        static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
  • src/Parser/TypeData.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 22:06:23 2015
    13 // Update Count     : 21
     12// Last Modified On : Fri Jun 26 07:30:06 2015
     13// Update Count     : 26
    1414//
    1515
     
    5353                aggregate->params = 0;
    5454                aggregate->actuals = 0;
    55                 aggregate->members = 0;
     55                aggregate->fields = 0;
    5656                break;
    5757          case AggregateInst:
     
    119119                delete aggregate->params;
    120120                delete aggregate->actuals;
    121                 delete aggregate->members;
     121                delete aggregate->fields;
    122122                delete aggregate;
    123123                break;
     
    190190                newtype->aggregate->params = maybeClone( aggregate->params );
    191191                newtype->aggregate->actuals = maybeClone( aggregate->actuals );
    192                 newtype->aggregate->members = maybeClone( aggregate->members );
     192                newtype->aggregate->fields = maybeClone( aggregate->fields );
    193193                newtype->aggregate->name = aggregate->name;
    194194                newtype->aggregate->kind = aggregate->kind;
     
    237237        if ( forall ) {
    238238                os << "forall " << endl;
    239                 forall->printList( os, indent+4 );
     239                forall->printList( os, indent + 4 );
    240240        } // if
    241241
     
    277277                os << "function" << endl;
    278278                if ( function->params ) {
    279                         os << string( indent+2, ' ' ) << "with parameters " << endl;
    280                         function->params->printList( os, indent+4 );
     279                        os << string( indent + 2, ' ' ) << "with parameters " << endl;
     280                        function->params->printList( os, indent + 4 );
    281281                } else {
    282                         os << string( indent+2, ' ' ) << "with no parameters " << endl;
     282                        os << string( indent + 2, ' ' ) << "with no parameters " << endl;
    283283                } // if
    284284                if ( function->idList ) {
    285                         os << string( indent+2, ' ' ) << "with old-style identifier list " << endl;
    286                         function->idList->printList( os, indent+4 );
     285                        os << string( indent + 2, ' ' ) << "with old-style identifier list " << endl;
     286                        function->idList->printList( os, indent + 4 );
    287287                } // if
    288288                if ( function->oldDeclList ) {
    289                         os << string( indent+2, ' ' ) << "with old-style declaration list " << endl;
    290                         function->oldDeclList->printList( os, indent+4 );
    291                 } // if
    292                 os << string( indent+2, ' ' ) << "returning ";
     289                        os << string( indent + 2, ' ' ) << "with old-style declaration list " << endl;
     290                        function->oldDeclList->printList( os, indent + 4 );
     291                } // if
     292                os << string( indent + 2, ' ' ) << "returning ";
    293293                if ( base ) {
    294                         base->print( os, indent+4 );
     294                        base->print( os, indent + 4 );
    295295                } else {
    296296                        os << "nothing ";
     
    298298                os << endl;
    299299                if ( function->hasBody ) {
    300                         os << string( indent+2, ' ' ) << "with body " << endl;
     300                        os << string( indent + 2, ' ' ) << "with body " << endl;
    301301                } // if
    302302                if ( function->body ) {
    303                         function->body->printList( os, indent+2 );
     303                        function->body->printList( os, indent + 2 );
    304304                } // if
    305305                break;
     
    307307                os << DeclarationNode::aggregateName[ aggregate->kind ] << ' ' << aggregate->name << endl;
    308308                if ( aggregate->params ) {
    309                         os << string( indent+2, ' ' ) << "with type parameters " << endl;
    310                         aggregate->params->printList( os, indent+4 );
     309                        os << string( indent + 2, ' ' ) << "with type parameters " << endl;
     310                        aggregate->params->printList( os, indent + 4 );
    311311                } // if
    312312                if ( aggregate->actuals ) {
    313                         os << string( indent+2, ' ' ) << "instantiated with actual parameters " << endl;
    314                         aggregate->actuals->printList( os, indent+4 );
    315                 } // if
    316                 if ( aggregate->members ) {
    317                         os << string( indent+2, ' ' ) << "with members " << endl;
    318                         aggregate->members->printList( os, indent+4 );
     313                        os << string( indent + 2, ' ' ) << "instantiated with actual parameters " << endl;
     314                        aggregate->actuals->printList( os, indent + 4 );
     315                } // if
     316                if ( aggregate->fields ) {
     317                        os << string( indent + 2, ' ' ) << "with members " << endl;
     318                        aggregate->fields->printList( os, indent + 4 );
    319319///     } else {
    320 ///       os << string( indent+2, ' ' ) << "with no members " << endl;
     320///       os << string( indent + 2, ' ' ) << "with no members " << endl;
    321321                } // if
    322322                break;
     
    329329                } // if
    330330                if ( aggInst->params ) {
    331                         os << string( indent+2, ' ' ) << "with parameters " << endl;
    332                         aggInst->params->printList( os, indent+2 );
     331                        os << string( indent + 2, ' ' ) << "with parameters " << endl;
     332                        aggInst->params->printList( os, indent + 2 );
    333333                } // if
    334334                break;
     
    337337                if ( enumeration->constants ) {
    338338                        os << "with constants" << endl;
    339                         enumeration->constants->printList( os, indent+2 );
     339                        enumeration->constants->printList( os, indent + 2 );
    340340                } // if
    341341                break;
     
    354354                } // if
    355355                if ( symbolic->params ) {
    356                         os << endl << string( indent+2, ' ' ) << "with parameters" << endl;
     356                        os << endl << string( indent + 2, ' ' ) << "with parameters" << endl;
    357357                        symbolic->params->printList( os, indent + 2 );
    358358                } // if
    359359                if ( symbolic->assertions ) {
    360                         os << endl << string( indent+2, ' ' ) << "with assertions" << endl;
     360                        os << endl << string( indent + 2, ' ' ) << "with assertions" << endl;
    361361                        symbolic->assertions->printList( os, indent + 4 );
    362                         os << string( indent+2, ' ' );
     362                        os << string( indent + 2, ' ' );
    363363                } // if
    364364                if ( base ) {
     
    370370                os << DeclarationNode::typeClassName[ variable->tyClass ] << " variable ";
    371371                if ( variable->assertions ) {
    372                         os << endl << string( indent+2, ' ' ) << "with assertions" << endl;
     372                        os << endl << string( indent + 2, ' ' ) << "with assertions" << endl;
    373373                        variable->assertions->printList( os, indent + 4 );
    374                         os << string( indent+2, ' ' );
     374                        os << string( indent + 2, ' ' );
    375375                } // if
    376376                break;
     
    405405        switch ( kind ) {
    406406          case Aggregate:
    407                 if ( ! toplevel && aggregate->members ) {
     407                if ( ! toplevel && aggregate->fields ) {
    408408                        ret = clone();
    409409                        ret->qualifiers.clear();
     
    515515                assert( false );
    516516        } // switch
    517 
    518517        return 0;
    519518}
     
    815814        } // switch
    816815        buildList( aggregate->params, at->get_parameters() );
    817         buildList( aggregate->members, at->get_members() );
     816        buildList( aggregate->fields, at->get_members() );
    818817
    819818        return at;
  • src/Parser/TypeData.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 21:03:18 2015
    13 // Update Count     : 7
     12// Last Modified On : Fri Jun 26 23:39:03 2015
     13// Update Count     : 16
    1414//
    1515
     
    4747                std::string name;
    4848                DeclarationNode *params;
    49                 ExpressionNode *actuals;                                                // holds actual parameters later applied to AggInst
    50                 DeclarationNode *members;
     49                ExpressionNode  *actuals;                                               // holds actual parameters later applied to AggInst
     50                DeclarationNode *fields;
    5151        };
    5252
     
    7878        struct Symbolic_t {
    7979                std::string name;
    80                 bool isTypedef;
     80                bool isTypedef;                                                                 // false => TYPEGENname, true => TYPEDEFname
    8181                DeclarationNode *params;
    8282                ExpressionNode *actuals;
  • src/Parser/TypedefTable.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun 21 11:46:15 2015
    13 // Update Count     : 7
     12// Last Modified On : Fri Jun 26 07:30:16 2015
     13// Update Count     : 19
    1414//
    1515
     
    2222#if 0
    2323#include <iostream>
    24 #define debugPrint(x ) cerr << x
     24#define debugPrint( x ) cerr << x
    2525#else
    2626#define debugPrint( x )
     
    2828
    2929TypedefTable::TypedefTable() : currentScope( 0 ) {}
     30
     31void TypedefTable::changeKind( const string &identifier, kind_t kind ) {
     32        tableType::iterator id_pos = table.find( identifier );
     33        if ( id_pos == table.end() ) {
     34                return;
     35        } else {
     36                (*((*id_pos ).second.begin())).kind = kind;
     37                return;
     38        } // if
     39}
    3040
    3141bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
     
    5565                contexts[currentContext].push_back( entry );
    5666        } else {
    57                 debugPrint( "Adding " << identifier << " as type " << kind << " scope " << scope << " from scope " << currentScope << endl );
     67                debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl );
    5868                Entry newEntry = { scope, kind };
    5969                tableType::iterator curPos = table.find( identifier );
     
    122132        debugPrint( "Leaving scope " << currentScope << endl );
    123133        for ( tableType::iterator i = table.begin(); i != table.end(); ) {
    124                 list<Entry> &declList = (*i ).second;
     134                list<Entry> &declList = (*i).second;
    125135                while ( ! declList.empty() && declList.front().scope == currentScope ) {
    126136                        declList.pop_front();
    127137                }
    128                 if ( declList.empty() ) {                       // standard idom for erasing during traversal
     138                if ( declList.empty() ) {                                               // standard idom for erasing during traversal
    129139                        table.erase( i++ );
    130                 } else ++i;
     140                } else
     141                        ++i;
    131142        } // for
    132143        currentScope -= 1;
    133         for ( deferListType::iterator i = deferListStack.top().begin(); i != deferListStack.top().end(); i++) {
     144        for ( deferListType::iterator i = deferListStack.top().begin(); i != deferListStack.top().end(); i++ ) {
    134145                addToCurrentScope( i->identifier, i->kind );
    135146        } // for
     
    151162        for ( tableType::const_iterator i = table.begin(); i != table.end(); i++) {
    152163                debugPrint( (*i ).first << ": " );
    153                 list<Entry> declList = (*i ).second;
     164                list<Entry> declList = (*i).second;
    154165                for ( list<Entry>::const_iterator j = declList.begin(); j != declList.end(); j++ ) {
    155                         debugPrint( "(" << (*j ).scope << " " << (*j).kind << ") " );
     166                        debugPrint( "(" << (*j).scope << " " << (*j).kind << ") " );
    156167                }
    157168                debugPrint( endl );
  • src/Parser/TypedefTable.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 18 21:03:17 2015
    13 // Update Count     : 7
     12// Last Modified On : Thu Jun 25 22:52:15 2015
     13// Update Count     : 11
    1414//
    1515
     
    5757        bool isTypedef( const std::string &identifier ) const;
    5858        bool isTypegen( const std::string &identifier ) const;
     59
     60        void changeKind( const std::string &identifier, kind_t kind );
    5961       
    6062        // "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does,
    6163        // since each declaration is within its own scope.  Mostly useful for type parameters.
    6264        void addToCurrentScope( const std::string &identifier, kind_t kind );
    63         void addToCurrentScope( kind_t kind );          // use nextIdentifiers.top()
     65        void addToCurrentScope( kind_t kind );                  // use nextIdentifiers.top()
    6466
    6567        // "addToEnclosingScope" adds the identifier/type pair to the scope that encloses the current one.  This is the
  • src/Parser/parser.cc

    re0ff3e6 r413f7f8  
    568568
    569569/* YYFINAL -- State number of the termination state.  */
    570 #define YYFINAL  240
     570#define YYFINAL  246
    571571/* YYLAST -- Last index in YYTABLE.  */
    572 #define YYLAST   12266
     572#define YYLAST   11363
    573573
    574574/* YYNTOKENS -- Number of terminals.  */
    575575#define YYNTOKENS  125
    576576/* YYNNTS -- Number of nonterminals.  */
    577 #define YYNNTS  235
     577#define YYNNTS  236
    578578/* YYNRULES -- Number of rules.  */
    579 #define YYNRULES  735
     579#define YYNRULES  732
    580580/* YYNRULES -- Number of states.  */
    581 #define YYNSTATES  1555
     581#define YYNSTATES  1505
    582582
    583583/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     
    644644     270,   274,   278,   282,   286,   288,   292,   296,   298,   302,
    645645     304,   308,   310,   314,   316,   320,   322,   326,   328,   334,
    646      339,   345,   347,   349,   353,   357,   360,   361,   363,   368,
    647      374,   381,   389,   391,   395,   397,   399,   401,   403,   405,
    648      407,   409,   411,   413,   415,   417,   421,   422,   424,   426,
    649      428,   430,   432,   434,   436,   438,   440,   445,   448,   456,
    650      458,   462,   464,   467,   469,   472,   474,   477,   480,   486,
    651      494,   500,   510,   516,   526,   528,   532,   534,   536,   540,
    652      544,   547,   549,   552,   555,   556,   558,   561,   565,   566,
    653      568,   571,   575,   579,   584,   585,   587,   589,   592,   598,
    654      606,   613,   620,   625,   629,   634,   637,   641,   644,   648,
    655      652,   656,   659,   663,   667,   672,   674,   680,   687,   697,
    656      708,   711,   713,   716,   719,   722,   724,   731,   740,   751,
    657      764,   765,   767,   769,   773,   778,   780,   784,   786,   788,
    658      790,   794,   796,   798,   800,   804,   805,   807,   811,   816,
    659      818,   822,   824,   826,   830,   834,   838,   842,   846,   849,
    660      853,   860,   864,   868,   873,   875,   878,   881,   885,   891,
    661      902,   913,   921,   929,   935,   945,   948,   951,   957,   961,
    662      967,   972,   976,   981,   986,   994,   998,  1002,  1006,  1010,
    663     1015,  1022,  1024,  1026,  1028,  1030,  1032,  1034,  1036,  1038,
    664     1039,  1041,  1043,  1046,  1048,  1050,  1052,  1054,  1056,  1058,
    665     1060,  1061,  1067,  1069,  1072,  1076,  1078,  1081,  1083,  1085,
    666     1087,  1089,  1091,  1093,  1095,  1097,  1099,  1101,  1103,  1105,
    667     1107,  1109,  1111,  1113,  1115,  1117,  1119,  1121,  1123,  1125,
    668     1128,  1131,  1135,  1139,  1141,  1145,  1147,  1150,  1153,  1156,
    669     1161,  1166,  1171,  1176,  1178,  1181,  1184,  1188,  1190,  1193,
    670     1196,  1198,  1201,  1204,  1208,  1210,  1213,  1216,  1218,  1220,
    671     1225,  1228,  1234,  1244,  1252,  1263,  1276,  1282,  1290,  1304,
    672     1307,  1310,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
    673     1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
    674     1363,  1366,  1369,  1375,  1382,  1385,  1388,  1393,  1394,  1397,
    675     1398,  1400,  1402,  1404,  1410,  1416,  1422,  1424,  1430,  1436,
    676     1446,  1448,  1454,  1455,  1457,  1459,  1465,  1467,  1469,  1475,
    677     1481,  1483,  1487,  1491,  1496,  1498,  1500,  1502,  1504,  1507,
    678     1509,  1513,  1517,  1519,  1522,  1524,  1528,  1530,  1532,  1534,
    679     1536,  1538,  1540,  1542,  1544,  1546,  1548,  1551,  1553,  1555,
    680     1557,  1560,  1561,  1564,  1566,  1571,  1573,  1576,  1580,  1585,
    681     1588,  1591,  1593,  1596,  1599,  1605,  1611,  1619,  1626,  1628,
    682     1631,  1634,  1638,  1643,  1649,  1652,  1655,  1660,  1661,  1666,
    683     1669,  1671,  1673,  1675,  1676,  1679,  1685,  1691,  1705,  1707,
    684     1709,  1713,  1717,  1720,  1724,  1728,  1731,  1736,  1738,  1745,
    685     1755,  1756,  1768,  1770,  1774,  1778,  1782,  1784,  1786,  1792,
    686     1795,  1801,  1802,  1804,  1806,  1810,  1811,  1813,  1815,  1817,
    687     1819,  1820,  1827,  1830,  1832,  1835,  1840,  1843,  1847,  1851,
    688     1855,  1860,  1866,  1872,  1878,  1885,  1887,  1889,  1891,  1895,
    689     1896,  1902,  1903,  1905,  1907,  1910,  1917,  1919,  1923,  1924,
    690     1926,  1931,  1933,  1935,  1937,  1939,  1942,  1944,  1947,  1950,
    691     1952,  1956,  1959,  1963,  1967,  1970,  1975,  1980,  1984,  1993,
    692     1997,  2000,  2002,  2005,  2012,  2021,  2025,  2028,  2032,  2036,
    693     2041,  2046,  2050,  2052,  2054,  2056,  2061,  2068,  2072,  2075,
    694     2079,  2083,  2088,  2093,  2097,  2100,  2102,  2105,  2108,  2110,
    695     2114,  2117,  2121,  2125,  2128,  2133,  2138,  2142,  2149,  2158,
    696     2162,  2165,  2167,  2170,  2173,  2176,  2180,  2184,  2187,  2192,
    697     2197,  2201,  2208,  2217,  2221,  2224,  2226,  2229,  2232,  2234,
    698     2237,  2241,  2245,  2248,  2253,  2260,  2269,  2271,  2274,  2277,
    699     2279,  2282,  2285,  2289,  2293,  2295,  2300,  2305,  2309,  2315,
    700     2324,  2328,  2333,  2339,  2341,  2347,  2353,  2360,  2367,  2369,
    701     2372,  2375,  2377,  2380,  2383,  2387,  2391,  2393,  2398,  2403,
    702     2407,  2413,  2422,  2426,  2428,  2431,  2433,  2438,  2445,  2451,
    703     2458,  2466,  2474,  2476,  2479,  2482,  2484,  2487,  2490,  2494,
    704     2498,  2500,  2505,  2510,  2514,  2523,  2527,  2529,  2531,  2534,
    705     2536,  2538,  2541,  2545,  2548,  2552,  2555,  2559,  2565,  2568,
    706     2575,  2579,  2582,  2588,  2591,  2598,  2602,  2605,  2612,  2619,
    707     2626,  2634,  2636,  2639,  2641,  2643,  2645,  2648,  2652,  2655,
    708     2659,  2662,  2666,  2672,  2679,  2682,  2688,  2695,  2698,  2704,
    709     2712,  2719,  2726,  2727,  2729,  2730
     646     339,   345,   347,   349,   353,   357,   360,   361,   363,   366,
     647     372,   379,   387,   389,   393,   395,   397,   399,   401,   403,
     648     405,   407,   409,   411,   413,   415,   419,   420,   422,   424,
     649     426,   428,   430,   432,   434,   436,   438,   443,   446,   454,
     650     456,   460,   462,   465,   467,   470,   472,   475,   478,   484,
     651     492,   498,   508,   514,   524,   526,   530,   532,   534,   538,
     652     542,   545,   547,   550,   553,   554,   556,   559,   563,   564,
     653     566,   569,   573,   577,   582,   583,   585,   587,   590,   596,
     654     604,   611,   618,   623,   627,   632,   635,   639,   642,   646,
     655     650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
     656     706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
     657     762,   763,   765,   767,   771,   776,   778,   782,   784,   786,
     658     788,   792,   794,   796,   798,   802,   803,   805,   809,   814,
     659     816,   820,   822,   824,   828,   832,   836,   840,   844,   847,
     660     851,   858,   862,   866,   871,   873,   876,   879,   883,   889,
     661     898,   906,   914,   920,   930,   933,   936,   942,   946,   952,
     662     957,   961,   966,   971,   979,   983,   987,   991,   995,  1000,
     663    1007,  1009,  1011,  1013,  1015,  1017,  1019,  1021,  1023,  1024,
     664    1026,  1028,  1031,  1033,  1035,  1037,  1039,  1041,  1043,  1045,
     665    1046,  1052,  1054,  1057,  1061,  1063,  1066,  1068,  1070,  1072,
     666    1074,  1076,  1078,  1080,  1082,  1084,  1086,  1088,  1090,  1092,
     667    1094,  1096,  1098,  1100,  1102,  1104,  1106,  1108,  1110,  1113,
     668    1116,  1120,  1124,  1126,  1130,  1132,  1135,  1138,  1141,  1146,
     669    1151,  1156,  1161,  1163,  1166,  1169,  1173,  1175,  1178,  1181,
     670    1183,  1186,  1189,  1193,  1195,  1198,  1201,  1203,  1205,  1210,
     671    1213,  1219,  1227,  1230,  1233,  1236,  1238,  1241,  1244,  1248,
     672    1251,  1255,  1257,  1260,  1264,  1267,  1270,  1275,  1276,  1278,
     673    1281,  1284,  1286,  1287,  1289,  1292,  1295,  1301,  1308,  1311,
     674    1314,  1319,  1320,  1323,  1324,  1326,  1328,  1330,  1336,  1342,
     675    1348,  1350,  1356,  1362,  1372,  1374,  1380,  1381,  1383,  1385,
     676    1391,  1393,  1395,  1401,  1407,  1409,  1413,  1417,  1422,  1424,
     677    1426,  1428,  1430,  1433,  1435,  1439,  1443,  1445,  1448,  1450,
     678    1454,  1456,  1458,  1460,  1462,  1464,  1466,  1468,  1470,  1472,
     679    1474,  1476,  1479,  1481,  1483,  1485,  1488,  1489,  1492,  1494,
     680    1499,  1501,  1504,  1508,  1513,  1516,  1519,  1521,  1524,  1527,
     681    1533,  1539,  1547,  1554,  1556,  1559,  1562,  1566,  1568,  1571,
     682    1574,  1579,  1582,  1587,  1588,  1593,  1596,  1598,  1600,  1602,
     683    1603,  1606,  1612,  1618,  1632,  1634,  1636,  1640,  1644,  1647,
     684    1651,  1655,  1658,  1663,  1665,  1672,  1682,  1683,  1695,  1697,
     685    1701,  1705,  1709,  1711,  1713,  1719,  1722,  1728,  1729,  1731,
     686    1733,  1737,  1738,  1740,  1742,  1744,  1746,  1747,  1754,  1757,
     687    1759,  1762,  1767,  1770,  1774,  1778,  1782,  1787,  1793,  1799,
     688    1805,  1812,  1814,  1816,  1818,  1822,  1823,  1829,  1830,  1832,
     689    1834,  1837,  1844,  1846,  1850,  1851,  1853,  1858,  1860,  1862,
     690    1864,  1866,  1869,  1871,  1874,  1877,  1879,  1883,  1886,  1890,
     691    1894,  1897,  1902,  1907,  1911,  1920,  1924,  1927,  1929,  1932,
     692    1939,  1948,  1952,  1955,  1959,  1963,  1968,  1973,  1977,  1979,
     693    1981,  1983,  1988,  1995,  1999,  2002,  2006,  2010,  2015,  2020,
     694    2024,  2027,  2029,  2032,  2035,  2037,  2041,  2044,  2048,  2052,
     695    2055,  2060,  2065,  2069,  2076,  2085,  2089,  2092,  2094,  2097,
     696    2100,  2103,  2107,  2111,  2114,  2119,  2124,  2128,  2135,  2144,
     697    2148,  2151,  2153,  2156,  2159,  2161,  2163,  2166,  2170,  2174,
     698    2177,  2182,  2189,  2198,  2200,  2203,  2206,  2208,  2211,  2214,
     699    2218,  2222,  2224,  2229,  2234,  2238,  2244,  2253,  2257,  2260,
     700    2264,  2266,  2272,  2278,  2285,  2292,  2294,  2297,  2300,  2302,
     701    2305,  2308,  2312,  2316,  2318,  2323,  2328,  2332,  2338,  2347,
     702    2351,  2353,  2356,  2358,  2361,  2368,  2374,  2381,  2389,  2397,
     703    2399,  2402,  2405,  2407,  2410,  2413,  2417,  2421,  2423,  2428,
     704    2433,  2437,  2446,  2450,  2452,  2454,  2457,  2459,  2461,  2464,
     705    2468,  2471,  2475,  2478,  2482,  2486,  2489,  2494,  2498,  2501,
     706    2505,  2508,  2513,  2517,  2520,  2527,  2534,  2541,  2549,  2551,
     707    2554,  2556,  2558,  2560,  2563,  2567,  2570,  2574,  2577,  2581,
     708    2585,  2590,  2593,  2597,  2602,  2605,  2611,  2617,  2624,  2631,
     709    2632,  2634,  2635
    710710};
    711711
     
    713713static const yytype_int16 yyrhs[] =
    714714{
    715      288,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
     715     289,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
    716716      -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
    717717      -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
     
    722722     138,   127,   104,    -1,   135,    78,   131,    -1,   135,    78,
    723723     103,   126,   138,   127,   104,    -1,   135,    79,    -1,   135,
    724       80,    -1,   101,   262,   102,   106,   266,   358,   107,    -1,
     724      80,    -1,   101,   262,   102,   106,   266,   359,   107,    -1,
    725725     137,    -1,   136,   108,   137,    -1,    -1,   155,    -1,   131,
    726726     109,   155,    -1,   103,   126,   155,   127,   104,   109,   155,
     
    748748     160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
    749749     122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
    750      123,   155,    -1,   140,   159,   155,    -1,   157,   359,    -1,
    751       -1,   155,    -1,   103,   126,   127,   104,    -1,   103,   126,
    752      155,   127,   104,    -1,   103,   126,   108,   158,   127,   104,
    753       -1,   103,   126,   155,   108,   158,   127,   104,    -1,   156,
    754       -1,   158,   108,   156,    -1,    90,    -1,    91,    -1,    92,
    755       -1,    93,    -1,    94,    -1,    95,    -1,    96,    -1,    97,
    756       -1,    98,    -1,    99,    -1,   155,    -1,   160,   108,   155,
    757       -1,    -1,   160,    -1,   163,    -1,   164,    -1,   168,    -1,
    758      169,    -1,   181,    -1,   183,    -1,   184,    -1,   189,    -1,
    759      131,   109,   298,   162,    -1,   106,   107,    -1,   106,   126,
    760      126,   198,   165,   127,   107,    -1,   166,    -1,   165,   126,
    761      166,    -1,   201,    -1,    38,   201,    -1,   294,    -1,   162,
    762      127,    -1,   162,    -1,   167,   162,    -1,   161,   124,    -1,
    763       39,   101,   160,   102,   162,    -1,    39,   101,   160,   102,
    764      162,    40,   162,    -1,    41,   101,   160,   102,   174,    -1,
    765       41,   101,   160,   102,   106,   126,   194,   175,   107,    -1,
    766       51,   101,   160,   102,   174,    -1,    51,   101,   160,   102,
    767      106,   126,   194,   177,   107,    -1,   154,    -1,   154,    89,
    768      154,    -1,   296,    -1,   170,    -1,   171,   108,   170,    -1,
    769       42,   171,   109,    -1,    43,   109,    -1,   172,    -1,   173,
    770      172,    -1,   173,   162,    -1,    -1,   176,    -1,   173,   167,
    771       -1,   176,   173,   167,    -1,    -1,   178,    -1,   173,   180,
    772       -1,   173,   167,   179,    -1,   178,   173,   180,    -1,   178,
    773      173,   167,   179,    -1,    -1,   180,    -1,    52,    -1,    52,
    774      124,    -1,    45,   101,   160,   102,   162,    -1,    44,   162,
    775       45,   101,   160,   102,   124,    -1,    46,   101,   126,   182,
    776      102,   162,    -1,   161,   127,   124,   161,   124,   161,    -1,
    777      201,   161,   124,   161,    -1,    49,   131,   124,    -1,    49,
    778      111,   160,   124,    -1,    48,   124,    -1,    48,   131,   124,
    779       -1,    47,   124,    -1,    47,   131,   124,    -1,    50,   161,
    780      124,    -1,    56,   155,   124,    -1,    56,   124,    -1,    53,
    781      164,   185,    -1,    53,   164,   187,    -1,    53,   164,   185,
    782      187,    -1,   186,    -1,    54,   101,    89,   102,   164,    -1,
    783      186,    54,   101,    89,   102,   164,    -1,    54,   101,   126,
    784      126,   188,   127,   102,   164,   127,    -1,   186,    54,   101,
    785      126,   126,   188,   127,   102,   164,   127,    -1,    55,   164,
    786       -1,   214,    -1,   214,   295,    -1,   214,   343,    -1,   352,
    787      131,    -1,   352,    -1,    57,   215,   101,   154,   102,   124,
    788       -1,    57,   215,   101,   154,   109,   190,   102,   124,    -1,
    789       57,   215,   101,   154,   109,   190,   109,   190,   102,   124,
    790       -1,    57,   215,   101,   154,   109,   190,   109,   190,   109,
    791      193,   102,   124,    -1,    -1,   191,    -1,   192,    -1,   191,
    792      108,   192,    -1,    75,   101,   154,   102,    -1,    75,    -1,
    793      193,   108,    75,    -1,   127,    -1,   195,    -1,   201,    -1,
    794      195,   126,   201,    -1,   127,    -1,   197,    -1,   211,    -1,
    795      197,   126,   211,    -1,    -1,   199,    -1,    28,   200,   124,
    796       -1,   199,    28,   200,   124,    -1,   261,    -1,   200,   108,
    797      261,    -1,   202,    -1,   211,    -1,   203,   127,   124,    -1,
    798      208,   127,   124,    -1,   205,   127,   124,    -1,   279,   127,
    799      124,    -1,   282,   127,   124,    -1,   204,   264,    -1,   220,
    800      204,   264,    -1,   203,   127,   108,   126,   259,   264,    -1,
    801      353,   259,   297,    -1,   356,   259,   297,    -1,   216,   356,
    802      259,   297,    -1,   206,    -1,   216,   206,    -1,   220,   206,
    803       -1,   220,   216,   206,    -1,   205,   127,   108,   126,   259,
    804       -1,   103,   126,   127,   104,   129,   101,   126,   247,   127,
    805      102,    -1,   103,   126,   127,   104,    67,   101,   126,   247,
    806      127,   102,    -1,   356,   259,   101,   126,   247,   127,   102,
    807       -1,   207,   259,   101,   126,   247,   127,   102,    -1,   103,
    808      126,   249,   127,   104,    -1,   103,   126,   249,   127,   108,
    809      126,   250,   127,   104,    -1,     3,   204,    -1,     3,   206,
    810       -1,   208,   127,   108,   126,   131,    -1,     3,   214,   295,
    811       -1,   209,   127,   108,   126,   295,    -1,   216,     3,   214,
    812      295,    -1,   214,     3,   295,    -1,   214,     3,   216,   295,
    813       -1,     3,   131,   123,   155,    -1,   210,   127,   108,   126,
    814      131,   123,   155,    -1,   212,   127,   124,    -1,   209,   127,
    815      124,    -1,   210,   127,   124,    -1,   229,   127,   124,    -1,
    816      213,   295,   297,   264,    -1,   212,   108,   298,   295,   297,
    817      264,    -1,   225,    -1,   229,    -1,   231,    -1,   270,    -1,
    818      226,    -1,   230,    -1,   232,    -1,   271,    -1,    -1,   216,
    819       -1,   217,    -1,   216,   217,    -1,   218,    -1,   300,    -1,
    820       10,    -1,    12,    -1,    11,    -1,    14,    -1,    60,    -1,
    821       -1,    13,   101,   219,   272,   102,    -1,   221,    -1,   216,
    822      221,    -1,   220,   216,   221,    -1,   222,    -1,   221,   222,
    823       -1,   223,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
    824       -1,     8,    -1,     9,    -1,    62,    -1,    64,    -1,    16,
    825       -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
    826       -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,    25,
    827       -1,    26,    -1,   226,    -1,   220,   226,    -1,   225,   222,
    828       -1,   225,   222,   216,    -1,   225,   222,   226,    -1,   227,
    829       -1,   215,   228,   215,    -1,   224,    -1,   216,   224,    -1,
    830      227,   217,    -1,   227,   224,    -1,    27,   101,   263,   102,
    831       -1,    27,   101,   160,   102,    -1,    71,   101,   263,   102,
    832       -1,    71,   101,   160,   102,    -1,   230,    -1,   220,   230,
    833       -1,   229,   222,    -1,   229,   222,   216,    -1,   233,    -1,
    834      216,   233,    -1,   230,   217,    -1,   232,    -1,   220,   232,
    835       -1,   231,   222,    -1,   231,   222,   216,    -1,    67,    -1,
    836      216,    67,    -1,   232,   217,    -1,   234,    -1,   244,    -1,
    837      235,   106,   236,   107,    -1,   235,   261,    -1,   235,   261,
    838      106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
    839      106,   236,   107,    -1,   235,   101,   126,   272,   127,   102,
    840      261,    -1,   235,   101,   126,   272,   127,   102,   261,   106,
    841      236,   107,    -1,   235,   101,   126,   272,   127,   102,   101,
    842      278,   102,   106,   236,   107,    -1,   235,    68,   101,   278,
    843      102,    -1,   235,   101,   126,   278,   127,   102,   261,    -1,
    844      235,   101,   126,   272,   127,   102,   101,   278,   102,   261,
    845      106,   236,   107,    -1,    30,   298,    -1,    31,   298,    -1,
    846      237,    -1,   236,   237,    -1,   238,   124,    -1,    38,   238,
    847      124,    -1,   239,   124,    -1,    38,   239,   124,    -1,   352,
    848       -1,   352,   261,    -1,   238,   108,   261,    -1,   238,   108,
    849       -1,   214,   240,    -1,   239,   108,   298,   240,    -1,    -1,
    850      242,    -1,   304,   241,    -1,   317,   241,    -1,   343,    -1,
    851       -1,   242,    -1,   109,   154,    -1,    29,   298,    -1,   243,
    852      106,   245,   358,   107,    -1,   243,   261,   106,   245,   358,
    853      107,    -1,   243,   261,    -1,   261,   246,    -1,   245,   108,
    854      261,   246,    -1,    -1,   123,   154,    -1,    -1,   248,    -1,
    855      250,    -1,   249,    -1,   249,   127,   108,   126,   250,    -1,
    856      250,   127,   108,   126,    89,    -1,   249,   127,   108,   126,
    857       89,    -1,   254,    -1,   250,   127,   108,   126,   254,    -1,
    858      249,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
    859      250,   127,   108,   126,   254,    -1,   255,    -1,   250,   127,
    860      108,   126,   255,    -1,    -1,   252,    -1,   253,    -1,   253,
    861      127,   108,   126,    89,    -1,   257,    -1,   256,    -1,   253,
    862      127,   108,   126,   257,    -1,   253,   127,   108,   126,   256,
    863       -1,   256,    -1,   348,   259,   359,    -1,   356,   259,   359,
    864       -1,   216,   356,   259,   359,    -1,   206,    -1,   257,    -1,
    865      348,    -1,   356,    -1,   216,   356,    -1,   357,    -1,   213,
    866      322,   359,    -1,   213,   326,   359,    -1,   213,    -1,   213,
    867      337,    -1,   131,    -1,   258,   108,   131,    -1,   129,    -1,
    868       67,    -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,
    869      131,    -1,    67,    -1,   352,    -1,   214,    -1,   214,   343,
    870       -1,   352,    -1,   357,    -1,   214,    -1,   214,   331,    -1,
    871       -1,   123,   265,    -1,   155,    -1,   106,   266,   358,   107,
    872       -1,   265,    -1,   267,   265,    -1,   266,   108,   265,    -1,
    873      266,   108,   267,   265,    -1,   268,   109,    -1,   261,   109,
    874       -1,   269,    -1,   268,   269,    -1,   105,   261,    -1,   103,
    875      126,   155,   127,   104,    -1,   103,   126,   296,   127,   104,
    876       -1,   103,   126,   154,    89,   154,   127,   104,    -1,   105,
    877      103,   126,   138,   127,   104,    -1,   271,    -1,   220,   271,
    878       -1,   270,   222,    -1,   270,   222,   216,    -1,    68,   101,
    879      278,   102,    -1,   216,    68,   101,   278,   102,    -1,   271,
    880      217,    -1,   273,   359,    -1,   272,   108,   273,   359,    -1,
    881       -1,   275,   261,   274,   276,    -1,   214,   322,    -1,    32,
    882       -1,    34,    -1,    33,    -1,    -1,   276,   277,    -1,   121,
    883      261,   101,   278,   102,    -1,   121,   106,   126,   284,   107,
    884       -1,   121,   101,   126,   272,   127,   102,   106,   126,   284,
    885      107,   101,   278,   102,    -1,   263,    -1,   155,    -1,   278,
    886      108,   263,    -1,   278,   108,   155,    -1,    32,   280,    -1,
    887      221,    32,   280,    -1,   279,   108,   280,    -1,   281,   276,
    888       -1,   281,   276,   123,   263,    -1,   261,    -1,   260,   101,
    889      126,   272,   127,   102,    -1,    35,   261,   101,   126,   272,
    890      127,   102,   106,   107,    -1,    -1,    35,   261,   101,   126,
    891      272,   127,   102,   106,   283,   284,   107,    -1,   285,    -1,
    892      284,   126,   285,    -1,   286,   127,   124,    -1,   287,   127,
    893      124,    -1,   204,    -1,   206,    -1,   286,   127,   108,   126,
    894      259,    -1,   214,   295,    -1,   287,   127,   108,   126,   295,
    895       -1,    -1,   289,    -1,   291,    -1,   289,   126,   291,    -1,
    896       -1,   289,    -1,   201,    -1,   293,    -1,   189,    -1,    -1,
    897        5,    75,   292,   106,   290,   107,    -1,    38,   291,    -1,
    898      294,    -1,   309,   164,    -1,   313,   126,   196,   164,    -1,
    899      205,   164,    -1,   213,   309,   164,    -1,   216,   309,   164,
    900       -1,   220,   309,   164,    -1,   220,   216,   309,   164,    -1,
    901      213,   313,   126,   196,   164,    -1,   216,   313,   126,   196,
    902      164,    -1,   220,   313,   126,   196,   164,    -1,   220,   216,
    903      313,   126,   196,   164,    -1,   304,    -1,   309,    -1,   317,
    904       -1,   154,   115,   154,    -1,    -1,    57,   101,   133,   102,
    905      298,    -1,    -1,   299,    -1,   300,    -1,   299,   300,    -1,
    906       37,   101,   101,   301,   102,   102,    -1,   302,    -1,   301,
    907      108,   302,    -1,    -1,   303,    -1,   303,   101,   161,   102,
    908       -1,   259,    -1,   223,    -1,   224,    -1,   217,    -1,   305,
    909      298,    -1,   306,    -1,   307,   298,    -1,   308,   298,    -1,
    910      129,    -1,   101,   305,   102,    -1,   111,   304,    -1,   111,
    911      216,   304,    -1,   101,   306,   102,    -1,   305,   335,    -1,
    912      101,   306,   102,   335,    -1,   101,   307,   102,   336,    -1,
    913      101,   307,   102,    -1,   101,   306,   102,   101,   126,   251,
    914      127,   102,    -1,   101,   308,   102,    -1,   310,   298,    -1,
    915      311,    -1,   312,   298,    -1,   305,   101,   126,   251,   127,
    916      102,    -1,   101,   311,   102,   101,   126,   251,   127,   102,
    917       -1,   101,   310,   102,    -1,   111,   309,    -1,   111,   216,
    918      309,    -1,   101,   311,   102,    -1,   101,   311,   102,   335,
    919       -1,   101,   312,   102,   336,    -1,   101,   312,   102,    -1,
    920      314,    -1,   315,    -1,   316,    -1,   305,   101,   258,   102,
    921       -1,   101,   315,   102,   101,   258,   102,    -1,   101,   314,
    922      102,    -1,   111,   313,    -1,   111,   216,   313,    -1,   101,
    923      315,   102,    -1,   101,   315,   102,   335,    -1,   101,   316,
    924      102,   336,    -1,   101,   316,   102,    -1,   318,   298,    -1,
    925      319,    -1,   320,   298,    -1,   321,   298,    -1,    67,    -1,
    926      101,   318,   102,    -1,   111,   317,    -1,   111,   216,   317,
    927       -1,   101,   319,   102,    -1,   318,   335,    -1,   101,   319,
    928      102,   335,    -1,   101,   320,   102,   336,    -1,   101,   320,
    929      102,    -1,   318,   101,   126,   251,   127,   102,    -1,   101,
    930      319,   102,   101,   126,   251,   127,   102,    -1,   101,   321,
    931      102,    -1,   305,   298,    -1,   323,    -1,   324,   298,    -1,
    932      325,   298,    -1,   111,   322,    -1,   111,   216,   322,    -1,
    933      101,   323,   102,    -1,   305,   341,    -1,   101,   323,   102,
    934      335,    -1,   101,   324,   102,   336,    -1,   101,   324,   102,
    935       -1,   305,   101,   126,   251,   127,   102,    -1,   101,   323,
    936      102,   101,   126,   251,   127,   102,    -1,   101,   325,   102,
    937       -1,   327,   298,    -1,   328,    -1,   329,   298,    -1,   330,
    938      298,    -1,    67,    -1,   111,   326,    -1,   111,   216,   326,
    939       -1,   101,   328,   102,    -1,   327,   341,    -1,   101,   328,
    940      102,   341,    -1,   327,   101,   126,   251,   127,   102,    -1,
    941      101,   328,   102,   101,   126,   251,   127,   102,    -1,   332,
    942       -1,   333,   298,    -1,   334,   298,    -1,   111,    -1,   111,
    943      216,    -1,   111,   331,    -1,   111,   216,   331,    -1,   101,
    944      332,   102,    -1,   335,    -1,   101,   332,   102,   335,    -1,
    945      101,   333,   102,   336,    -1,   101,   333,   102,    -1,   101,
    946      126,   251,   127,   102,    -1,   101,   332,   102,   101,   126,
    947      251,   127,   102,    -1,   101,   334,   102,    -1,   103,   126,
    948      127,   104,    -1,   103,   126,   127,   104,   336,    -1,   336,
    949       -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
    950      127,   104,    -1,   336,   103,   126,   155,   127,   104,    -1,
    951      336,   103,   126,   111,   127,   104,    -1,   338,    -1,   339,
    952      298,    -1,   340,   298,    -1,   111,    -1,   111,   216,    -1,
    953      111,   337,    -1,   111,   216,   337,    -1,   101,   338,   102,
    954       -1,   341,    -1,   101,   338,   102,   341,    -1,   101,   339,
    955      102,   336,    -1,   101,   339,   102,    -1,   101,   126,   251,
    956      127,   102,    -1,   101,   338,   102,   101,   126,   251,   127,
    957      102,    -1,   101,   340,   102,    -1,   342,    -1,   342,   336,
    958       -1,   336,    -1,   103,   126,   127,   104,    -1,   103,   126,
    959      216,   111,   127,   104,    -1,   103,   126,   216,   127,   104,
    960       -1,   103,   126,   216,   155,   127,   104,    -1,   103,   126,
    961        7,   215,   155,   127,   104,    -1,   103,   126,   216,     7,
    962      155,   127,   104,    -1,   344,    -1,   345,   298,    -1,   346,
    963      298,    -1,   111,    -1,   111,   216,    -1,   111,   343,    -1,
    964      111,   216,   343,    -1,   101,   344,   102,    -1,   335,    -1,
    965      101,   344,   102,   335,    -1,   101,   345,   102,   336,    -1,
    966      101,   345,   102,    -1,   101,   344,   102,   101,   126,   251,
    967      127,   102,    -1,   101,   346,   102,    -1,   348,    -1,   356,
    968       -1,   216,   356,    -1,   349,    -1,   350,    -1,   111,   214,
    969       -1,   216,   111,   214,    -1,   111,   357,    -1,   216,   111,
    970      357,    -1,   111,   347,    -1,   216,   111,   347,    -1,   103,
    971      126,   127,   104,   214,    -1,   351,   214,    -1,   103,   126,
    972      127,   104,   336,   214,    -1,   351,   336,   214,    -1,   336,
    973      214,    -1,   103,   126,   127,   104,   349,    -1,   351,   349,
    974       -1,   103,   126,   127,   104,   336,   349,    -1,   351,   336,
    975      349,    -1,   336,   349,    -1,   103,   126,   216,   111,   127,
    976      104,    -1,   103,   126,   216,   155,   127,   104,    -1,   103,
    977      126,   220,   155,   127,   104,    -1,   103,   126,   220,   216,
    978      155,   127,   104,    -1,   356,    -1,   216,   356,    -1,   353,
    979       -1,   354,    -1,   355,    -1,   111,   214,    -1,   216,   111,
    980      214,    -1,   111,   357,    -1,   216,   111,   357,    -1,   111,
    981      352,    -1,   216,   111,   352,    -1,   103,   126,   127,   104,
    982      214,    -1,   103,   126,   127,   104,   336,   214,    -1,   336,
    983      214,    -1,   103,   126,   127,   104,   354,    -1,   103,   126,
    984      127,   104,   336,   354,    -1,   336,   354,    -1,   103,   126,
    985      250,   127,   104,    -1,   103,   126,   127,   104,   101,   247,
    986      102,    -1,   356,   101,   126,   247,   127,   102,    -1,   207,
    987      101,   126,   247,   127,   102,    -1,    -1,   108,    -1,    -1,
    988      123,   155,    -1
     750     123,   155,    -1,   140,   159,   155,    -1,   157,   360,    -1,
     751      -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
     752     104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
     753     126,   155,   108,   158,   127,   104,    -1,   156,    -1,   158,
     754     108,   156,    -1,    90,    -1,    91,    -1,    92,    -1,    93,
     755      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
     756      -1,    99,    -1,   155,    -1,   160,   108,   155,    -1,    -1,
     757     160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
     758     181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
     759     299,   162,    -1,   106,   107,    -1,   106,   126,   126,   198,
     760     165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
     761     201,    -1,    38,   201,    -1,   295,    -1,   162,   127,    -1,
     762     162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
     763     160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
     764     162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
     765     160,   102,   106,   126,   194,   175,   107,    -1,    51,   101,
     766     160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
     767     194,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
     768     297,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
     769     109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
     770     173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
     771     173,   167,    -1,    -1,   178,    -1,   173,   180,    -1,   173,
     772     167,   179,    -1,   178,   173,   180,    -1,   178,   173,   167,
     773     179,    -1,    -1,   180,    -1,    52,    -1,    52,   124,    -1,
     774      45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
     775     160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
     776      -1,   161,   127,   124,   161,   124,   161,    -1,   201,   161,
     777     124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
     778     124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
     779     124,    -1,    47,   131,   124,    -1,    50,   161,   124,    -1,
     780      56,   155,   124,    -1,    56,   124,    -1,    53,   164,   185,
     781      -1,    53,   164,   187,    -1,    53,   164,   185,   187,    -1,
     782     186,    -1,    54,   101,    89,   102,   164,    -1,   186,    54,
     783     101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
     784     127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
     785     188,   127,   102,   164,   127,    -1,    55,   164,    -1,   214,
     786      -1,   214,   296,    -1,   214,   344,    -1,   353,   131,    -1,
     787     353,    -1,    57,   215,   101,   154,   102,   124,    -1,    57,
     788     215,   101,   154,   109,   190,   102,   124,    -1,    57,   215,
     789     101,   154,   109,   190,   109,   190,   102,   124,    -1,    57,
     790     215,   101,   154,   109,   190,   109,   190,   109,   193,   102,
     791     124,    -1,    -1,   191,    -1,   192,    -1,   191,   108,   192,
     792      -1,    75,   101,   154,   102,    -1,    75,    -1,   193,   108,
     793      75,    -1,   127,    -1,   195,    -1,   201,    -1,   195,   126,
     794     201,    -1,   127,    -1,   197,    -1,   211,    -1,   197,   126,
     795     211,    -1,    -1,   199,    -1,    28,   200,   124,    -1,   199,
     796      28,   200,   124,    -1,   261,    -1,   200,   108,   261,    -1,
     797     202,    -1,   211,    -1,   203,   127,   124,    -1,   208,   127,
     798     124,    -1,   205,   127,   124,    -1,   280,   127,   124,    -1,
     799     283,   127,   124,    -1,   204,   264,    -1,   220,   204,   264,
     800      -1,   203,   127,   108,   126,   259,   264,    -1,   354,   259,
     801     298,    -1,   357,   259,   298,    -1,   216,   357,   259,   298,
     802      -1,   206,    -1,   216,   206,    -1,   220,   206,    -1,   220,
     803     216,   206,    -1,   205,   127,   108,   126,   259,    -1,   103,
     804     104,   259,   101,   126,   247,   127,   102,    -1,   357,   259,
     805     101,   126,   247,   127,   102,    -1,   207,   259,   101,   126,
     806     247,   127,   102,    -1,   103,   126,   249,   127,   104,    -1,
     807     103,   126,   249,   127,   108,   126,   250,   127,   104,    -1,
     808       3,   204,    -1,     3,   206,    -1,   208,   127,   108,   126,
     809     131,    -1,     3,   214,   296,    -1,   209,   127,   108,   126,
     810     296,    -1,   216,     3,   214,   296,    -1,   214,     3,   296,
     811      -1,   214,     3,   216,   296,    -1,     3,   131,   123,   155,
     812      -1,   210,   127,   108,   126,   131,   123,   155,    -1,   212,
     813     127,   124,    -1,   209,   127,   124,    -1,   210,   127,   124,
     814      -1,   229,   127,   124,    -1,   213,   296,   298,   264,    -1,
     815     212,   108,   299,   296,   298,   264,    -1,   225,    -1,   229,
     816      -1,   231,    -1,   270,    -1,   226,    -1,   230,    -1,   232,
     817      -1,   271,    -1,    -1,   216,    -1,   217,    -1,   216,   217,
     818      -1,   218,    -1,   301,    -1,    10,    -1,    12,    -1,    11,
     819      -1,    14,    -1,    60,    -1,    -1,    13,   101,   219,   273,
     820     102,    -1,   221,    -1,   216,   221,    -1,   220,   216,   221,
     821      -1,   222,    -1,   221,   222,    -1,   223,    -1,     5,    -1,
     822       7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,    -1,
     823      62,    -1,    64,    -1,    16,    -1,    21,    -1,    20,    -1,
     824      18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,    -1,
     825      15,    -1,    24,    -1,    25,    -1,    26,    -1,   226,    -1,
     826     220,   226,    -1,   225,   222,    -1,   225,   222,   216,    -1,
     827     225,   222,   226,    -1,   227,    -1,   215,   228,   215,    -1,
     828     224,    -1,   216,   224,    -1,   227,   217,    -1,   227,   224,
     829      -1,    27,   101,   263,   102,    -1,    27,   101,   160,   102,
     830      -1,    71,   101,   263,   102,    -1,    71,   101,   160,   102,
     831      -1,   230,    -1,   220,   230,    -1,   229,   222,    -1,   229,
     832     222,   216,    -1,   233,    -1,   216,   233,    -1,   230,   217,
     833      -1,   232,    -1,   220,   232,    -1,   231,   222,    -1,   231,
     834     222,   216,    -1,    67,    -1,   216,    67,    -1,   232,   217,
     835      -1,   234,    -1,   244,    -1,   235,   106,   236,   107,    -1,
     836     235,   261,    -1,   235,   261,   106,   236,   107,    -1,   235,
     837     101,   279,   102,   106,   236,   107,    -1,   235,   272,    -1,
     838      30,   299,    -1,    31,   299,    -1,   237,    -1,   236,   237,
     839      -1,   238,   124,    -1,    38,   238,   124,    -1,   239,   124,
     840      -1,    38,   239,   124,    -1,   353,    -1,   353,   261,    -1,
     841     238,   108,   261,    -1,   238,   108,    -1,   214,   240,    -1,
     842     239,   108,   299,   240,    -1,    -1,   242,    -1,   305,   241,
     843      -1,   318,   241,    -1,   344,    -1,    -1,   242,    -1,   109,
     844     154,    -1,    29,   299,    -1,   243,   106,   245,   359,   107,
     845      -1,   243,   261,   106,   245,   359,   107,    -1,   243,   261,
     846      -1,   261,   246,    -1,   245,   108,   261,   246,    -1,    -1,
     847     123,   154,    -1,    -1,   248,    -1,   250,    -1,   249,    -1,
     848     249,   127,   108,   126,   250,    -1,   250,   127,   108,   126,
     849      89,    -1,   249,   127,   108,   126,    89,    -1,   254,    -1,
     850     250,   127,   108,   126,   254,    -1,   249,   127,   108,   126,
     851     254,    -1,   249,   127,   108,   126,   250,   127,   108,   126,
     852     254,    -1,   255,    -1,   250,   127,   108,   126,   255,    -1,
     853      -1,   252,    -1,   253,    -1,   253,   127,   108,   126,    89,
     854      -1,   257,    -1,   256,    -1,   253,   127,   108,   126,   257,
     855      -1,   253,   127,   108,   126,   256,    -1,   256,    -1,   349,
     856     259,   360,    -1,   357,   259,   360,    -1,   216,   357,   259,
     857     360,    -1,   206,    -1,   257,    -1,   349,    -1,   357,    -1,
     858     216,   357,    -1,   358,    -1,   213,   323,   360,    -1,   213,
     859     327,   360,    -1,   213,    -1,   213,   338,    -1,   131,    -1,
     860     258,   108,   131,    -1,   129,    -1,    67,    -1,    68,    -1,
     861     130,    -1,    67,    -1,    68,    -1,   131,    -1,    67,    -1,
     862      68,    -1,   353,    -1,   214,    -1,   214,   344,    -1,   353,
     863      -1,   358,    -1,   214,    -1,   214,   332,    -1,    -1,   123,
     864     265,    -1,   155,    -1,   106,   266,   359,   107,    -1,   265,
     865      -1,   267,   265,    -1,   266,   108,   265,    -1,   266,   108,
     866     267,   265,    -1,   268,   109,    -1,   261,   109,    -1,   269,
     867      -1,   268,   269,    -1,   105,   261,    -1,   103,   126,   155,
     868     127,   104,    -1,   103,   126,   297,   127,   104,    -1,   103,
     869     126,   154,    89,   154,   127,   104,    -1,   105,   103,   126,
     870     138,   127,   104,    -1,   271,    -1,   220,   271,    -1,   270,
     871     222,    -1,   270,   222,   216,    -1,   272,    -1,   216,   272,
     872      -1,   271,   217,    -1,    68,   101,   279,   102,    -1,   274,
     873     360,    -1,   273,   108,   274,   360,    -1,    -1,   276,   261,
     874     275,   277,    -1,   214,   323,    -1,    32,    -1,    34,    -1,
     875      33,    -1,    -1,   277,   278,    -1,   121,   261,   101,   279,
     876     102,    -1,   121,   106,   126,   285,   107,    -1,   121,   101,
     877     126,   273,   127,   102,   106,   126,   285,   107,   101,   279,
     878     102,    -1,   263,    -1,   155,    -1,   279,   108,   263,    -1,
     879     279,   108,   155,    -1,    32,   281,    -1,   221,    32,   281,
     880      -1,   280,   108,   281,    -1,   282,   277,    -1,   282,   277,
     881     123,   263,    -1,   261,    -1,   260,   101,   126,   273,   127,
     882     102,    -1,    35,   261,   101,   126,   273,   127,   102,   106,
     883     107,    -1,    -1,    35,   261,   101,   126,   273,   127,   102,
     884     106,   284,   285,   107,    -1,   286,    -1,   285,   126,   286,
     885      -1,   287,   127,   124,    -1,   288,   127,   124,    -1,   204,
     886      -1,   206,    -1,   287,   127,   108,   126,   259,    -1,   214,
     887     296,    -1,   288,   127,   108,   126,   296,    -1,    -1,   290,
     888      -1,   292,    -1,   290,   126,   292,    -1,    -1,   290,    -1,
     889     201,    -1,   294,    -1,   189,    -1,    -1,     5,    75,   293,
     890     106,   291,   107,    -1,    38,   292,    -1,   295,    -1,   310,
     891     164,    -1,   314,   126,   196,   164,    -1,   205,   164,    -1,
     892     213,   310,   164,    -1,   216,   310,   164,    -1,   220,   310,
     893     164,    -1,   220,   216,   310,   164,    -1,   213,   314,   126,
     894     196,   164,    -1,   216,   314,   126,   196,   164,    -1,   220,
     895     314,   126,   196,   164,    -1,   220,   216,   314,   126,   196,
     896     164,    -1,   305,    -1,   310,    -1,   318,    -1,   154,   115,
     897     154,    -1,    -1,    57,   101,   133,   102,   299,    -1,    -1,
     898     300,    -1,   301,    -1,   300,   301,    -1,    37,   101,   101,
     899     302,   102,   102,    -1,   303,    -1,   302,   108,   303,    -1,
     900      -1,   304,    -1,   304,   101,   161,   102,    -1,   259,    -1,
     901     223,    -1,   224,    -1,   217,    -1,   306,   299,    -1,   307,
     902      -1,   308,   299,    -1,   309,   299,    -1,   129,    -1,   101,
     903     306,   102,    -1,   111,   305,    -1,   111,   216,   305,    -1,
     904     101,   307,   102,    -1,   306,   336,    -1,   101,   307,   102,
     905     336,    -1,   101,   308,   102,   337,    -1,   101,   308,   102,
     906      -1,   101,   307,   102,   101,   126,   251,   127,   102,    -1,
     907     101,   309,   102,    -1,   311,   299,    -1,   312,    -1,   313,
     908     299,    -1,   306,   101,   126,   251,   127,   102,    -1,   101,
     909     312,   102,   101,   126,   251,   127,   102,    -1,   101,   311,
     910     102,    -1,   111,   310,    -1,   111,   216,   310,    -1,   101,
     911     312,   102,    -1,   101,   312,   102,   336,    -1,   101,   313,
     912     102,   337,    -1,   101,   313,   102,    -1,   315,    -1,   316,
     913      -1,   317,    -1,   306,   101,   258,   102,    -1,   101,   316,
     914     102,   101,   258,   102,    -1,   101,   315,   102,    -1,   111,
     915     314,    -1,   111,   216,   314,    -1,   101,   316,   102,    -1,
     916     101,   316,   102,   336,    -1,   101,   317,   102,   337,    -1,
     917     101,   317,   102,    -1,   319,   299,    -1,   320,    -1,   321,
     918     299,    -1,   322,   299,    -1,   328,    -1,   101,   319,   102,
     919      -1,   111,   318,    -1,   111,   216,   318,    -1,   101,   320,
     920     102,    -1,   319,   336,    -1,   101,   320,   102,   336,    -1,
     921     101,   321,   102,   337,    -1,   101,   321,   102,    -1,   319,
     922     101,   126,   251,   127,   102,    -1,   101,   320,   102,   101,
     923     126,   251,   127,   102,    -1,   101,   322,   102,    -1,   306,
     924     299,    -1,   324,    -1,   325,   299,    -1,   326,   299,    -1,
     925     111,   323,    -1,   111,   216,   323,    -1,   101,   324,   102,
     926      -1,   306,   342,    -1,   101,   324,   102,   336,    -1,   101,
     927     325,   102,   337,    -1,   101,   325,   102,    -1,   306,   101,
     928     126,   251,   127,   102,    -1,   101,   324,   102,   101,   126,
     929     251,   127,   102,    -1,   101,   326,   102,    -1,   328,   299,
     930      -1,   329,    -1,   330,   299,    -1,   331,   299,    -1,    67,
     931      -1,    68,    -1,   111,   327,    -1,   111,   216,   327,    -1,
     932     101,   329,   102,    -1,   328,   342,    -1,   101,   329,   102,
     933     342,    -1,   328,   101,   126,   251,   127,   102,    -1,   101,
     934     329,   102,   101,   126,   251,   127,   102,    -1,   333,    -1,
     935     334,   299,    -1,   335,   299,    -1,   111,    -1,   111,   216,
     936      -1,   111,   332,    -1,   111,   216,   332,    -1,   101,   333,
     937     102,    -1,   336,    -1,   101,   333,   102,   336,    -1,   101,
     938     334,   102,   337,    -1,   101,   334,   102,    -1,   101,   126,
     939     251,   127,   102,    -1,   101,   333,   102,   101,   126,   251,
     940     127,   102,    -1,   101,   335,   102,    -1,   103,   104,    -1,
     941     103,   104,   337,    -1,   337,    -1,   103,   126,   155,   127,
     942     104,    -1,   103,   126,   111,   127,   104,    -1,   337,   103,
     943     126,   155,   127,   104,    -1,   337,   103,   126,   111,   127,
     944     104,    -1,   339,    -1,   340,   299,    -1,   341,   299,    -1,
     945     111,    -1,   111,   216,    -1,   111,   338,    -1,   111,   216,
     946     338,    -1,   101,   339,   102,    -1,   342,    -1,   101,   339,
     947     102,   342,    -1,   101,   340,   102,   337,    -1,   101,   340,
     948     102,    -1,   101,   126,   251,   127,   102,    -1,   101,   339,
     949     102,   101,   126,   251,   127,   102,    -1,   101,   341,   102,
     950      -1,   343,    -1,   343,   337,    -1,   337,    -1,   103,   104,
     951      -1,   103,   126,   216,   111,   127,   104,    -1,   103,   126,
     952     216,   127,   104,    -1,   103,   126,   216,   155,   127,   104,
     953      -1,   103,   126,     7,   215,   155,   127,   104,    -1,   103,
     954     126,   216,     7,   155,   127,   104,    -1,   345,    -1,   346,
     955     299,    -1,   347,   299,    -1,   111,    -1,   111,   216,    -1,
     956     111,   344,    -1,   111,   216,   344,    -1,   101,   345,   102,
     957      -1,   336,    -1,   101,   345,   102,   336,    -1,   101,   346,
     958     102,   337,    -1,   101,   346,   102,    -1,   101,   345,   102,
     959     101,   126,   251,   127,   102,    -1,   101,   347,   102,    -1,
     960     349,    -1,   357,    -1,   216,   357,    -1,   350,    -1,   351,
     961      -1,   111,   214,    -1,   216,   111,   214,    -1,   111,   358,
     962      -1,   216,   111,   358,    -1,   111,   348,    -1,   216,   111,
     963     348,    -1,   103,   104,   214,    -1,   352,   214,    -1,   103,
     964     104,   337,   214,    -1,   352,   337,   214,    -1,   337,   214,
     965      -1,   103,   104,   350,    -1,   352,   350,    -1,   103,   104,
     966     337,   350,    -1,   352,   337,   350,    -1,   337,   350,    -1,
     967     103,   126,   216,   111,   127,   104,    -1,   103,   126,   216,
     968     155,   127,   104,    -1,   103,   126,   220,   155,   127,   104,
     969      -1,   103,   126,   220,   216,   155,   127,   104,    -1,   357,
     970      -1,   216,   357,    -1,   354,    -1,   355,    -1,   356,    -1,
     971     111,   214,    -1,   216,   111,   214,    -1,   111,   358,    -1,
     972     216,   111,   358,    -1,   111,   353,    -1,   216,   111,   353,
     973      -1,   103,   104,   214,    -1,   103,   104,   337,   214,    -1,
     974     337,   214,    -1,   103,   104,   355,    -1,   103,   104,   337,
     975     355,    -1,   337,   355,    -1,   103,   126,   250,   127,   104,
     976      -1,   103,   104,   101,   247,   102,    -1,   357,   101,   126,
     977     247,   127,   102,    -1,   207,   101,   126,   247,   127,   102,
     978      -1,    -1,   108,    -1,    -1,   123,   155,    -1
    989979};
    990980
     
    10171007     927,   931,   932,   947,   948,   949,   950,   951,   955,   960,
    10181008     967,   977,   982,   987,   995,  1000,  1005,  1010,  1015,  1023,
    1019     1028,  1040,  1045,  1052,  1054,  1061,  1066,  1071,  1082,  1087,
    1020     1092,  1097,  1102,  1110,  1115,  1123,  1124,  1125,  1126,  1132,
    1021     1137,  1145,  1146,  1147,  1148,  1152,  1153,  1154,  1155,  1160,
    1022     1161,  1170,  1171,  1176,  1177,  1182,  1184,  1186,  1188,  1190,
    1023     1193,  1192,  1204,  1205,  1207,  1217,  1218,  1223,  1227,  1229,
    1024     1231,  1233,  1235,  1237,  1239,  1241,  1246,  1248,  1250,  1252,
    1025     1254,  1256,  1258,  1260,  1262,  1264,  1266,  1268,  1274,  1275,
    1026     1277,  1279,  1281,  1286,  1287,  1293,  1294,  1296,  1298,  1303,
    1027     1305,  1307,  1309,  1314,  1315,  1317,  1319,  1324,  1325,  1327,
    1028     1332,  1333,  1335,  1337,  1342,  1344,  1346,  1351,  1352,  1356,
    1029     1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1375,  1380,
    1030     1382,  1387,  1389,  1394,  1395,  1397,  1398,  1403,  1404,  1406,
    1031     1408,  1413,  1415,  1421,  1422,  1424,  1427,  1430,  1435,  1436,
    1032     1441,  1446,  1450,  1452,  1454,  1459,  1461,  1467,  1468,  1476,
    1033     1477,  1481,  1482,  1483,  1485,  1487,  1494,  1495,  1497,  1499,
    1034     1504,  1505,  1511,  1512,  1516,  1517,  1522,  1523,  1524,  1526,
    1035     1534,  1535,  1537,  1540,  1542,  1546,  1547,  1548,  1550,  1552,
    1036     1556,  1561,  1569,  1570,  1579,  1581,  1586,  1587,  1588,  1592,
    1037     1593,  1594,  1598,  1599,  1604,  1605,  1606,  1611,  1612,  1613,
    1038     1614,  1620,  1621,  1625,  1626,  1630,  1631,  1632,  1633,  1648,
    1039     1649,  1654,  1655,  1660,  1662,  1665,  1667,  1669,  1692,  1693,
    1040     1695,  1697,  1702,  1704,  1706,  1711,  1712,  1718,  1717,  1721,
    1041     1725,  1727,  1729,  1735,  1736,  1741,  1746,  1748,  1753,  1755,
    1042     1756,  1758,  1763,  1765,  1767,  1772,  1774,  1779,  1784,  1792,
    1043     1798,  1797,  1811,  1812,  1817,  1818,  1822,  1827,  1832,  1840,
    1044     1845,  1856,  1857,  1868,  1869,  1875,  1876,  1880,  1881,  1882,
    1045     1885,  1884,  1895,  1900,  1906,  1912,  1921,  1927,  1933,  1939,
    1046     1945,  1953,  1959,  1967,  1973,  1982,  1983,  1984,  1988,  1992,
    1047     1994,  1997,  1999,  2003,  2004,  2008,  2012,  2013,  2016,  2018,
    1048     2019,  2023,  2024,  2025,  2026,  2060,  2061,  2062,  2063,  2067,
    1049     2072,  2077,  2079,  2081,  2086,  2088,  2090,  2092,  2097,  2099,
    1050     2109,  2110,  2111,  2115,  2117,  2119,  2124,  2126,  2128,  2133,
    1051     2135,  2137,  2146,  2147,  2148,  2152,  2154,  2156,  2161,  2163,
    1052     2165,  2170,  2172,  2174,  2189,  2190,  2191,  2192,  2196,  2201,
    1053     2206,  2208,  2210,  2215,  2217,  2219,  2221,  2226,  2228,  2230,
    1054     2240,  2241,  2242,  2243,  2247,  2249,  2251,  2256,  2258,  2260,
    1055     2262,  2267,  2269,  2271,  2302,  2303,  2304,  2305,  2309,  2317,
    1056     2319,  2321,  2326,  2328,  2333,  2335,  2349,  2350,  2351,  2355,
    1057     2357,  2359,  2361,  2363,  2368,  2369,  2371,  2373,  2378,  2380,
    1058     2382,  2388,  2390,  2392,  2396,  2398,  2400,  2402,  2416,  2417,
    1059     2418,  2422,  2424,  2426,  2428,  2430,  2435,  2436,  2438,  2440,
    1060     2445,  2447,  2449,  2455,  2456,  2458,  2467,  2470,  2472,  2475,
    1061     2477,  2479,  2492,  2493,  2494,  2498,  2500,  2502,  2504,  2506,
    1062     2511,  2512,  2514,  2516,  2521,  2523,  2531,  2532,  2533,  2538,
    1063     2539,  2543,  2545,  2547,  2549,  2551,  2553,  2560,  2562,  2564,
    1064     2566,  2568,  2570,  2572,  2574,  2576,  2578,  2583,  2585,  2587,
    1065     2592,  2618,  2619,  2621,  2625,  2626,  2630,  2632,  2634,  2636,
    1066     2638,  2640,  2647,  2649,  2651,  2653,  2655,  2657,  2662,  2667,
    1067     2669,  2671,  2689,  2691,  2696,  2697
     1009    1045,  1050,  1057,  1059,  1066,  1071,  1076,  1087,  1092,  1097,
     1010    1102,  1107,  1116,  1121,  1129,  1130,  1131,  1132,  1138,  1143,
     1011    1151,  1152,  1153,  1154,  1158,  1159,  1160,  1161,  1166,  1167,
     1012    1176,  1177,  1182,  1183,  1188,  1190,  1192,  1194,  1196,  1199,
     1013    1198,  1210,  1211,  1213,  1223,  1224,  1229,  1233,  1235,  1237,
     1014    1239,  1241,  1243,  1245,  1247,  1252,  1254,  1256,  1258,  1260,
     1015    1262,  1264,  1266,  1268,  1270,  1272,  1274,  1280,  1281,  1283,
     1016    1285,  1287,  1292,  1293,  1299,  1300,  1302,  1304,  1309,  1311,
     1017    1313,  1315,  1320,  1321,  1323,  1325,  1330,  1331,  1333,  1338,
     1018    1339,  1341,  1343,  1348,  1350,  1352,  1357,  1358,  1362,  1364,
     1019    1366,  1368,  1370,  1375,  1377,  1382,  1384,  1389,  1390,  1392,
     1020    1393,  1398,  1399,  1401,  1403,  1408,  1410,  1416,  1417,  1419,
     1021    1422,  1425,  1430,  1431,  1436,  1441,  1445,  1447,  1449,  1454,
     1022    1456,  1462,  1463,  1471,  1472,  1476,  1477,  1478,  1480,  1482,
     1023    1489,  1490,  1492,  1494,  1499,  1500,  1506,  1507,  1511,  1512,
     1024    1517,  1518,  1519,  1521,  1529,  1530,  1532,  1535,  1537,  1541,
     1025    1542,  1543,  1545,  1547,  1551,  1556,  1564,  1565,  1574,  1576,
     1026    1581,  1582,  1583,  1587,  1588,  1589,  1593,  1594,  1595,  1599,
     1027    1600,  1601,  1606,  1607,  1608,  1609,  1615,  1616,  1621,  1622,
     1028    1626,  1627,  1628,  1629,  1644,  1645,  1650,  1651,  1657,  1659,
     1029    1662,  1664,  1666,  1689,  1690,  1692,  1694,  1699,  1700,  1702,
     1030    1707,  1712,  1713,  1719,  1718,  1722,  1726,  1728,  1730,  1736,
     1031    1737,  1742,  1747,  1749,  1754,  1756,  1757,  1759,  1764,  1766,
     1032    1768,  1773,  1775,  1780,  1785,  1793,  1799,  1798,  1812,  1813,
     1033    1818,  1819,  1823,  1828,  1833,  1841,  1846,  1857,  1858,  1869,
     1034    1870,  1876,  1877,  1881,  1882,  1883,  1886,  1885,  1896,  1901,
     1035    1906,  1912,  1921,  1927,  1933,  1939,  1945,  1953,  1959,  1967,
     1036    1973,  1982,  1983,  1984,  1988,  1992,  1994,  1997,  1999,  2003,
     1037    2004,  2008,  2012,  2013,  2016,  2018,  2019,  2023,  2024,  2025,
     1038    2026,  2060,  2061,  2062,  2063,  2067,  2072,  2077,  2079,  2081,
     1039    2086,  2088,  2090,  2092,  2097,  2099,  2109,  2110,  2111,  2115,
     1040    2117,  2119,  2124,  2126,  2128,  2133,  2135,  2137,  2146,  2147,
     1041    2148,  2152,  2154,  2156,  2161,  2163,  2165,  2170,  2172,  2174,
     1042    2189,  2190,  2191,  2192,  2196,  2197,  2202,  2204,  2206,  2211,
     1043    2213,  2215,  2217,  2222,  2224,  2226,  2236,  2237,  2238,  2239,
     1044    2243,  2245,  2247,  2252,  2254,  2256,  2258,  2263,  2265,  2267,
     1045    2298,  2299,  2300,  2301,  2305,  2310,  2318,  2320,  2322,  2327,
     1046    2329,  2334,  2336,  2350,  2351,  2352,  2356,  2358,  2360,  2362,
     1047    2364,  2369,  2370,  2372,  2374,  2379,  2381,  2383,  2389,  2391,
     1048    2393,  2397,  2399,  2401,  2403,  2417,  2418,  2419,  2423,  2425,
     1049    2427,  2429,  2431,  2436,  2437,  2439,  2441,  2446,  2448,  2450,
     1050    2456,  2457,  2459,  2468,  2471,  2473,  2476,  2478,  2480,  2493,
     1051    2494,  2495,  2499,  2501,  2503,  2505,  2507,  2512,  2513,  2515,
     1052    2517,  2522,  2524,  2532,  2533,  2534,  2539,  2540,  2544,  2546,
     1053    2548,  2550,  2552,  2554,  2561,  2563,  2565,  2567,  2569,  2571,
     1054    2573,  2575,  2577,  2579,  2584,  2586,  2588,  2593,  2619,  2620,
     1055    2622,  2626,  2627,  2631,  2633,  2635,  2637,  2639,  2641,  2648,
     1056    2650,  2652,  2654,  2656,  2658,  2663,  2668,  2670,  2672,  2690,
     1057    2692,  2697,  2698
    10681058};
    10691059#endif
     
    11391129  "new_abstract_parameter_declaration", "parameter_declaration",
    11401130  "abstract_parameter_declaration", "identifier_list",
    1141   "identifier_or_typedef_name", "no_01_identifier_or_typedef_name",
    1142   "no_attr_identifier_or_typedef_name", "type_name_no_function",
    1143   "type_name", "initializer_opt", "initializer", "initializer_list",
    1144   "designation", "designator_list", "designator",
    1145   "typegen_declaration_specifier", "typegen_type_specifier",
    1146   "type_parameter_list", "type_parameter", "$@2", "type_class",
    1147   "assertion_list_opt", "assertion", "type_name_list",
    1148   "type_declaring_list", "type_declarator", "type_declarator_name",
    1149   "context_specifier", "$@3", "context_declaration_list",
    1150   "context_declaration", "new_context_declaring_list",
    1151   "context_declaring_list", "translation_unit", "external_definition_list",
     1131  "identifier_or_type_name", "no_01_identifier_or_type_name",
     1132  "no_attr_identifier_or_type_name", "type_name_no_function", "type_name",
     1133  "initializer_opt", "initializer", "initializer_list", "designation",
     1134  "designator_list", "designator", "typegen_declaration_specifier",
     1135  "typegen_type_specifier", "typegen_name", "type_parameter_list",
     1136  "type_parameter", "$@2", "type_class", "assertion_list_opt", "assertion",
     1137  "type_name_list", "type_declaring_list", "type_declarator",
     1138  "type_declarator_name", "context_specifier", "$@3",
     1139  "context_declaration_list", "context_declaration",
     1140  "new_context_declaring_list", "context_declaring_list",
     1141  "translation_unit", "external_definition_list",
    11521142  "external_definition_list_opt", "external_definition", "$@4",
    11531143  "external_function_definition", "function_definition", "declarator",
     
    11581148  "function_no_ptr", "function_ptr", "function_array",
    11591149  "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1160   "old_function_array", "typedef_redeclarator", "paren_typedef",
    1161   "typedef_ptr", "typedef_array", "typedef_function",
    1162   "identifier_parameter_declarator", "identifier_parameter_ptr",
    1163   "identifier_parameter_array", "identifier_parameter_function",
    1164   "typedef_parameter_redeclarator", "typedef", "typedef_parameter_ptr",
    1165   "typedef_parameter_array", "typedef_parameter_function",
    1166   "abstract_declarator", "abstract_ptr", "abstract_array",
    1167   "abstract_function", "array_dimension", "multi_array_dimension",
    1168   "abstract_parameter_declarator", "abstract_parameter_ptr",
    1169   "abstract_parameter_array", "abstract_parameter_function",
    1170   "array_parameter_dimension", "array_parameter_1st_dimension",
    1171   "variable_abstract_declarator", "variable_abstract_ptr",
    1172   "variable_abstract_array", "variable_abstract_function",
     1150  "old_function_array", "type_redeclarator", "paren_type", "type_ptr",
     1151  "type_array", "type_function", "identifier_parameter_declarator",
     1152  "identifier_parameter_ptr", "identifier_parameter_array",
     1153  "identifier_parameter_function", "type_parameter_redeclarator",
     1154  "typedef", "type_parameter_ptr", "type_parameter_array",
     1155  "type_parameter_function", "abstract_declarator", "abstract_ptr",
     1156  "abstract_array", "abstract_function", "array_dimension",
     1157  "multi_array_dimension", "abstract_parameter_declarator",
     1158  "abstract_parameter_ptr", "abstract_parameter_array",
     1159  "abstract_parameter_function", "array_parameter_dimension",
     1160  "array_parameter_1st_dimension", "variable_abstract_declarator",
     1161  "variable_abstract_ptr", "variable_abstract_array",
     1162  "variable_abstract_function",
    11731163  "new_identifier_parameter_declarator_tuple",
    11741164  "new_identifier_parameter_declarator_no_tuple",
     
    12301220     200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
    12311221     203,   204,   204,   204,   205,   205,   205,   205,   205,   206,
    1232      206,   206,   206,   207,   207,   208,   208,   208,   209,   209,
    1233      209,   209,   209,   210,   210,   211,   211,   211,   211,   212,
    1234      212,   213,   213,   213,   213,   214,   214,   214,   214,   215,
    1235      215,   216,   216,   217,   217,   218,   218,   218,   218,   218,
    1236      219,   218,   220,   220,   220,   221,   221,   222,   223,   223,
    1237      223,   223,   223,   223,   223,   223,   224,   224,   224,   224,
    1238      224,   224,   224,   224,   224,   224,   224,   224,   225,   225,
    1239      225,   225,   225,   226,   226,   227,   227,   227,   227,   228,
    1240      228,   228,   228,   229,   229,   229,   229,   230,   230,   230,
    1241      231,   231,   231,   231,   232,   232,   232,   233,   233,   234,
    1242      234,   234,   234,   234,   234,   234,   234,   234,   234,   235,
    1243      235,   236,   236,   237,   237,   237,   237,   238,   238,   238,
    1244      238,   239,   239,   240,   240,   240,   240,   240,   241,   241,
    1245      242,   243,   244,   244,   244,   245,   245,   246,   246,   247,
    1246      247,   248,   248,   248,   248,   248,   249,   249,   249,   249,
    1247      250,   250,   251,   251,   252,   252,   253,   253,   253,   253,
    1248      254,   254,   254,   254,   254,   255,   255,   255,   255,   255,
    1249      256,   256,   257,   257,   258,   258,   259,   259,   259,   260,
    1250      260,   260,   261,   261,   262,   262,   262,   263,   263,   263,
    1251      263,   264,   264,   265,   265,   266,   266,   266,   266,   267,
    1252      267,   268,   268,   269,   269,   269,   269,   269,   270,   270,
    1253      270,   270,   271,   271,   271,   272,   272,   274,   273,   273,
    1254      275,   275,   275,   276,   276,   277,   277,   277,   278,   278,
    1255      278,   278,   279,   279,   279,   280,   280,   281,   281,   282,
    1256      283,   282,   284,   284,   285,   285,   286,   286,   286,   287,
    1257      287,   288,   288,   289,   289,   290,   290,   291,   291,   291,
    1258      292,   291,   291,   293,   293,   293,   294,   294,   294,   294,
    1259      294,   294,   294,   294,   294,   295,   295,   295,   296,   297,
    1260      297,   298,   298,   299,   299,   300,   301,   301,   302,   302,
    1261      302,   303,   303,   303,   303,   304,   304,   304,   304,   305,
    1262      305,   306,   306,   306,   307,   307,   307,   307,   308,   308,
    1263      309,   309,   309,   310,   310,   310,   311,   311,   311,   312,
    1264      312,   312,   313,   313,   313,   314,   314,   314,   315,   315,
    1265      315,   316,   316,   316,   317,   317,   317,   317,   318,   318,
    1266      319,   319,   319,   320,   320,   320,   320,   321,   321,   321,
    1267      322,   322,   322,   322,   323,   323,   323,   324,   324,   324,
    1268      324,   325,   325,   325,   326,   326,   326,   326,   327,   328,
    1269      328,   328,   329,   329,   330,   330,   331,   331,   331,   332,
    1270      332,   332,   332,   332,   333,   333,   333,   333,   334,   334,
    1271      334,   335,   335,   335,   336,   336,   336,   336,   337,   337,
    1272      337,   338,   338,   338,   338,   338,   339,   339,   339,   339,
    1273      340,   340,   340,   341,   341,   341,   342,   342,   342,   342,
    1274      342,   342,   343,   343,   343,   344,   344,   344,   344,   344,
    1275      345,   345,   345,   345,   346,   346,   347,   347,   347,   348,
    1276      348,   349,   349,   349,   349,   349,   349,   350,   350,   350,
    1277      350,   350,   350,   350,   350,   350,   350,   351,   351,   351,
    1278      351,   352,   352,   352,   353,   353,   354,   354,   354,   354,
    1279      354,   354,   355,   355,   355,   355,   355,   355,   356,   357,
    1280      357,   357,   358,   358,   359,   359
     1222     206,   206,   207,   207,   208,   208,   208,   209,   209,   209,
     1223     209,   209,   210,   210,   211,   211,   211,   211,   212,   212,
     1224     213,   213,   213,   213,   214,   214,   214,   214,   215,   215,
     1225     216,   216,   217,   217,   218,   218,   218,   218,   218,   219,
     1226     218,   220,   220,   220,   221,   221,   222,   223,   223,   223,
     1227     223,   223,   223,   223,   223,   224,   224,   224,   224,   224,
     1228     224,   224,   224,   224,   224,   224,   224,   225,   225,   225,
     1229     225,   225,   226,   226,   227,   227,   227,   227,   228,   228,
     1230     228,   228,   229,   229,   229,   229,   230,   230,   230,   231,
     1231     231,   231,   231,   232,   232,   232,   233,   233,   234,   234,
     1232     234,   234,   234,   235,   235,   236,   236,   237,   237,   237,
     1233     237,   238,   238,   238,   238,   239,   239,   240,   240,   240,
     1234     240,   240,   241,   241,   242,   243,   244,   244,   244,   245,
     1235     245,   246,   246,   247,   247,   248,   248,   248,   248,   248,
     1236     249,   249,   249,   249,   250,   250,   251,   251,   252,   252,
     1237     253,   253,   253,   253,   254,   254,   254,   254,   254,   255,
     1238     255,   255,   255,   255,   256,   256,   257,   257,   258,   258,
     1239     259,   259,   259,   260,   260,   260,   261,   261,   261,   262,
     1240     262,   262,   263,   263,   263,   263,   264,   264,   265,   265,
     1241     266,   266,   266,   266,   267,   267,   268,   268,   269,   269,
     1242     269,   269,   269,   270,   270,   270,   270,   271,   271,   271,
     1243     272,   273,   273,   275,   274,   274,   276,   276,   276,   277,
     1244     277,   278,   278,   278,   279,   279,   279,   279,   280,   280,
     1245     280,   281,   281,   282,   282,   283,   284,   283,   285,   285,
     1246     286,   286,   287,   287,   287,   288,   288,   289,   289,   290,
     1247     290,   291,   291,   292,   292,   292,   293,   292,   292,   294,
     1248     294,   294,   295,   295,   295,   295,   295,   295,   295,   295,
     1249     295,   296,   296,   296,   297,   298,   298,   299,   299,   300,
     1250     300,   301,   302,   302,   303,   303,   303,   304,   304,   304,
     1251     304,   305,   305,   305,   305,   306,   306,   307,   307,   307,
     1252     308,   308,   308,   308,   309,   309,   310,   310,   310,   311,
     1253     311,   311,   312,   312,   312,   313,   313,   313,   314,   314,
     1254     314,   315,   315,   315,   316,   316,   316,   317,   317,   317,
     1255     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
     1256     321,   321,   321,   322,   322,   322,   323,   323,   323,   323,
     1257     324,   324,   324,   325,   325,   325,   325,   326,   326,   326,
     1258     327,   327,   327,   327,   328,   328,   329,   329,   329,   330,
     1259     330,   331,   331,   332,   332,   332,   333,   333,   333,   333,
     1260     333,   334,   334,   334,   334,   335,   335,   335,   336,   336,
     1261     336,   337,   337,   337,   337,   338,   338,   338,   339,   339,
     1262     339,   339,   339,   340,   340,   340,   340,   341,   341,   341,
     1263     342,   342,   342,   343,   343,   343,   343,   343,   343,   344,
     1264     344,   344,   345,   345,   345,   345,   345,   346,   346,   346,
     1265     346,   347,   347,   348,   348,   348,   349,   349,   350,   350,
     1266     350,   350,   350,   350,   351,   351,   351,   351,   351,   351,
     1267     351,   351,   351,   351,   352,   352,   352,   352,   353,   353,
     1268     353,   354,   354,   355,   355,   355,   355,   355,   355,   356,
     1269     356,   356,   356,   356,   356,   357,   358,   358,   358,   359,
     1270     359,   360,   360
    12811271};
    12821272
     
    12941284       3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
    12951285       3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
    1296        5,     1,     1,     3,     3,     2,     0,     1,     4,     5,
     1286       5,     1,     1,     3,     3,     2,     0,     1,     2,     5,
    12971287       6,     7,     1,     3,     1,     1,     1,     1,     1,     1,
    12981288       1,     1,     1,     1,     1,     3,     0,     1,     1,     1,
     
    13081298       3,     1,     1,     1,     3,     0,     1,     3,     4,     1,
    13091299       3,     1,     1,     3,     3,     3,     3,     3,     2,     3,
    1310        6,     3,     3,     4,     1,     2,     2,     3,     5,    10,
    1311       10,     7,     7,     5,     9,     2,     2,     5,     3,     5,
    1312        4,     3,     4,     4,     7,     3,     3,     3,     3,     4,
    1313        6,     1,     1,     1,     1,     1,     1,     1,     1,     0,
    1314        1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    1315        0,     5,     1,     2,     3,     1,     2,     1,     1,     1,
     1300       6,     3,     3,     4,     1,     2,     2,     3,     5,     8,
     1301       7,     7,     5,     9,     2,     2,     5,     3,     5,     4,
     1302       3,     4,     4,     7,     3,     3,     3,     3,     4,     6,
     1303       1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
     1304       1,     2,     1,     1,     1,     1,     1,     1,     1,     0,
     1305       5,     1,     2,     3,     1,     2,     1,     1,     1,     1,
    13161306       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1317        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
    1318        2,     3,     3,     1,     3,     1,     2,     2,     2,     4,
    1319        4,     4,     4,     1,     2,     2,     3,     1,     2,     2,
    1320        1,     2,     2,     3,     1,     2,     2,     1,     1,     4,
    1321        2,     5,     9,     7,    10,    12,     5,     7,    13,     2,
    1322        2,     1,     2,     2,     3,     2,     3,     1,     2,     3,
    1323        2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
    1324        2,     2,     5,     6,     2,     2,     4,     0,     2,     0,
    1325        1,     1,     1,     5,     5,     5,     1,     5,     5,     9,
    1326        1,     5,     0,     1,     1,     5,     1,     1,     5,     5,
    1327        1,     3,     3,     4,     1,     1,     1,     1,     2,     1,
    1328        3,     3,     1,     2,     1,     3,     1,     1,     1,     1,
    1329        1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
    1330        2,     0,     2,     1,     4,     1,     2,     3,     4,     2,
    1331        2,     1,     2,     2,     5,     5,     7,     6,     1,     2,
    1332        2,     3,     4,     5,     2,     2,     4,     0,     4,     2,
    1333        1,     1,     1,     0,     2,     5,     5,    13,     1,     1,
    1334        3,     3,     2,     3,     3,     2,     4,     1,     6,     9,
    1335        0,    11,     1,     3,     3,     3,     1,     1,     5,     2,
    1336        5,     0,     1,     1,     3,     0,     1,     1,     1,     1,
    1337        0,     6,     2,     1,     2,     4,     2,     3,     3,     3,
    1338        4,     5,     5,     5,     6,     1,     1,     1,     3,     0,
    1339        5,     0,     1,     1,     2,     6,     1,     3,     0,     1,
    1340        4,     1,     1,     1,     1,     2,     1,     2,     2,     1,
    1341        3,     2,     3,     3,     2,     4,     4,     3,     8,     3,
    1342        2,     1,     2,     6,     8,     3,     2,     3,     3,     4,
    1343        4,     3,     1,     1,     1,     4,     6,     3,     2,     3,
    1344        3,     4,     4,     3,     2,     1,     2,     2,     1,     3,
     1307       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
     1308       3,     3,     1,     3,     1,     2,     2,     2,     4,     4,
     1309       4,     4,     1,     2,     2,     3,     1,     2,     2,     1,
     1310       2,     2,     3,     1,     2,     2,     1,     1,     4,     2,
     1311       5,     7,     2,     2,     2,     1,     2,     2,     3,     2,
     1312       3,     1,     2,     3,     2,     2,     4,     0,     1,     2,
     1313       2,     1,     0,     1,     2,     2,     5,     6,     2,     2,
     1314       4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
     1315       1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
     1316       1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
     1317       1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
     1318       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1319       1,     2,     1,     1,     1,     2,     0,     2,     1,     4,
     1320       1,     2,     3,     4,     2,     2,     1,     2,     2,     5,
     1321       5,     7,     6,     1,     2,     2,     3,     1,     2,     2,
     1322       4,     2,     4,     0,     4,     2,     1,     1,     1,     0,
     1323       2,     5,     5,    13,     1,     1,     3,     3,     2,     3,
     1324       3,     2,     4,     1,     6,     9,     0,    11,     1,     3,
     1325       3,     3,     1,     1,     5,     2,     5,     0,     1,     1,
     1326       3,     0,     1,     1,     1,     1,     0,     6,     2,     1,
     1327       2,     4,     2,     3,     3,     3,     4,     5,     5,     5,
     1328       6,     1,     1,     1,     3,     0,     5,     0,     1,     1,
     1329       2,     6,     1,     3,     0,     1,     4,     1,     1,     1,
     1330       1,     2,     1,     2,     2,     1,     3,     2,     3,     3,
     1331       2,     4,     4,     3,     8,     3,     2,     1,     2,     6,
     1332       8,     3,     2,     3,     3,     4,     4,     3,     1,     1,
     1333       1,     4,     6,     3,     2,     3,     3,     4,     4,     3,
     1334       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
     1335       4,     4,     3,     6,     8,     3,     2,     1,     2,     2,
    13451336       2,     3,     3,     2,     4,     4,     3,     6,     8,     3,
    1346        2,     1,     2,     2,     2,     3,     3,     2,     4,     4,
    1347        3,     6,     8,     3,     2,     1,     2,     2,     1,     2,
    1348        3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
    1349        2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
    1350        3,     4,     5,     1,     5,     5,     6,     6,     1,     2,
    1351        2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
    1352        5,     8,     3,     1,     2,     1,     4,     6,     5,     6,
    1353        7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
    1354        1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
    1355        1,     2,     3,     2,     3,     2,     3,     5,     2,     6,
    1356        3,     2,     5,     2,     6,     3,     2,     6,     6,     6,
    1357        7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
    1358        2,     3,     5,     6,     2,     5,     6,     2,     5,     7,
    1359        6,     6,     0,     1,     0,     2
     1337       2,     1,     2,     2,     1,     1,     2,     3,     3,     2,
     1338       4,     6,     8,     1,     2,     2,     1,     2,     2,     3,
     1339       3,     1,     4,     4,     3,     5,     8,     3,     2,     3,
     1340       1,     5,     5,     6,     6,     1,     2,     2,     1,     2,
     1341       2,     3,     3,     1,     4,     4,     3,     5,     8,     3,
     1342       1,     2,     1,     2,     6,     5,     6,     7,     7,     1,
     1343       2,     2,     1,     2,     2,     3,     3,     1,     4,     4,
     1344       3,     8,     3,     1,     1,     2,     1,     1,     2,     3,
     1345       2,     3,     2,     3,     3,     2,     4,     3,     2,     3,
     1346       2,     4,     3,     2,     6,     6,     6,     7,     1,     2,
     1347       1,     1,     1,     2,     3,     2,     3,     2,     3,     3,
     1348       4,     2,     3,     4,     2,     5,     5,     6,     6,     0,
     1349       1,     0,     2
    13601350};
    13611351
     
    13651355static const yytype_uint16 yydefact[] =
    13661356{
    1367      279,   279,   300,   298,   301,   299,   302,   303,   285,   287,
    1368      286,     0,   288,   314,   306,   311,   309,   310,   308,   307,
    1369      312,   313,   315,   316,   317,   531,   531,   531,     0,     0,
    1370        0,   279,   279,   289,   304,   305,     7,   344,     0,     8,
    1371       13,    14,     0,     2,   279,   549,     9,   509,   507,   231,
    1372        3,   441,     3,   244,     0,     3,     3,     3,   232,     3,
    1373        0,     0,     0,   280,   281,   283,   279,   292,   295,   297,
    1374      325,   271,   318,   323,   272,   333,   273,   340,   337,   347,
    1375        0,     0,   348,   274,   458,     3,     3,     0,     2,   503,
    1376      508,   513,   284,     0,     0,   531,   561,   531,     2,   572,
    1377      573,   574,   279,     0,   714,   715,     0,    12,   279,     0,
    1378      255,   256,     0,   280,   275,   276,   277,   278,   510,   290,
    1379      381,   532,   533,   359,   360,    12,   433,   431,    11,   429,
    1380      432,     0,   487,   482,   473,   433,     0,     0,   512,     0,
    1381      280,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    1382      279,     2,     0,   716,   280,   566,   578,   720,   713,   711,
    1383      718,     0,     0,   238,     2,     0,   516,   427,   428,   426,
    1384        0,     0,     0,     0,   531,     0,   588,     0,     0,   529,
    1385      525,   531,   546,   531,   531,   526,     2,   527,   531,   585,
    1386      531,   531,     0,     0,     0,   279,   279,   298,   345,     0,
    1387        2,   279,   245,   282,   293,   326,   338,     0,     2,     0,
    1388      441,   246,   280,   319,   334,   341,   459,     0,     2,     0,
    1389      296,   320,   327,   328,     0,   335,   339,   342,   346,     0,
    1390        2,   279,   350,     0,   384,   460,   464,     0,     0,     0,
    1391        1,   279,     2,   514,   560,   562,   279,     2,   724,   280,
    1392      727,   529,   529,   280,     0,     0,     0,   258,   531,   526,
    1393        2,   279,     0,     0,   279,   534,     2,   485,     2,   538,
    1394        0,     0,     0,     0,    17,    56,     4,     5,     6,    15,
    1395        0,     0,     0,   279,     2,     0,   279,    62,    63,    64,
    1396       65,    19,    18,    20,    23,    47,    66,     0,    69,    73,
    1397       76,    79,    84,    87,    89,    91,    93,    95,    97,   102,
    1398      479,   734,   439,   478,     0,   437,   438,     0,   550,   565,
    1399      568,   571,   577,   580,   583,     2,   279,     0,     3,   414,
    1400        0,   422,   280,   279,   292,   318,   272,   333,   340,     3,
    1401        3,   396,   400,   410,   415,   458,   279,   416,   689,   690,
    1402      279,   417,   419,   279,     2,   567,   579,   712,     2,     2,
    1403      233,     2,     0,     0,   443,   442,   137,     2,     2,   235,
    1404        2,     2,   234,     2,   266,     2,   267,     0,   265,     0,
    1405        0,     0,     0,     0,     0,     0,     0,     0,   551,   590,
    1406        0,   441,     2,   545,   554,   643,   547,   548,   517,   279,
    1407        2,   584,   593,   586,   587,     0,   261,   279,   279,   324,
    1408        0,   280,   279,   279,   717,   721,   719,   518,   279,   529,
    1409      239,   247,   294,     0,     2,   519,   279,   483,   321,   322,
    1410      268,   336,   343,   279,   279,   279,     2,   373,   279,   361,
    1411        0,     0,   367,   711,   279,   732,   387,     0,   461,   484,
    1412      236,   237,   504,   279,   424,     0,   279,   221,     0,     2,
    1413      223,     0,   280,     0,   241,     2,   242,   263,     0,     0,
    1414        2,   279,   529,   279,   470,   472,   471,     0,     0,   734,
    1415        0,   279,     0,   279,   474,   279,   544,   542,   543,   541,
    1416        0,   536,   539,    66,   101,     0,   279,    54,    50,   279,
    1417       59,   279,   279,    48,    49,    61,     2,   124,     0,     0,
    1418      435,     0,   434,   279,    52,    53,    16,     0,    30,    31,
    1419       35,     2,     0,   114,   115,   116,   117,   118,   119,   120,
    1420      121,   122,   123,     0,     0,    51,     0,     0,     0,     0,
     1357     278,   278,   299,   297,   300,   298,   301,   302,   284,   286,
     1358     285,     0,   287,   313,   305,   310,   308,   309,   307,   306,
     1359     311,   312,   314,   315,   316,   527,   527,   527,     0,     0,
     1360       0,   278,   278,   288,   303,   304,     7,   343,     0,     8,
     1361      13,    14,     0,     2,   278,   545,     9,   505,   503,   231,
     1362       3,   436,     3,   244,     0,     3,     3,     3,   232,     3,
     1363       0,     0,     0,   279,   280,   282,   278,   291,   294,   296,
     1364     324,   270,   317,   322,   271,   332,   272,   339,   336,   346,
     1365       0,     0,   347,   273,   453,   457,     3,     3,     0,     2,
     1366     499,   504,   509,   283,     0,     0,   527,   557,   527,     2,
     1367     568,   569,   570,   278,     0,   711,   712,     0,    12,   278,
     1368       0,   254,   255,     0,   279,   274,   275,   276,   277,   506,
     1369     289,   375,   528,   529,   353,   354,    12,   427,   428,    11,
     1370     423,   426,     0,   483,   478,   469,   427,   428,     0,     0,
     1371     508,     0,   279,   278,     0,     0,     0,     0,     0,     0,
     1372       0,     0,   278,   278,     2,     0,   713,   279,   562,   574,
     1373     717,   710,   708,   715,     0,     0,   238,     2,     0,   512,
     1374     421,   422,   420,     0,     0,     0,     0,   527,     0,   614,
     1375     615,     0,     0,   525,   521,   527,   542,   527,   527,   522,
     1376       2,   523,   527,   581,   527,   527,   584,     0,     0,     0,
     1377     278,   278,   297,   344,     2,   278,   245,   281,   292,   325,
     1378     337,   458,     0,     2,     0,   436,   246,   279,   318,   333,
     1379     340,   454,     0,     2,     0,   295,   319,   326,   327,     0,
     1380     334,   338,   341,   345,   428,   278,   278,   349,   352,     0,
     1381     378,   455,   459,     0,     0,     0,     1,   278,     2,   510,
     1382     556,   558,   278,     2,   721,   279,   724,   525,   525,   279,
     1383       0,     0,     0,   257,   527,   522,     2,   278,     0,     0,
     1384     278,   530,     2,   481,     2,   534,     0,     0,     0,     0,
     1385      17,    56,     4,     5,     6,    15,     0,     0,     0,   278,
     1386       2,     0,   278,    62,    63,    64,    65,    19,    18,    20,
     1387      23,    47,    66,     0,    69,    73,    76,    79,    84,    87,
     1388      89,    91,    93,    95,    97,   102,   475,   731,   434,   474,
     1389       0,   432,   433,     0,   546,   561,   564,   567,   573,   576,
     1390     579,   343,     0,     2,   719,     0,   278,   722,     2,   278,
     1391       3,   408,     0,   416,   279,   278,   291,   317,   271,   332,
     1392     339,     3,     3,   390,   394,   404,   409,   453,   278,   410,
     1393     686,   687,   278,   411,   413,   278,     2,   563,   575,   709,
     1394       2,     2,   233,     2,     0,     0,   438,   437,   137,     2,
     1395       2,   235,     2,     2,   234,     2,   265,     2,   266,     0,
     1396     264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1397     547,   586,     0,   436,     2,   541,   550,   640,   543,   544,
     1398     513,   278,     2,   580,   589,   582,   583,     0,   260,   278,
     1399     278,   323,     0,   279,     0,   278,   714,   718,   716,   514,
     1400     278,   525,   239,   247,   293,     0,     2,   515,   278,   479,
     1401     320,   321,   267,   335,   342,     0,   278,     2,   367,   278,
     1402     355,     0,     0,   361,   708,   278,   729,   381,     0,   456,
     1403     480,   236,   237,   500,   278,   418,     0,   278,   221,     0,
     1404       2,   223,     0,   279,     0,   241,     2,   242,   262,     0,
     1405       0,     2,   278,   525,   278,   466,   468,   467,     0,     0,
     1406     731,     0,   278,     0,   278,   470,   278,   540,   538,   539,
     1407     537,     0,   532,   535,    66,   101,     0,   278,    54,    50,
     1408     278,    59,   278,   278,    48,    49,    61,     2,   124,     0,
     1409       0,   430,     0,   429,   108,   278,    52,    53,    16,     0,
     1410      30,    31,    35,     2,     0,   114,   115,   116,   117,   118,
     1411     119,   120,   121,   122,   123,     0,     0,    51,     0,     0,
    14211412       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1422        0,     0,     0,     0,     0,     0,   105,     2,   629,   440,
    1423      626,   531,   531,   634,   462,   279,     2,   569,     2,   570,
    1424        0,   581,   582,   279,     2,   279,     0,   691,   280,   695,
    1425      686,   687,   693,   279,     0,   618,     2,     2,   651,   531,
    1426      734,   601,   531,   531,   734,   531,   615,   531,   531,   665,
    1427      423,   648,   531,   531,   656,   663,   279,   418,   280,     0,
    1428        0,   279,   701,   280,   706,   734,   698,   279,   703,   734,
    1429        0,   279,   279,     0,     3,    17,     2,     0,     0,   445,
    1430      732,     0,     0,   451,   225,     0,   279,     0,     0,     0,
    1431      529,   553,   557,   559,   589,   592,   596,   599,   552,   591,
    1432        0,   269,     3,     0,   279,   262,     0,     0,     0,     0,
    1433      260,     0,     2,     0,     0,   243,   520,   279,     0,     0,
    1434      439,     3,     3,     0,     0,   279,     0,     0,   675,   371,
    1435      374,   378,   531,   378,   680,   377,   672,   531,   531,   349,
    1436      362,   370,   363,   531,   365,   368,   279,   733,     0,     0,
    1437      385,   732,   280,     3,   403,     3,   407,   406,   575,     0,
    1438      515,   279,     3,     3,   279,   422,   280,     3,   416,   417,
    1439        2,     0,     0,     0,   469,   291,   279,   465,   467,     3,
    1440        2,     2,     0,   486,     3,     0,   538,   126,     0,   210,
    1441        0,     0,     2,     0,     0,    36,     0,     0,   279,    21,
    1442        0,    22,     0,   675,   436,     0,   106,     0,     3,     2,
    1443       28,     2,     0,    33,     0,     2,    26,   103,   104,    70,
    1444       71,    72,    74,    75,    77,    78,    82,    83,    80,    81,
    1445       85,    86,    88,    90,    92,    94,    96,     0,     0,   735,
    1446      279,     0,     0,     0,   630,   631,   627,   628,   481,   480,
    1447      279,     0,     0,     0,   280,   279,   279,   645,   688,   344,
    1448        0,   722,   279,   725,   644,     2,   279,     0,     0,     0,
    1449        0,     0,     0,     0,     0,     3,   652,   604,   619,   653,
    1450        2,   600,   607,   420,   602,   603,   421,     2,   614,   622,
    1451      616,   617,   649,   650,   664,   692,   696,   694,   734,   253,
    1452        2,   728,     2,   411,   700,   705,   412,   279,     3,   390,
    1453        3,     3,     3,   441,     0,     3,     3,     2,   453,   450,
    1454      733,     0,   446,     2,   449,   452,     0,   279,   226,   248,
    1455        3,   257,   259,     0,   441,     2,   555,   556,     2,   594,
    1456      595,     0,     3,     0,   521,     3,   330,   329,   332,   331,
    1457      463,   279,     0,   522,     0,   523,   356,     2,   629,     0,
    1458        0,   364,   366,     2,     0,     0,     0,     0,     0,   380,
    1459      676,   677,   375,   379,   376,   673,   674,   369,   373,   351,
    1460      387,   382,   388,     0,     0,     0,   425,   224,     0,     0,
    1461        3,     2,   651,   418,     0,   511,     0,   734,   473,     0,
    1462      279,   279,   279,     0,   535,   537,   127,     0,   206,     0,
    1463        0,   211,   212,    55,    60,   279,     0,    58,    57,     0,
    1464        0,   125,   676,     0,    67,    68,   107,   112,     3,   108,
    1465      106,     0,     0,     3,    25,    35,     3,     0,    99,     0,
    1466        3,   633,   637,   640,   632,     3,   576,   108,     2,   279,
    1467        3,     3,   280,     0,     2,     2,   723,   726,     0,     3,
    1468      606,   610,   613,   621,   655,   659,   662,   279,     0,     3,
    1469      605,   620,   654,   279,   279,   413,   279,   279,   279,     0,
    1470        0,     0,     0,   240,   108,     0,   101,     0,     3,     3,
    1471        0,   447,     0,   444,     0,     0,   229,   279,     0,     0,
    1472      126,     0,     0,     0,     0,     0,   126,     0,     0,     0,
    1473        2,     0,     0,     3,   128,   129,     2,   139,   130,   131,
    1474      132,   133,   134,   135,   141,   143,     0,     0,     0,   270,
    1475      279,   279,   531,   641,     0,     0,     0,   524,   630,     0,
    1476        0,   279,   279,   679,   683,   685,   678,   372,   386,   383,
    1477      563,     2,   647,   646,     0,   652,     2,   466,   468,   488,
    1478        3,   496,   497,     0,     2,   492,     3,     3,     0,     0,
    1479      540,     0,     0,   210,     0,     3,    37,   108,   732,   106,
    1480        0,     3,   644,    42,     3,    40,     3,    34,     0,     3,
    1481       98,   100,     0,     2,   635,   636,     0,   697,   279,   702,
    1482      279,     0,     0,     0,     3,   279,   279,   279,   621,     0,
    1483        2,   608,   609,     2,   623,     2,   657,   658,     0,   666,
    1484        0,     3,     0,     3,     3,     3,     3,   398,   397,   401,
    1485        0,   731,     2,     2,   730,   109,     0,     0,     0,     0,
    1486        3,   448,     3,     0,   227,   142,     3,   280,   279,     0,
    1487        0,     0,     0,     2,   187,     0,   185,     0,     0,     0,
    1488        0,     0,     0,   191,     0,   279,   531,   147,   144,   279,
    1489        0,     0,   252,   264,     3,     3,   530,   642,   597,   279,
    1490      279,   279,   353,   357,     0,     2,   681,   682,   279,   251,
    1491      279,     0,   499,   476,   279,     0,     0,   475,   490,     0,
    1492      207,     0,   213,   106,     0,     0,   113,   110,     0,     0,
    1493        0,     0,     0,     0,    24,     0,   638,   279,   564,   699,
    1494      704,   707,   708,   709,     0,     3,     3,   660,   279,   279,
    1495      279,     3,     3,     0,   668,     0,     0,     0,     0,   729,
    1496      279,   279,     3,   528,   109,   455,     0,     0,   230,   280,
    1497        0,     0,     0,     0,   279,   188,   186,     0,   183,   189,
    1498        0,     0,     0,   192,   195,   193,   190,     0,   126,   140,
    1499      138,   228,     0,     0,     0,   279,   279,   108,   279,   405,
    1500      409,   408,     0,   493,     2,   494,     2,   495,   489,   279,
    1501      214,     0,     0,     3,   644,    32,   111,     2,    45,     2,
    1502       43,    41,    29,   109,    27,     3,   710,     0,     0,     3,
    1503        3,     3,     0,     0,   667,   669,   611,   624,   254,     2,
    1504      395,     3,   394,     0,   457,   454,   126,     0,     0,   126,
    1505        3,     0,   126,   184,     0,     2,   200,   194,     0,   108,
    1506      136,   558,   598,     0,   352,   279,     3,     2,     0,     0,
    1507        2,   208,   215,     0,     0,     0,     0,     0,     0,   250,
    1508      249,     0,     0,     0,   670,   671,   279,     0,   456,   148,
    1509        0,     0,     2,   161,   126,   150,     0,   178,     0,   126,
    1510        0,     2,   152,     0,     2,     2,   279,     0,   354,     0,
    1511      279,   498,   500,   491,     0,     0,   111,    38,     3,     3,
    1512      639,   612,   625,   661,   399,   126,   154,   157,     0,   156,
    1513      160,     3,   163,   162,     0,   126,   180,   126,     3,     0,
    1514      279,     0,     2,   279,   279,   684,     2,   209,   216,     0,
    1515        0,     0,   149,     0,     0,   159,   217,   164,     2,   219,
    1516      179,     0,   182,   168,   196,     3,   201,   205,     0,   279,
    1517      355,   279,     0,    39,    46,    44,   155,   158,   126,     0,
    1518      165,   279,   126,   126,     0,   169,     0,     0,   675,   202,
    1519      203,   204,   197,     3,   358,   279,   145,   166,   151,   126,
    1520      220,   181,   176,   174,   170,   153,   126,     0,   676,     0,
     1413       0,     0,     0,     0,     0,     0,     0,     0,   105,     2,
     1414     626,   435,   623,   527,   527,   631,   460,   278,     2,   565,
     1415     566,     0,   577,   578,     0,     2,   720,   723,   108,   278,
     1416       2,   278,     0,   688,   279,   692,   683,   684,   690,     0,
     1417       2,     2,   648,   527,   731,   597,   527,   527,   731,   527,
     1418     611,   527,   527,   662,   417,   645,   527,   527,   653,   660,
     1419     278,   412,   279,     0,     0,   278,   698,   279,   703,   731,
     1420     695,   278,   700,   731,   278,   278,   278,     0,   108,     0,
     1421      17,     2,     0,     0,   440,   729,     0,     0,   446,   225,
     1422       0,   278,     0,     0,     0,   525,   549,   553,   555,   585,
     1423     588,   592,   595,   548,   587,     0,   268,   638,     0,   278,
     1424     261,     0,     0,     0,     0,   259,     2,     0,   243,   516,
     1425     278,     0,     0,     0,     0,   278,   278,     0,     0,   672,
     1426     365,   368,   372,   527,   372,   677,   371,   669,   527,   527,
     1427     348,   356,   364,   357,   527,   359,   362,   278,   730,     0,
     1428       0,   379,   729,   279,     3,   397,     3,   401,   400,   571,
     1429       0,   511,   278,     3,     3,   278,   416,   279,     3,   410,
     1430     411,     2,     0,     0,     0,   465,   290,   278,   461,   463,
     1431       3,     2,     2,     0,   482,     3,     0,   534,   126,     0,
     1432     210,     0,     0,     2,     0,     0,    36,     0,     0,   108,
     1433     278,    21,     0,    22,     0,   672,   431,     0,   106,     3,
     1434       2,    28,     2,     0,    33,     0,     2,    26,   103,   104,
     1435      70,    71,    72,    74,    75,    77,    78,    82,    83,    80,
     1436      81,    85,    86,    88,    90,    92,    94,    96,     0,     0,
     1437     732,   278,     0,     0,     0,   627,   628,   624,   625,   477,
     1438     476,   278,     0,     3,   278,   694,   278,   699,   279,   278,
     1439     278,   278,   642,   685,   641,     2,   278,     0,     0,     0,
     1440       0,     0,     0,     0,     0,   663,     0,   649,   600,   616,
     1441     650,     2,   596,   603,   414,   598,   599,   415,     2,   610,
     1442     619,   612,   613,   646,   647,   661,   689,   693,   691,   731,
     1443     252,     2,   725,     2,   405,   697,   702,   406,     0,   384,
     1444       3,     3,     3,     3,   436,     3,     0,     2,   448,   445,
     1445     730,     0,   441,     2,   444,   447,     0,   278,   226,   248,
     1446       3,   256,   258,     0,   436,     2,   551,   552,     2,   590,
     1447     591,     0,   639,   517,     3,   329,   328,   331,   330,   278,
     1448     518,     0,   519,   278,   358,   360,     2,     0,     0,     0,
     1449       0,   374,   673,   674,   369,   373,   370,   670,   671,   363,
     1450     367,   350,   381,   376,   382,     0,     0,     0,   419,   224,
     1451       0,     0,     3,     2,   648,   412,     0,   507,     0,   731,
     1452     469,     0,   278,   278,   278,     0,   531,   533,   127,     0,
     1453     206,     0,     0,   211,   212,    55,    60,   278,     0,    58,
     1454      57,     0,   125,   673,     0,    67,    68,   107,   112,     3,
     1455     106,     0,     0,     0,    25,    35,     3,     0,    99,     0,
     1456       3,   630,   634,   637,   629,     3,   572,     3,   696,   701,
     1457       2,   278,     3,     3,   279,     0,     3,   602,   606,   609,
     1458     618,   652,   656,   659,   278,     3,   601,   617,   651,   278,
     1459     278,   407,   278,   278,   726,     0,     0,     0,     0,   240,
     1460       0,   101,     0,     3,     3,     0,   442,     0,   439,     0,
     1461       0,   229,   278,     0,     0,   126,     0,     0,     0,     0,
     1462       0,   126,     0,     0,     0,     2,     0,     0,     3,   128,
     1463     129,     2,   139,   130,   131,   132,   133,   134,   135,   141,
     1464     143,     0,     0,     0,   269,   278,   278,   527,     0,   520,
     1465     278,   108,   676,   680,   682,   675,   366,   380,   377,   559,
     1466       2,   644,   643,     0,   649,     2,   462,   464,   484,     3,
     1467     492,   493,     0,     2,   488,     3,     3,     0,     0,   536,
     1468       0,     0,   210,     0,     3,    37,   729,   106,     0,     3,
     1469     641,    42,     3,    40,     3,    34,     0,     3,    98,   100,
     1470       0,     2,   632,   633,     0,     0,   278,     0,     0,     0,
     1471       3,   618,     0,     2,   604,   605,     2,   620,     2,   654,
     1472     655,     0,     0,     3,     0,     3,     3,     3,     3,   392,
     1473     391,   395,     2,     2,   728,   727,   109,     0,     0,     0,
     1474       0,     3,   443,     3,     0,   227,   142,     3,   279,   278,
     1475       0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
     1476       0,     0,     0,     0,   191,     0,   108,   527,   147,   144,
     1477     278,     0,     0,   251,   263,     3,     3,   526,   593,   351,
     1478       2,   678,   679,   278,   250,   278,     0,   495,   472,   278,
     1479       0,     0,   471,   486,     0,   207,     0,   213,   106,     0,
     1480       0,   113,   110,     0,     0,     0,     0,     0,     0,    24,
     1481       0,   635,   278,   560,   249,   704,   705,   706,     0,   657,
     1482     278,   278,   278,     3,     3,     0,   665,     0,     0,     0,
     1483       0,   278,   278,     3,   524,   109,   450,     0,     0,   230,
     1484     279,     0,     0,     0,     0,   278,   188,   186,     0,   183,
     1485     189,     0,     0,     0,   192,   195,   193,   190,   126,   140,
     1486     138,   228,     0,     0,   278,   399,   403,   402,     0,   489,
     1487       2,   490,     2,   491,   485,   278,   214,     0,     0,     3,
     1488     641,    32,   111,     2,    45,     2,    43,    41,    29,   109,
     1489      27,     3,   707,     3,     3,     3,     0,     0,   664,   666,
     1490     607,   621,   253,     2,   389,     3,   388,     0,   452,   449,
     1491     126,     0,     0,   126,     3,     0,   126,   184,     0,     2,
     1492     200,   194,     0,   136,   554,   594,     3,     2,     0,     0,
     1493       2,   208,   215,     0,     0,     0,     0,     0,     0,     0,
     1494       0,     0,   667,   668,   278,     0,   451,   148,     0,     0,
     1495       2,   161,   126,   150,     0,   178,     0,   126,     0,     2,
     1496     152,     0,     2,     2,     0,   278,   494,   496,   487,     0,
     1497       0,   111,    38,     3,     3,   636,   608,   622,   658,   393,
     1498     126,   154,   157,     0,   156,   160,     3,   163,   162,     0,
     1499     126,   180,   126,     3,     0,   278,     0,     2,   681,     2,
     1500     209,   216,     0,     0,     0,   149,     0,     0,   159,   217,
     1501     164,     2,   219,   179,     0,   182,   168,   196,     3,   201,
     1502     205,     0,   278,     0,    39,    46,    44,   155,   158,   126,
     1503       0,   165,   278,   126,   126,     0,   169,     0,     0,   672,
     1504     202,   203,   204,   197,     3,   278,   145,   166,   151,   126,
     1505     220,   181,   176,   174,   170,   153,   126,     0,   673,     0,
    15211506       0,   146,   167,   177,   171,   175,   174,   172,     3,     0,
    1522      477,   173,   198,     3,   199
     1507     473,   173,   198,     3,   199
    15231508};
    15241509
     
    15261511static const yytype_int16 yydefgoto[] =
    15271512{
    1528       -1,   816,   457,   291,    45,   129,   130,   292,   293,   294,
    1529      295,   762,   744,  1134,  1135,   296,   297,   298,   299,   300,
    1530      301,   302,   303,   304,   305,   306,   307,   308,   309,  1037,
    1531      507,   977,   311,   978,   534,   956,  1062,  1526,  1064,  1065,
    1532     1066,  1067,  1527,  1068,  1069,  1457,  1458,  1423,  1424,  1425,
    1533     1509,  1510,  1514,  1515,  1544,  1545,  1070,  1381,  1071,  1072,
    1534     1313,  1314,  1315,  1495,  1073,   960,   961,   962,  1403,  1487,
    1535     1488,   458,   459,   877,   878,  1045,    48,    49,    50,    51,
    1536       52,   329,   152,    55,    56,    57,    58,    59,   331,    61,
    1537       62,   253,    64,    65,   264,   333,   334,    68,    69,    70,
    1538       71,   114,    73,   195,   336,   115,    76,   116,    78,    79,
    1539       80,   438,   439,   440,   441,   679,   922,   680,    81,    82,
    1540      445,   700,   858,   859,   339,   340,   703,   704,   705,   341,
    1541      342,   343,   344,   455,   170,   131,   132,   511,   313,   163,
    1542      629,   630,   631,   632,   633,    83,   117,   478,   479,   948,
    1543      480,   267,   484,   314,    85,   133,   134,    86,  1339,  1114,
    1544     1115,  1116,  1117,    87,    88,   721,    89,   263,    90,    91,
    1545      179,  1039,   665,   393,   121,    92,   490,   491,   492,   180,
    1546      258,   182,   183,   184,   259,    95,    96,    97,    98,    99,
    1547      100,   101,   187,   188,   189,   190,   191,   827,   591,   592,
    1548      593,   594,   595,   596,   597,   598,   559,   560,   561,   562,
    1549      684,   102,   600,   601,   602,   603,   604,   605,   921,   686,
    1550      687,   688,   579,   347,   348,   349,   350,   442,   158,   104,
    1551      105,   351,   352,   698,   556
     1513      -1,   826,   468,   297,    45,   130,   131,   298,   299,   300,
     1514     301,   773,   755,  1122,  1123,   302,   303,   304,   305,   306,
     1515     307,   308,   309,   310,   311,   312,   313,   314,   315,  1032,
     1516     518,   978,   317,   979,   546,   958,  1057,  1476,  1059,  1060,
     1517    1061,  1062,  1477,  1063,  1064,  1412,  1413,  1381,  1382,  1383,
     1518    1460,  1461,  1465,  1466,  1494,  1495,  1065,  1345,  1066,  1067,
     1519    1284,  1285,  1286,  1448,  1068,   962,   963,   964,  1363,  1440,
     1520    1441,   469,   470,   887,   888,  1040,    48,    49,    50,    51,
     1521      52,   341,   155,    55,    56,    57,    58,    59,   343,    61,
     1522      62,   259,    64,    65,   270,   345,   346,    68,    69,    70,
     1523      71,   115,    73,   200,   348,   116,    76,   117,    78,    79,
     1524      80,   449,   450,   451,   452,   690,   924,   691,    81,    82,
     1525     456,   711,   868,   869,   351,   352,   714,   715,   716,   353,
     1526     354,   355,   356,   466,   335,   132,   133,   522,   319,   166,
     1527     644,   645,   646,   647,   648,    83,   118,    85,   489,   490,
     1528     950,   491,   273,   495,   320,    86,   134,   135,    87,  1305,
     1529    1103,  1104,  1105,  1106,    88,    89,   732,    90,   269,    91,
     1530      92,   183,  1034,   678,   405,   122,    93,   501,   502,   503,
     1531     184,   264,   186,   187,   188,   265,    96,    97,    98,    99,
     1532     100,   101,   102,   191,   192,   193,   194,   195,   838,   605,
     1533     606,   607,   608,   196,   610,   611,   612,   571,   572,   573,
     1534     574,   695,   103,   614,   615,   616,   617,   618,   619,   923,
     1535     697,   698,   699,   595,   359,   360,   361,   362,   321,   161,
     1536     105,   106,   107,   364,   709,   568
    15521537};
    15531538
    15541539/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15551540   STATE-NUM.  */
    1556 #define YYPACT_NINF -1297
     1541#define YYPACT_NINF -1269
    15571542static const yytype_int16 yypact[] =
    15581543{
    1559     5063, 10209, -1297,   115, -1297, -1297, -1297, -1297, -1297, -1297,
    1560    -1297,   109, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1561    -1297, -1297, -1297, -1297, -1297,   252,   252,   252,   866,   397,
    1562      123,  7705,   771, -1297, -1297, -1297, -1297, -1297,   225, -1297,
    1563    -1297, -1297,   776, -1297,  9574, -1297, -1297, -1297, -1297, -1297,
    1564    -1297,   208,   239, -1297,  1099, -1297, -1297, -1297, -1297,   242,
    1565      505,   360,   130,  7814, -1297, -1297,  9642,   626, -1297, -1297,
    1566    -1297,   693,   365,  5846,   163,   733,   693,  1021, -1297, -1297,
    1567      289,   218, -1297,   693,  1254,   275, -1297,   401,   413, -1297,
    1568    -1297, -1297, -1297,   327,   239,   252, -1297,   252, -1297, -1297,
    1569    -1297, -1297, 10445,  1099, -1297, -1297,  1099, -1297, 10504,   344,
    1570    -1297, -1297,   638, 10563, -1297,   771,   771,   771, -1297, -1297,
    1571    -1297,   252, -1297, -1297, -1297,   380,   384, -1297, -1297, -1297,
    1572    -1297,   400, -1297, -1297, -1297, -1297,   457,   466, -1297,   486,
    1573      771,  9150,  2777,    75,   495,   519,   568,   584,   594,   602,
    1574     3892, -1297,   608, -1297,  9710, -1297, -1297, -1297, -1297,   617,
    1575    -1297,   206,  4815, -1297,   643,   243, -1297, -1297, -1297, -1297,
    1576      639,   325,   326,   385,   252,   663, -1297,   505,  1914,   735,
    1577    -1297,    84, -1297,   252,   252,   239, -1297, -1297,   105, -1297,
    1578      252,   252,  2563,   705,   742,   771, 11342, -1297, -1297,   746,
    1579    -1297,  9574, -1297, -1297,   693, -1297, -1297,   239, -1297,  1099,
    1580      208, -1297,  3694, -1297,   771,   771,   771,   239, -1297,   866,
    1581    -1297,  3561, -1297, -1297,   691,   771, -1297,   771, -1297,   769,
    1582    -1297, 10268,   768,   397,   795,   771, -1297,   866,   782,   789,
    1583    -1297,  7705,   852, -1297, -1297, -1297,  3826, -1297, -1297, 11035,
    1584    -1297,   735,   121, 10563,  6255,   638,  2563, -1297,   136, -1297,
    1585    -1297, 10504,  1099,   814, 12170, -1297, -1297,   422, -1297, 11905,
    1586    11622, 11679, 11622, 11736, -1297,   824, -1297, -1297, -1297, -1297,
    1587    11793, 11793,   852,  8832, -1297, 11622,  9256, -1297, -1297, -1297,
    1588    -1297, -1297, -1297,   872, -1297,   996,  2005, 11622, -1297,   482,
    1589      140,   497,   633,   675,   843,   844,   870,   901,    28, -1297,
    1590    -1297,   884,   516, -1297,   314, -1297, -1297,  2777, -1297, -1297,
    1591      551,   911, -1297,   588,   911, -1297,  8938,   933, -1297, -1297,
    1592     1002,  1428,  8472, 11342,   693, -1297,   693,   771,   771, -1297,
    1593    -1297, -1297, -1297, -1297, -1297,   771, 10622,  1099, -1297, -1297,
    1594    10681,  1019, -1297,  3892, -1297, -1297, -1297, -1297, -1297, -1297,
    1595    -1297, -1297,  4608, 11622, -1297, -1297, -1297, -1297, -1297, -1297,
    1596    -1297, -1297, -1297, -1297, -1297, -1297, -1297,   638, -1297,   839,
    1597      916,   938,   940,   867,   949,   963,   970,  1914, -1297, -1297,
    1598      979,   208, -1297, -1297, -1297,   980, -1297, -1297, -1297,  3826,
    1599    -1297, -1297, -1297, -1297, -1297,  2563, -1297,  9150,  9150, -1297,
    1600      638, 12198,  9150,  8124, -1297, -1297, -1297, -1297,  3826,   121,
    1601    -1297, -1297,   693,   239, -1297, -1297,  3826, -1297,  4002, -1297,
    1602    -1297,   771,   771,  9150,  8726, 10740, -1297,   377,  4504, -1297,
    1603      388,   402,   397, -1297, 10268,   981,   975,   397,   771, -1297,
    1604    -1297, -1297, -1297, 11159, -1297,   339,  8392, -1297,   239,   994,
    1605    -1297,   638, 11980,  6754, -1297, -1297, -1297, -1297,   926,  2563,
    1606    -1297,  8537,   735,  6493, -1297, -1297, -1297,   944,   540,   884,
    1607      397, 12170,   276, 10504, -1297, 12170, -1297, -1297, -1297, -1297,
    1608      571, -1297,  1009, -1297, -1297,    18,  8832, -1297, -1297,  8832,
    1609    -1297,  9044,  8832, -1297, -1297, -1297, -1297, -1297,   604,  1010,
    1610      581,  1012, -1297,  7016, -1297, -1297, -1297,   147, -1297, -1297,
    1611     6903, -1297,   152, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1612    -1297, -1297, -1297,  6255,  6255, -1297, 11622, 11622, 11622, 11622,
    1613    11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622, 11622,
    1614    11622, 11622, 11622, 11622,  5083,  6255, -1297,   516,   886, -1297,
    1615    -1297,   252,   252, -1297, -1297,  9150, -1297, -1297, -1297,   980,
    1616      852, -1297,   980,  7016, -1297,  9362,  1015, -1297, 10799, -1297,
    1617    -1297,   617, -1297,  9846,  1017, -1297,   804, -1297,  1782,   146,
    1618      884, -1297,   252,   252,   884,   236, -1297,   252,   252,   980,
    1619    -1297, -1297,   252,   252, -1297,   911, 10858,  1099, 12111,   198,
    1620      427, 10858, -1297, 11094, -1297,   884, -1297, 10622, -1297,    14,
    1621     1020,  8189,  8189,  1099,  5252,  1014, -1297,   210,  1022, -1297,
    1622     1025,  4815,   367, -1297,  1106,  1099,  8189,   852,   638,   852,
    1623      735,   737,   911, -1297, -1297,   753,   911, -1297, -1297, -1297,
    1624     1060, -1297, 11565,   239, 11159, -1297,   629,  1035,   670,  1036,
    1625    -1297,   699, -1297,  1037,   239, -1297, -1297,  3826,   239,   701,
    1626      889,  1032,  1034,   405,   425,  7368,  1486, 11622,  2366, -1297,
    1627    -1297,  1039,   125,  1039, -1297, -1297, -1297,   252,   252, -1297,
    1628    -1297,   397, -1297,   252, -1297, -1297,  9914,   397,  1038, 11622,
    1629    -1297,   981, 12111, -1297, -1297,  1047, -1297, -1297, -1297,   852,
    1630    -1297, 12046, 11622, -1297,  8189,   610,  8472, -1297, -1297,   617,
    1631     1048,  1050,   944,  2999, -1297, -1297, 12170, -1297, -1297,  1032,
    1632    -1297, -1297,  1053, -1297,  1032,  1056, 11905,  6255,  1045,  1085,
    1633     1059,  1061, -1297,  1062,  1068, -1297,  1075,  1077,  7128, -1297,
    1634     6255, -1297,   581,  1714, -1297,  5360,  6255,  1076,  1078, -1297,
    1635    -1297, -1297,   711, -1297,  6255, -1297, -1297, -1297, -1297, -1297,
    1636    -1297, -1297,   482,   482,   140,   140,   497,   497,   497,   497,
    1637      633,   633,   675,   843,   844,   870,   901, 11622,   667, -1297,
    1638    11159,  1081,  1082,  1083,   886, -1297, -1297, -1297, -1297, -1297,
    1639    11159, 11565,   714,  1084,  7480,  9468,  3892, -1297, -1297,  1086,
    1640     1088, -1297, 10445, -1297, -1297,   804, 11159,   945,  1089,  1090,
    1641     1093,  1094,  1095,  1096,  1100,  4041,  1782, -1297, -1297, -1297,
    1642    -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1643    -1297, -1297, -1297, -1297,   980, -1297, -1297, -1297,   884, -1297,
    1644    -1297, -1297, -1297, -1297, -1297, -1297, -1297, 10327, -1297, -1297,
    1645     1103,  1105, -1297,   208,  1104,  1078,  5252, -1297, -1297, -1297,
    1646     4608,  1114, -1297, -1297, -1297, -1297,   397,  6608,  1162, -1297,
    1647    -1297, -1297, -1297,  1087,   208, -1297, -1297,   980, -1297, -1297,
    1648      980,   203, 11622,  1109, -1297, -1297, -1297, -1297, -1297, -1297,
    1649    -1297,  3892,   721, -1297,   239, -1297, -1297,   889,  2623,  1120,
    1650     1124, -1297, -1297, -1297,  1123,   848,  1128,  1130,  1132, -1297,
    1651     2366, -1297, -1297, -1297, -1297, -1297, -1297, -1297,   377, -1297,
    1652      975, -1297, -1297,  1133,  1135,  1127, -1297, -1297,  1139,  1140,
    1653    -1297,   610,  1909, -1297,   496, -1297,  2999,   884, -1297,  1137,
    1654    12170, 10917,  9150,  1144, -1297, -1297,  1141,  1145, -1297,  1147,
    1655      301,  1148, -1297,  1146,  1146,  7016,  6255, -1297, -1297,  1146,
    1656     1149, -1297,  1714,  4608, -1297, -1297, -1297, -1297,  1153,  5205,
    1657     6255,  1158,   852,  5252, -1297,  6903, -1297,   852, -1297,  6255,
    1658    -1297,   788,   911, -1297, -1297, -1297, -1297,  5490, -1297,  8938,
    1659    -1297, -1297,  7592,  1159, -1297, -1297, -1297, -1297,  1167, -1297,
    1660      877,   911, -1297,   882,   907,   911, -1297,   771,  1168,  4314,
    1661    -1297, -1297, -1297, 11159, 11159, -1297,  8602,  8602,  8189,  1171,
    1662     1169,  1170,  1177, -1297, -1297,  1176,   557,    37,  1078, -1297,
    1663      852, -1297,  4815, -1297,  6255,   444, -1297,  6884,  1180,  1181,
    1664    11508,  1189,  1191,    15,    96,    38,  6255,  1193,   239,  4178,
    1665    -1297,  1187,  1173, -1297, -1297, -1297,  1192, -1297, -1297, -1297,
    1666    -1297, -1297, -1297, -1297, -1297, -1297,   397,  1198,  6255, -1297,
    1667    11159, 11159,   252,   911,  1200,  1201,  1086, -1297,  2623,   331,
    1668      397,  7016, 10976,   914,   911, -1297, -1297, -1297, -1297, -1297,
    1669    -1297, -1297, -1297, -1297,  1205,  1909, -1297, -1297,  1188, -1297,
    1670     1032, -1297, -1297,   638,  1203, -1297, -1297, -1297,   722,  1202,
    1671    -1297, 11622,  1194,  1085,  1085,  1207, -1297,  6185,  1025,  6255,
    1672     1212,  1153,   307,   288,  1211, -1297,  1207, -1297,  1216,  1211,
    1673    -1297, -1297,  1209, -1297, -1297,   980,  1219, -1297, 10622, -1297,
    1674     7241,  1222,  1223,  1224, -1297, 10386,  8189,  8189, -1297,  1221,
    1675    -1297, -1297,   980, -1297, -1297, -1297, -1297,   980,  6255, -1297,
    1676     6255, 11622,  1228, -1297, -1297, -1297, -1297, -1297, -1297, -1297,
    1677     1231, -1297, -1297, -1297, -1297, -1297, 11622, 11622,  1230,  1234,
    1678     1211, -1297, -1297,   397, -1297, -1297, -1297,  8059, 10917,  6255,
    1679     6255,  1294,  6255, -1297, -1297,  1217, -1297,  1218,  6255,  1220,
    1680     1226,  6255,   831, -1297,  1232,  7016,   252, -1297, -1297,  6608,
    1681     1233,   452, -1297, -1297, -1297, -1297, -1297,   980, -1297,  9778,
    1682     9150, 10268,  1237, -1297,  1243, -1297, -1297,   980, 11314, -1297,
    1683     8537,  1246, -1297, -1297, 10917,   467,   542, -1297,  1251,  1260,
    1684    -1297,   359, -1297,  6255,  1263,  1261, -1297, -1297,  1265,   245,
    1685      257,   852,  1267,  1269, -1297,  1270, -1297, 11159, -1297, -1297,
    1686    -1297, -1297, -1297, -1297,  1272, -1297, -1297, -1297, 11159, 11159,
    1687    11159, -1297, -1297,  1276, -1297,  1277,  1280,  1281,   619, -1297,
    1688     8256,  8364, -1297, -1297,   625, -1297,  1283,  1284, -1297,  8667,
    1689      727,   731,  1288,   740,  6735, -1297, -1297,   543, -1297, -1297,
    1690      756,  1289,   239,  1329,  1338, -1297, -1297,  1290, 11508, -1297,
    1691    -1297, -1297,  1291,  1293,   780,  9973, 10268,  6075, 11159, -1297,
    1692    -1297, -1297,  1292, -1297, -1297, -1297, -1297, -1297, -1297, 10917,
    1693    -1297,  1275,  1327,  1153,   537, -1297, -1297, -1297, -1297, -1297,
    1694    -1297, -1297, -1297,  1295, -1297, -1297, -1297,  1301,  1305, -1297,
    1695    -1297, -1297,  1306,  1308, -1297, -1297, -1297, -1297, -1297, -1297,
    1696    -1297,  1307, -1297,  1309, -1297, -1297, 11508,    90,  6255, 11508,
    1697    -1297,  1313,  6255, -1297,   187,  1328, -1297, -1297,  1315,  5778,
    1698    -1297, -1297, -1297,   332, -1297, 10032, -1297, -1297,  1099,   638,
    1699     1311, -1297, -1297,   800,  1317,  6255,   852,   852,  1320, -1297,
    1700    -1297,  1322,  1323,  1324, -1297, -1297,  8602,  1321, -1297,  1379,
    1701    11622,  1325, -1297, -1297, 11428, -1297,   810, -1297,  1312, 11508,
    1702     1318, -1297, -1297,  1333, -1297,  1341, 10268,  1335, -1297,  1343,
    1703    10917, -1297, -1297, -1297,  1319,  1356,  1339, -1297,  1211,  1211,
    1704    -1297, -1297, -1297, -1297, -1297, 11508,   270, -1297,   951, -1297,
    1705    -1297,  7923, -1297, -1297,  1326,  6255, -1297,  6255,  7923,   239,
    1706    10740,  1345, -1297, 10091, 10268, -1297,  1342, -1297, -1297,  6255,
    1707     1347,  1348, -1297, 11622, 11622, -1297, -1297,   952,   237, -1297,
    1708    -1297,  1331, -1297,   952, -1297, -1297,  1642,   852,   239, 10740,
    1709    -1297, 10150,  1355, -1297, -1297, -1297, -1297, -1297, 11428,  1353,
    1710      952,  7992,  6255, 11348,  1354,   952,  1360,  1642,  2460, -1297,
    1711    -1297, -1297, -1297, -1297, -1297,  9150, -1297, 11193, -1297, 11428,
    1712    -1297, -1297,  1340,  4905, -1297, -1297, 11348,   239,  2460,  1361,
    1713      819, -1297, 11193, -1297, -1297, -1297,  4905, -1297, -1297,   239,
    1714    -1297, -1297, -1297, -1297, -1297
     1544    5632,  9056, -1269,    25, -1269, -1269, -1269, -1269, -1269, -1269,
     1545   -1269,    17, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1546   -1269, -1269, -1269, -1269, -1269,   113,   113,   113,   803,   791,
     1547      56,  6940,   839, -1269, -1269, -1269, -1269, -1269,    59, -1269,
     1548   -1269, -1269,   628,    90,  8532, -1269, -1269, -1269, -1269, -1269,
     1549   -1269,    88,   155, -1269,   911, -1269, -1269, -1269, -1269,   140,
     1550    1450,   287,    96,  4240, -1269, -1269,  8601,  1048, -1269, -1269,
     1551   -1269,  1246,   329,  6299,  1010,   880,  1246,  1728, -1269, -1269,
     1552     332,   328, -1269,  1246,  1769, -1269,   227, -1269,   369,   379,
     1553   -1269, -1269, -1269, -1269,   256,   155,   113, -1269,   113, -1269,
     1554   -1269, -1269, -1269,  9292,   911, -1269, -1269,   911, -1269,  9351,
     1555     266, -1269, -1269,  1507,  9410, -1269,   839,   839,   839, -1269,
     1556   -1269, -1269,   113, -1269, -1269, -1269,   291,   341,   348, -1269,
     1557   -1269, -1269,   361, -1269, -1269, -1269, -1269, -1269,   391,   401,
     1558   -1269,   469,   839,  8040,  1076,   326,   352,   486,   522,   542,
     1559     576,   588,  8805,  6382,   474,   482, -1269,  8669, -1269, -1269,
     1560   -1269, -1269,   571, -1269,    47,  5492, -1269,   596,   239, -1269,
     1561   -1269, -1269, -1269,   597,   315,   324,   359,   113,   614, -1269,
     1562   -1269,  1450,  2466,   659, -1269,   128, -1269,   113,   113,   155,
     1563   -1269, -1269,   131, -1269,   113,   113, -1269,  3629,   647,   656,
     1564     839, 10211, -1269, -1269,   665,  8532, -1269, -1269,  1246, -1269,
     1565   -1269, -1269,   155, -1269,   911,    88, -1269,  7183, -1269,   839,
     1566     839,   839,   155, -1269,   803, -1269,  6072, -1269, -1269,   652,
     1567     839, -1269,   839, -1269,    59,  8040,  9115,   675, -1269,   791,
     1568     684,   839, -1269,   803,   674,   681, -1269,  6940,   744, -1269,
     1569   -1269, -1269,  8471, -1269, -1269,  5138, -1269,   659,    73,  9410,
     1570   10491,  1507,  3629, -1269,   138, -1269, -1269,  9351,   911,   708,
     1571   11267, -1269, -1269,   713, -1269, 11002, 10719, 10776, 10719, 10833,
     1572   -1269,   737, -1269, -1269, -1269, -1269, 10890, 10890,   744,  4439,
     1573     751, 10719,  8146, -1269, -1269, -1269, -1269, -1269, -1269,   766,
     1574   -1269,   828,  1924, 10719, -1269,   465,   544,   763,   389,   621,
     1575     755,   754,   759,   813,    65, -1269, -1269,   782,   510, -1269,
     1576     307, -1269, -1269,  1076, -1269, -1269,   774,   807, -1269,   784,
     1577     807,   815,    59, -1269, -1269,   821,  9292, -1269,   826,  7828,
     1578   -1269, -1269,   715,  2130,  7574, 10211,  1246, -1269,  1246,   839,
     1579     839, -1269, -1269, -1269, -1269, -1269, -1269,   839,  9469,   911,
     1580   -1269, -1269,  9528,  1378, -1269,  9174, -1269, -1269, -1269, -1269,
     1581   -1269, -1269, -1269,   831,  4897, 10719, -1269, -1269, -1269, -1269,
     1582   -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1507,
     1583   -1269,   728,   842,   859,   891,   817,   925,   926,   927,  2466,
     1584   -1269, -1269,   865,    88,   869, -1269, -1269,   928, -1269, -1269,
     1585   -1269,  8471, -1269, -1269, -1269, -1269, -1269,  3629, -1269,  8040,
     1586    8040, -1269,  1507, 11295,   911,  7639, -1269, -1269, -1269, -1269,
     1587    8471,    73, -1269, -1269,  1246,   155, -1269, -1269,  8471, -1269,
     1588    6187, -1269, -1269,   839,   839,   339,  9587,   909,  1932,  2385,
     1589   -1269,   377,   414,   791, -1269,  9115,   924,   912,   791,   839,
     1590   -1269, -1269, -1269, -1269,  9947, -1269,   512,  7494, -1269,   155,
     1591     930, -1269,  1507, 11077, 10548, -1269, -1269, -1269, -1269,   824,
     1592    3629, -1269,  7704,   659,  6831, -1269, -1269, -1269,   746,   592,
     1593     782,   791, 11267,   530,  9351, -1269, 11267, -1269, -1269, -1269,
     1594   -1269,   613, -1269,   932, -1269, -1269,    12,  4439, -1269, -1269,
     1595    4439, -1269,  7934,  4439, -1269, -1269, -1269,   933, -1269,   625,
     1596     936,   545,   939, -1269,  8873,  5389, -1269, -1269, -1269,    67,
     1597   -1269, -1269, 10605, -1269,   249, -1269, -1269, -1269, -1269, -1269,
     1598   -1269, -1269, -1269, -1269, -1269, 10491, 10491, -1269, 10719, 10719,
     1599   10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719, 10719,
     1600   10719, 10719, 10719, 10719, 10719, 10719,  4719, 10491, -1269,   510,
     1601    1578, -1269, -1269,   113,   113, -1269, -1269,  8040, -1269, -1269,
     1602     928,   744, -1269,   928, 10662, -1269, -1269, -1269,  4020,  5389,
     1603     938,  8252,   941, -1269,  9646, -1269, -1269,   571, -1269,   942,
     1604    1657,   947,  1802,   198,   782, -1269,   113,   113,   782,   245,
     1605   -1269,   113,   113,   928, -1269, -1269,   113,   113, -1269,   807,
     1606    9705,   911, 11208,   419,   426,  9705, -1269,  9882, -1269,   782,
     1607   -1269,  9469, -1269,   144,  7291,  7291,  7291,   911, -1269, 10434,
     1608     934,   831,   353,   949, -1269,   951,  5492,   583, -1269,  1032,
     1609     911,  7291,   744,  1507,   744,   659,   795,   807, -1269, -1269,
     1610     800,   807, -1269, -1269, -1269,   986, -1269,   807,   155,  9947,
     1611   -1269,   635,   960,   638,   961, -1269,   962,   155, -1269, -1269,
     1612    8471,   155,   958,   436,   443,  9764,  6494,  2437, 10719,  2673,
     1613   -1269, -1269,   956,    32,   956, -1269, -1269, -1269,   113,   113,
     1614   -1269, -1269,   791, -1269,   113, -1269, -1269,  2798,   791,   968,
     1615   10719, -1269,   924, 11208, -1269, -1269,   967, -1269, -1269, -1269,
     1616     744, -1269, 11143, 10719, -1269,  7291,   584,  7574, -1269, -1269,
     1617     571,   969,   972,   746,  2082, -1269, -1269, 11267, -1269, -1269,
     1618     965, -1269, -1269,   984, -1269,   965,   989, 11002, 10491,   944,
     1619    1017,   991,   992,   751,   987,   996, -1269,   997,  1000,  2971,
     1620    6158, -1269, 10491, -1269,   545,  1808, -1269,  5683, 10491,   998,
     1621   -1269, -1269,   831,   639, -1269, 10491, -1269, -1269, -1269, -1269,
     1622   -1269, -1269, -1269,   465,   465,   544,   544,   763,   763,   763,
     1623     763,   389,   389,   621,   755,   754,   759,   813, 10719,   616,
     1624   -1269,  9947,  1005,  1006,  1007,  1578, -1269, -1269, -1269, -1269,
     1625   -1269,  9947,   643, 10719,  7291, -1269,  9469, -1269,  6606,  8358,
     1626    9233,  6382, -1269, -1269, -1269,  1657,  9947,   846,  1012,  1013,
     1627    1015,  1019,  1020,  1023,  1024, -1269,  3182,  1802, -1269, -1269,
     1628   -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1629   -1269, -1269, -1269, -1269, -1269,   928, -1269, -1269, -1269,   782,
     1630   -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1025, -1269,
     1631    1026,  1029, -1269, -1269,    88,   998, 10434, -1269, -1269, -1269,
     1632    4897,  1028, -1269, -1269, -1269, -1269,   791,  5798,  1104, -1269,
     1633   -1269, -1269, -1269,  1027,    88, -1269, -1269,   928, -1269, -1269,
     1634     928,   142,   928, -1269, -1269, -1269, -1269, -1269, -1269,  8737,
     1635   -1269,   155, -1269,  9115, -1269, -1269,  1034,   761,  1031,  1038,
     1636    1041, -1269,  2673, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1637    1932, -1269,   912, -1269, -1269,  1044,  1046,  1047, -1269, -1269,
     1638    1042,  1050, -1269,   584,  1953, -1269,   534, -1269,  2082,   782,
     1639   -1269,  1054, 11267,  9823,  8040,  1055, -1269, -1269,  1051,  1056,
     1640   -1269,  1059,   169,  1057, -1269,  1058,  1058,  5389, 10491, -1269,
     1641   -1269,  1058, -1269,  1808,  4897, -1269, -1269, -1269, -1269,  1060,
     1642   10491,  1062,   744, 10434, -1269, 10605, -1269,   744, -1269, 10491,
     1643   -1269,   840,   807, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1644     831,  7828, -1269, -1269,  6718,  1067, -1269,   864,   807, -1269,
     1645     871,   882,   807, -1269,   839,  3327, -1269, -1269, -1269,  9947,
     1646    9947, -1269,  7639,  7639, -1269,  1063,  1064,  1068,  1071, -1269,
     1647    1074,   541,    48,   998, -1269,   744, -1269,  5492, -1269, 10491,
     1648     455, -1269,  6043,  1080,  1081, 10377,  1083,  1084,    55,   173,
     1649      23, 10491,  1085,   155,  4287,  1089,  1086,  1065, -1269, -1269,
     1650   -1269,  1087, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1651   -1269,   791,  1094, 10491, -1269,  9947,  9947,   113,  1095, -1269,
     1652    8997,  8935,   889,   807, -1269, -1269, -1269, -1269, -1269, -1269,
     1653   -1269, -1269, -1269,  1098,  1953, -1269, -1269,  1082, -1269,   965,
     1654   -1269, -1269,  1507,  1097, -1269, -1269, -1269,   650,  1096, -1269,
     1655   10719,  1077,  1017,  1017,  1102, -1269,   951, 10491,  1111,  1060,
     1656     559,    61,  1108, -1269,  1102, -1269,  1113,  1108, -1269, -1269,
     1657    1118, -1269, -1269,   928,  1120,  1121,  6270,  1123,  1124,  1125,
     1658   -1269, -1269,  1122, -1269, -1269,   928, -1269, -1269, -1269, -1269,
     1659     928, 10491, 10491, 10719,  1127, -1269, -1269, -1269, -1269, -1269,
     1660   -1269, -1269, -1269, -1269, -1269, -1269, -1269, 10719, 10719,  1128,
     1661    1133,  1108, -1269, -1269,   791, -1269, -1269, -1269,  7118,  9823,
     1662   10491, 10491,  1180, 10491, -1269, -1269,  1114, -1269,  1117, 10491,
     1663    1135,  1137, 10491,   901, -1269,  1138,  8499,   113, -1269, -1269,
     1664    5798,  1140,   467, -1269, -1269, -1269, -1269, -1269, -1269, -1269,
     1665   -1269, -1269,   928, 10183, -1269,  7704,  1147, -1269, -1269,  9823,
     1666     476,   481, -1269,  1157,  1165, -1269,   201, -1269, 10491,  1166,
     1667    1167, -1269, -1269,  1168,   257,   313,   744,  1169,  1171, -1269,
     1668    1172, -1269,  9947, -1269, -1269, -1269, -1269, -1269,  1174, -1269,
     1669    9947,  9947,  9947, -1269, -1269,  1175, -1269,  1179,  1182,  1183,
     1670     573,  7358,  7466, -1269, -1269,   609, -1269,  1184,  1185, -1269,
     1671    7769,   651,   662,  1141,   664,  5921, -1269, -1269,   508, -1269,
     1672   -1269,   687,  1189,   155,  1237,  1240, -1269, -1269, 10377, -1269,
     1673   -1269, -1269,  1193,  1197,  9947, -1269, -1269, -1269,  1196, -1269,
     1674   -1269, -1269, -1269, -1269, -1269,  9823, -1269,  1190,  1231,  1060,
     1675     253, -1269, -1269, -1269, -1269, -1269, -1269, -1269, -1269,  1204,
     1676   -1269, -1269, -1269, -1269, -1269, -1269,  1211,  1215, -1269, -1269,
     1677   -1269, -1269, -1269, -1269, -1269,  1219, -1269,  1218, -1269, -1269,
     1678   10377,   147, 10491, 10377, -1269,  1225, 10491, -1269,   264,  1239,
     1679   -1269, -1269,  1229, -1269, -1269, -1269, -1269, -1269,   911,  1507,
     1680    1233, -1269, -1269,   704,  1228, 10491,   744,   744,  1248,  1249,
     1681    1250,  1251, -1269, -1269,  7639,  1256, -1269,  1301, 10719,  1259,
     1682   -1269, -1269, 10297, -1269,   716, -1269,  1224, 10377,  1235, -1269,
     1683   -1269,  1268, -1269,  1282,  1270,  9823, -1269, -1269, -1269,  1252,
     1684    1302,  1273, -1269,  1108,  1108, -1269, -1269, -1269, -1269, -1269,
     1685   10377,    54, -1269,   897, -1269, -1269,  7049, -1269, -1269,  1255,
     1686   10491, -1269, 10491,  7049,   155,  9587,  1283, -1269, -1269,  1280,
     1687   -1269, -1269, 10491,  1284,  1285, -1269, 10719, 10719, -1269, -1269,
     1688     966,    99, -1269, -1269,  1266, -1269,   966, -1269, -1269,  2561,
     1689     744,   155,  9587,  1290, -1269, -1269, -1269, -1269, -1269, 10297,
     1690    1286,   966,  3510, 10491, 10217,  1287,   966,  1294,  2561,  3047,
     1691   -1269, -1269, -1269, -1269, -1269,  8040, -1269, 10062, -1269, 10297,
     1692   -1269, -1269,  1274,  9981, -1269, -1269, 10217,   155,  3047,  1297,
     1693     717, -1269, 10062, -1269, -1269, -1269,  9981, -1269, -1269,   155,
     1694   -1269, -1269, -1269, -1269, -1269
    17151695};
    17161696
     
    17181698static const yytype_int16 yypgoto[] =
    17191699{
    1720    -1297,  4539,  3474, -1297,    22, -1297,    -1,     2,   817, -1297,
    1721    -1297, -1297,  -495,  -902,  -132,  5887, -1297,  1449,   523,   552,
    1722      430,   558,   919,   920,   921,   922,   924, -1297,   150,  -242,
    1723     5319,   346,  -694,  -917, -1297,    87,  -701,   234, -1297,   157,
    1724    -1297,   254, -1077, -1297, -1297,    -6, -1297, -1273,  -892,    95,
    1725    -1297, -1297, -1297, -1297,   -60, -1267, -1297, -1297, -1297, -1297,
    1726    -1297, -1297,   168,   -11,    51,   368, -1297,   375, -1297,    33,
    1727    -1297,  -295, -1297, -1297, -1297,   432,  -848, -1297, -1297,     6,
    1728     -970,    26,  2983, -1297, -1297, -1297,  -117, -1297,    66,   718,
    1729      -14,  1458,  4231, -1297, -1297,    55,   134,   124,  -247,  1805,
    1730    -1297,  1752, -1297, -1297,   135,  2146, -1297,  2351,  1577, -1297,
    1731    -1297,  -431,  -435,  1074,  1079,   582,   830,   342, -1297, -1297,
    1732     1070,   585,  -481, -1297,  -462,   -65,  -412, -1297, -1297,  -973,
    1733     -968,   783,  1252,   948,   156, -1297,    83,   233,  -297,  -199,
    1734     -148,   548,   655, -1297,   904, -1297,  2844,  -402,   807, -1297,
    1735    -1297,   590, -1297,  -393, -1297,   101, -1297, -1297, -1297, -1251,
    1736      299, -1297, -1297, -1297,  1071, -1297,    63, -1297, -1297,  -839,
    1737     -111, -1296,  -104,  2118, -1297,  3091, -1297,   811, -1297,  -172,
    1738     1440,  -168,  -165,  -162,     4,   -37,   -34,   -32,   611,    36,
    1739       67,    71,  -161,  -156,  -154,  -153,  -138,  -284,  -490,  -488,
    1740     -486,  -538, -1297,  -480, -1297, -1297,  -524,  -520,  -505,  -499,
    1741     1640,  5025,  -528,  -541,  -515,  -512,  -459, -1297,  -388,  -645,
    1742     -634,  -633,  -576,  -124,  -277, -1297, -1297,   710,   153,   -86,
    1743    -1297,   361,   821,  -610,  -304
     1700   -1269,  3902,  2604, -1269,   354, -1269,    -1,     2,   742, -1269,
     1701   -1269, -1269,  -489,  -961,  -282,  4749, -1269,   570,   459,   468,
     1702     357,   464,   844,   848,   849,   847,   850, -1269,  -229,  -231,
     1703    4555,   296,  -694,  -919, -1269,   166,  -721,   143, -1269,    86,
     1704   -1269,   216, -1143, -1269, -1269,   -17, -1269, -1146, -1036,    71,
     1705   -1269, -1269, -1269, -1269,   -75, -1160, -1269, -1269, -1269, -1269,
     1706   -1269, -1269,   141,   -26,    21,   316, -1269,   320, -1269,    13,
     1707   -1269,  -294, -1269, -1269, -1269,   364,  -829, -1269, -1269,    11,
     1708    -963,   125,  1704, -1269, -1269, -1269,   -72, -1269,    82,    49,
     1709     -18,  1039,  3754, -1269, -1269,    81,   133,   536,  -256,  1629,
     1710   -1269,  1307, -1269, -1269,   224,  1625, -1269,  1893,  1163, -1269,
     1711   -1269,  -426,  -421,   993,   994,   507,   747,   306, -1269, -1269,
     1712     980,   516,  -433, -1269,  -199,    75,   591, -1269, -1269,  -894,
     1713   -1000,     6,   910,   861,   176, -1269,   721,   158,  -317,  -210,
     1714    -149,   478,   577, -1269,   809, -1269,  2211,   740,  -443,   722,
     1715   -1269, -1269,   511, -1269,  -232, -1269,   -46, -1269, -1269, -1269,
     1716   -1268,   243, -1269, -1269, -1269,   981, -1269,    -7, -1269, -1269,
     1717    -827,   -35, -1227,  -161,  1978, -1269,  3527, -1269,   719, -1269,
     1718    -157,    41,  -172,  -170,  -163,     4,   -41,   -36,   -34,   777,
     1719      24,    33,    45,  -143,  -151,  -150,  -145,  -139,  -288,  -529,
     1720    -505,  -476,  -564,  -323,  -560, -1269, -1269,  -516,   899,   906,
     1721     915,  1643,  4256,  -522,  -566,  -549,  -514,  -546, -1269,  -372,
     1722    -680,  -674,  -672,  -603,  -208,  -186, -1269, -1269,    64,   293,
     1723     -93, -1269,  3162,   208,  -613,  -396
    17441724};
    17451725
     
    17471727   positive, shift that token.  If negative, reduce the rule which
    17481728   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1749 #define YYTABLE_NINF -507
     1729#define YYTABLE_NINF -503
    17501730static const yytype_int16 yytable[] =
    17511731{
    1752      109,   257,    46,   690,    94,   144,   388,   110,   145,   380,
    1753      146,   420,   381,   696,   365,   382,   250,   389,   139,   661,
    1754      871,   383,   487,   384,   385,   763,    53,   111,   495,  1074,
    1755      846,   916,   671,    46,   795,    94,   957,   791,  1075,   386,
    1756      669,   672,   917,   918,    46,   822,    46,   590,   155,   685,
    1757      828,    47,   792,  1177,  1178,    66,    46,    53,   793,  1179,
    1758      829,   975,    46,  1131,   185,    46,    60,   207,    46,   614,
    1759      217,   823,   210,   618,   824,   391,   169,  1196,   147,   729,
    1760      107,   406,    47,   734,   388,  1139,    66,   380,  1400,   202,
    1761      381,   933,   211,   382,   138,   389,   818,    60,   819,   383,
    1762      820,   384,   385,   107,   653,    46,   821,   916,    46,   148,
    1763      657,   659,   136,   149,    46,   465,   553,   386,   917,   918,
    1764      738,    30,   754,   664,  1459,   169,  1186,   739,   169,   460,
    1765      832,   668,  1420,  1421,    67,    74,   839,   555,  1190,  1204,
    1766      144,   862,    30,   145,    46,   146,   155,   464,   466,  1208,
    1767      554,  1463,  1187,   103,   103,   880,    46,   193,   355,   860,
    1768      860,   107,    30,   232,   234,    67,    74,     2,   197,     4,
    1769        5,     6,     7,    30,   860,   727,   242,   318,   390,    46,
    1770       46,   409,   155,    30,   103,   242,   733,   392,  1459,  1476,
    1771      118,   220,   651,   724,    46,   221,  1422,   204,   225,  1195,
    1772      227,   194,   580,    46,   746,   155,   400,   235,   392,   166,
    1773      119,    46,   107,   147,    46,   648,   423,   107,   144,   103,
    1774     1206,   145,   465,   146,   137,    34,   649,    35,   392,  1420,
    1775     1421,   169,   818,   940,   819,  1463,   820,   470,   421,   392,
    1776     1463,   454,   895,    46,   148,    94,  1534,   830,   149,   587,
    1777      759,   243,   860,   539,   540,   765,  1463,    46,    46,   251,
    1778      155,   690,   252,  1463,    46,   681,   640,    53,   799,  1547,
    1779      994,    46,  1179,    30,   822,   107,   683,   135,   516,  -218,
    1780     -218,   505,   460,   107,   169,   135,   833,    -3,  1021,    30,
    1781      836,   169,    47,  1431,   655,  1141,    66,   648,  1022,   660,
    1782      823,   460,   849,   824,   452,  1082,   850,    60,   649,   460,
    1783      107,   853,   461,   867,   359,   856,   446,  1177,  1178,    46,
    1784      427,   355,   107,  1179,   233,   818,   141,   819,   220,   820,
    1785      360,   162,    46,    46,  1196,  1008,  1343,   837,   449,   587,
    1786      855,   107,   398,   135,  -218,   164,   422,   718,  1347,    46,
    1787      174,   368,   169,    46,   107,  1210,   135,   229,   832,  1483,
    1788     1349,   106,   106,   192,   417,   419,  1259,   369,  -275,   169,
    1789      508,  1074,   904,   169,   425,    67,    74,   730,   990,    46,
    1790     1075,    74,   731,   237,   795,  1187,   724,   791,   995,    46,
    1791      230,   355,   106,  1260,   103,   231,   107,   107,   135,   135,
    1792      822,   240,   792,  1122,  1009,   159,   717,    46,   793,  -109,
    1793     1123,  -109,    46,  -502,   829,  -109,   564,   818,   472,   819,
    1794      494,   820,   565,   846,   209,   489,   823,   106,   242,   824,
    1795     -109,  -109,  1230,   371,   373,   919,  1533,  1231,  1436,    46,
    1796      509,   708,    36,  1454,   176,   628,    39,   709,  1179,   372,
    1797      374,   580,  1542,    40,    41,   109,  1382,   932,   220,  1546,
    1798      225,  1341,   107,    46,   135,   461,   204,   254,  1342,   159,
    1799      873,    46,   627,   355,   262,    46,   874,    94,   676,    46,
    1800      392,   -10,   580,   872,   461,  -430,   677,   580,   678,   487,
    1801     1137,  1196,   461,   375,   656,   658,   691,   813,  1196,    53,
    1802      743,   266,   159,   615,  1448,  1449,   388,   619,   380,   376,
    1803      693,   381,   692,   691,   382,   357,   760,   389,  1255,   743,
    1804      383,   766,   384,   385,    47,   695,   694,   882,    66,   911,
    1805      446,   851,  1096,   693,    74,   852,   884,   715,   386,    60,
    1806      685,  1196,  1020,   482,  1025,   483,   220,  1180,  1110,   912,
    1807      460,   718,  1193,    74,  1164,  1166,   861,   861,   268,  1118,
    1808     1193,    74,   159,   728,   994,   732,   860,   269,  1194,   454,
    1809       36,   861,   176,   209,    39,  1334,  1321,  1022,   541,   542,
    1810      666,    40,    41,   508,  1096,    46,   508,   270,    46,   508,
    1811       46,  1335,   443,   536,   937,  1508,   204,   319,   537,   538,
    1812      851,  1513,   106,  1380,  1106,   810,   177,    67,    74,    46,
    1813      717,  1174,  1175,  1489,   357,   710,   178,   557,  1529,   392,
    1814     1489,   320,   159,  1536,   718,    46,   103,   558,   805,   169,
    1815        2,   197,     4,     5,     6,     7,   881,    46,   883,  -109,
    1816       46,   788,   725,  1107,   443,   169,  1405,   159,   726,   861,
    1817     1336,   750,   566,   509,   392,   156,   509,   169,   219,   509,
    1818     -109,  -102,  1020,  1530,  1033,  -102,  1337,  1383,  1224,  1225,
    1819      321,   186,    46,   735,   208,  1275,  1276,   218,    46,   736,
    1820       46,  1430,   752,   717,   392,  1079,   322,   581,    34,   570,
    1821       35,   392,   753,   607,   860,   860,   323,     2,   197,     4,
    1822        5,     6,     7,    36,   324,   176,   749,    39,   936,   354,
    1823      868,   941,   750,   587,    40,    41,   543,   544,   358,   112,
    1824     1149,   942,  1041,  1368,    46,    46,  1007,  1369,  -454,   740,
    1825     -454,   896,   741,   461,  -454,   747,  -276,   750,    46,   255,
    1826      370,   715,   422,     8,     9,    10,    11,    12,   648,   256,
    1827      366,   545,   546,   156,   157,    34,   681,    35,   169,   649,
    1828      547,   548,   153,   848,  1491,   356,  1492,   683,   159,   159,
    1829       30,   813,   898,   159,   927,   750,   989,   461,   750,   863,
    1830      930,     8,     9,    10,    11,    12,    36,   378,  1086,   156,
    1831       39,   879,   390,    33,   159,   159,   443,    40,    41,   443,
    1832     1325,   900,    74,   906,  1020,   443,   407,   565,    30,   565,
    1833      894,  1531,   156,   984,   715,   430,   996,    46,   157,   985,
    1834      248,   903,   709,   424,  1247,   905,   153,   494,    46,  1376,
    1835      565,    33,   719,  1377,   106,   750,   204,  1324,   885,   750,
    1836      392,    36,  1379,   408,   159,    39,    74,   412,   750,   494,
    1837      204,   315,    40,    41,   888,  1355,   392,   443,  1384,   312,
    1838      443,   805,   159,   443,   750,   160,  1359,  1360,  1361,    36,
    1839      433,  1270,   916,    39,   444,   580,  1061,    42,  1149,  1249,
    1840       40,    41,  1393,   917,   918,  1311,  1312,   142,   565,  1143,
    1841      690,   392,   489,   813,  1191,  1395,     8,     9,    10,    11,
    1842       12,   447,  1444,    53,    46,   815,   450,   587,  1445,    46,
    1843       46,   415,  1464,   451,   410,   588,  1396,   107,   750,   414,
    1844      473,  1550,    46,    30,   810,   501,   159,   565,   356,   160,
    1845       46,   125,    66,   126,   127,   128,   581,   988,   204,   808,
    1846      242,   318,   392,    60,  1292,  1293,    33,   516,    46,   437,
    1847      318,   392,  1149,   628,    36,   549,   805,  1111,    39,  1046,
    1848      690,  1176,   316,   861,   550,    40,    41,   581,   400,   644,
    1849      392,   415,   581,   776,   777,   778,   779,  1112,  1160,   414,
    1850      392,  1133,   477,  1163,   743,   587,  1133,   557,   552,   392,
    1851      907,   551,   392,   512,  1420,  1421,   157,   558,   356,    46,
    1852      908,   510,  1242,  1168,   153,  1473,   813,   555,  1165,    36,
    1853      587,    67,    74,    39,   568,  1235,  1036,   392,   641,   810,
    1854       40,    41,   416,   923,  -277,   923,   718,   470,   318,   392,
    1855      103,     8,     9,    10,    11,    12,   719,   583,   690,  1133,
    1856      642,   813,   643,  1501,   577,   722,   830,   318,   587,  1061,
    1857     1149,   645,  1205,  1207,  1209,   723,   628,   443,    30,  1484,
    1858     1485,  1087,   772,   773,   612,   646,   690,    36,   616,   167,
    1859      168,    39,   647,    53,   517,   518,   519,   943,    40,    41,
    1860      650,    33,   416,   247,    36,   717,   167,   168,    39,   697,
    1861       46,   861,   861,   774,   775,    40,    41,   520,   699,   521,
    1862     -222,   522,  1198,   354,   103,   780,   781,   160,  1520,   719,
    1863      737,  1063,   751,   461,   755,    46,   718,   315,   315,   807,
    1864      358,   814,   315,   -12,   857,   312,   312,  1348,  1350,  1351,
    1865      312,   869,  1540,   870,   876,   279,   422,   897,   899,  1140,
    1866      726,   902,   565,   315,   315,   931,   805,   582,   677,  -404,
    1867     1096,   312,   670,   437,   952,  -506,   437,   945,   954,  1046,
    1868      959,   963,   437,   964,    36,   607,   167,   168,    39,   958,
    1869      967,   966,  1232,  1233,   112,    40,    41,   968,  1456,   969,
    1870      979,    67,    74,   991,   992,   993,   980,  1004,   997,  1005,
    1871     1076,  1010,  1011,   315,  1036,  1012,  1013,  1014,  1015,   477,
    1872      103,   312,  1016,   477,   210,  -392,   512,  -391,  1034,   512,
    1873     1078,   315,   512,  1083,   510,  1212,   715,   510,  1061,   312,
    1874      510,  1043,  1089,   202,   211,  1371,  1090,  1092,   316,   316,
    1875     1093,    46,  1094,   316,  1095,  1101,   706,  1100,   106,  1109,
    1876     1099,  1506,  1456,  1102,  1103,    53,  1119,  1120,  1121,   750,
    1877     1111,   810,   973,  1127,   316,   316,  1124,  -278,  1133,  1133,
    1878     1133,  1129,  1132,  1155,     8,     9,    10,    11,    12,  1158,
    1879     1112,   494,  1169,  1181,    66,   315,  1298,  1182,  1183,  1184,
    1880     1185,  1199,  1200,   312,  1201,    60,  1300,  1301,  1442,  1303,
    1881     1202,    30,  1203,   577,  1211,  1307,  1216,  1217,  1310,    -3,
    1882     1222,   811,  1228,   813,   316,  1229,   715,  1239,  1248,   482,
    1883     1243,  1266,   106,   159,    33,  1253,  1257,  1061,  1250,  1261,
    1884     1264,  1268,   316,  1277,   845,   421,  1271,  1272,  1273,   577,
    1885       53,   204,  1284,  1289,  1294,   854,   494,   494,  1295,  1302,
    1886     1320,  1305,  1306,  1326,  1308,  1111,   388,  1327,  1332,   380,
    1887     1309,   103,   381,    67,    74,   382,  1316,   389,  1338,  1198,
    1888      581,   383,  1340,   384,   385,  1112,   648,  1344,  1345,  1346,
    1889      461,  1352,   103,  1353,  1354,  1061,  1356,   649,  1061,   386,
    1890     1364,  1365,  1366,  1367,  1312,  1519,   316,  1374,  1375,  1378,
    1891     1385,    46,  1388,  1391,  1389,  1392,   582,   103,  1397,  1401,
    1892       46,    46,  1402,  1409,  1405,  1133,  1133,  1410,   106,  -393,
    1893     1414,   810,  1415,  1418,   437,  1429,  1435,  1433,  1443,  1455,
    1894      169,  1446,  1450,  1061,  1451,  1452,  1453,   847,  1061,  1369,
    1895     1471,  1478,   582,   422,  1460,  1469,  1465,   706,    67,    74,
    1896       93,  1474,  1467,  1477,   477,  1475,  1111,  1498,  1479,  1502,
    1897     1490,  1504,  1505,  1063,  1061,  1512,  1525,   103,    63,   113,
    1898     1528,  1535,  1537,  1549,  1543,  1426,  1112,   891,   782,  1386,
    1899      783,    93,   784,  1319,   785,  1256,  1437,   786,  1507,  1432,
    1900      144,  1387,   143,   145,    93,   146,  1551,    53,  1523,    63,
    1901      140,  1251,   103,    36,    53,   585,  1521,    39,    46,  1252,
    1902      181,  1493,   154,    93,    40,    41,    93,  1061,  1221,   673,
    1903     1097,   719,  1061,   924,   674,  1098,  1198,   701,   802,    46,
    1904       46,  1128,   155,  1198,   212,  1042,  1061,   461,  1061,   586,
    1905     1006,   587,  1061,   947,   461,  1061,   875,    53,  1108,   588,
    1906       46,  1061,   355,  1333,   720,  1061,     0,   955,     0,     0,
    1907        0,    36,  1390,   176,  1441,    39,     0,     0,   209,   106,
    1908      249,     0,    40,    41,     0,     0,  1198,     0,     0,     0,
    1909      494,     0,     0,   706,     0,   811,     0,   461,     0,     0,
    1910      106,     0,    93,   706,     0,     0,     0,   676,     0,   392,
    1911        0,   159,   443,   103,    93,    67,    74,   678,     0,   706,
    1912      317,   719,    67,    74,     0,   106,     0,     0,   332,     0,
    1913     1419,     0,     0,  1427,   103,     0,     0,   379,   181,     0,
    1914        0,   103,     0,     0,     0,     0,  1494,     0,     0,     0,
    1915        0,     0,     0,   494,   494,     0,   387,     0,     0,     0,
    1916      206,    93,     0,     0,     0,    67,    74,     0,     0,     0,
    1917      405,     0,    93,   140,   411,  1522,     0,     0,  1462,   154,
    1918      209,     0,   315,  1466,   103,   106,     0,     0,   477,  1113,
    1919      312,     0,     0,     0,     0,     0,     0,     0,     0,   428,
    1920        0,    93,     0,   431,     0,   432,   443,   443,     0,  1482,
    1921      206,     0,     0,   448,  1548,   468,     0,   811,     0,    63,
    1922      106,     0,     0,     0,   462,   707,  1553,    36,     0,   176,
    1923        0,    39,     0,     0,   469,  1147,     0,   845,    40,    41,
    1924        0,   498,   411,     0,     8,     9,    10,    11,    12,     0,
    1925        0,   206,     0,     0,   514,   515,     0,     0,     0,     0,
    1926        0,     0,     0,  1517,     0,   392,   535,     0,     0,     0,
    1927        0,    30,    72,  1518,     0,     0,   443,    93,     0,     0,
    1928        0,  1541,     0,     0,     0,     0,     0,  1541,     0,     0,
    1929        0,   589,     0,   316,    33,   515,  1541,     0,     0,     0,
    1930     1541,     0,     0,    72,   578,     0,     0,     0,     0,   206,
    1931        0,   608,     8,     9,    10,    11,    12,   443,     0,     0,
    1932        0,   106,     0,     0,   613,     0,   706,   706,   613,     0,
    1933      811,   332,   515,     0,     0,   752,     0,   392,   213,    30,
    1934      847,   394,   106,     0,     0,   753,   206,   181,   402,   106,
    1935      206,   443,     0,     0,   443,   443,     0,     0,     0,     0,
    1936        0,     0,    33,     0,     0,   811,     0,    36,     0,   585,
    1937        0,    39,     0,     0,     0,     0,     0,   462,    40,    41,
    1938      443,     0,   443,   706,   706,     0,  1269,     0,   205,     0,
    1939        0,   332,   106,  1147,     0,     0,   462,   682,   223,     0,
    1940        0,     0,     0,   586,   462,   587,   159,     0,     0,     0,
    1941        0,     0,     0,   588,     0,     0,     0,     0,   394,     0,
    1942        0,     0,   335,     0,     0,     0,   707,     0,     0,   206,
    1943        0,   702,     0,    93,   411,     0,     0,   589,   205,     8,
    1944        9,    10,    11,    12,     8,     9,    10,    11,    12,   716,
    1945        0,    63,     0,     0,     0,     0,     0,     0,     0,   411,
    1946      315,     0,     0,   411,     0,     0,    30,  1147,   312,   437,
    1947        0,    30,   563,     0,     0,     0,     0,     0,     0,   205,
    1948      567,     0,  1113,   571,     0,     0,     0,     0,     0,    33,
    1949        0,   332,     0,   429,    33,     0,     0,     0,     0,    36,
    1950        0,   176,     0,    39,     0,   769,   770,   771,   206,     0,
    1951       40,    41,     0,    72,     0,     0,     0,     0,    72,     0,
     1732     110,   146,    46,   445,    95,   432,   147,   918,   148,   392,
     1733     256,   393,   111,   919,   141,   920,   377,   857,   394,   498,
     1734     609,    47,   403,  1161,   140,   400,  1127,   959,   701,   707,
     1735     395,   396,   881,    46,   832,    95,   397,  1360,   839,   401,
     1736     831,    94,   398,   774,    46,   506,    46,   505,   158,   740,
     1737     113,   833,    47,   745,   806,   604,    46,   843,  1069,   337,
     1738    1070,  1119,    46,   850,   189,    46,   149,   212,    46,    30,
     1739     222,   828,    94,   976,  1171,   150,   696,   215,   263,  1177,
     1740     840,    66,    60,   145,   918,    94,   834,   151,   108,   392,
     1741     919,   393,   920,   156,   738,   829,   475,   477,   394,   935,
     1742     119,   185,   672,   674,    94,   400,    46,    94,   160,    46,
     1743     395,   396,    66,    60,   749,    46,   397,   668,   120,   401,
     1744     108,   750,   398,   198,   830,    53,   112,  1429,  1159,  1160,
     1745     402,   596,   108,    67,  1189,   404,   677,  1167,   169,  1234,
     1746     146,  -218,  -218,  1436,   681,   147,    46,   148,   158,   766,
     1747      30,  1414,   254,   565,    46,   371,    53,   139,   156,    46,
     1748     143,   367,   418,  1168,    67,    30,  1235,   199,    30,  1168,
     1749     770,   372,   628,   160,   476,    30,   632,   744,   439,  1185,
     1750     471,   249,   421,    46,    46,    94,   158,   566,   206,  1378,
     1751    1379,   216,   318,   666,   152,   757,   208,   460,    94,    46,
     1752     735,   334,   872,   873,   828,   149,  -218,    46,   844,   158,
     1753    1414,   165,   847,  1176,   150,  1161,    46,   528,   890,    46,
     1754     146,   435,   391,   185,    74,   147,   151,   148,   829,   248,
     1755     173,   404,   412,   864,   404,    30,  1418,   867,   108,   481,
     1756     463,   404,   663,   587,  1077,   476,    94,   465,   177,    46,
     1757     422,    95,   163,  1380,   426,    74,   664,   830,    94,   832,
     1758     810,   167,  1161,    46,    46,  1005,   158,   567,    47,   427,
     1759      46,  1111,   337,  1017,   729,   410,   833,    46,  1112,   609,
     1760     257,   843,    30,   258,   318,   448,   701,   516,    94,   994,
     1761     197,   692,   942,   104,   104,  1129,   828,  1187,   429,   841,
     1762     453,   601,   479,  1307,  1484,   694,  1378,  1379,   437,  1309,
     1763    1308,   834,  1177,  1418,   108,  1018,   426,   163,  1418,   488,
     1764     829,  1483,   108,   663,   104,    46,  1497,   367,    66,    60,
     1765    1191,   427,  -274,  1418,   472,   243,  1492,   664,   521,   471,
     1766    1418,   156,   433,  1496,    46,    46,   848,   380,   601,   830,
     1767     434,   322,   776,   523,   655,  -109,   160,   248,   471,   104,
     1768    1313,    46,  1365,   381,    94,    46,   471,  1159,  1160,   246,
     1769    1389,  1069,    53,  1070,  1161,   520,  -109,   832,   108,  -498,
     1770      67,   997,   670,   596,   603,   586,   911,   675,   593,   260,
     1771     431,    46,   -10,   108,   833,   136,   137,   108,   857,   136,
     1772     234,    46,   817,   367,  1459,  1403,  1404,   626,   172,   576,
     1773    1464,   630,   596,   428,   334,   577,  1315,   596,   108,    46,
     1774     136,   137,   840,   383,    46,  1479,    46,   248,   324,   834,
     1775    1486,   337,   385,   235,   239,   870,   870,   870,   236,   384,
     1776     185,   682,  -424,   322,   483,   866,  1346,   577,   386,  -425,
     1777      46,   500,   870,  1177,   325,   519,   877,   921,   172,   505,
     1778    1177,   172,   272,  1021,  1147,  1149,   110,   387,   318,   318,
     1779     717,    74,   555,   556,    46,   428,    74,   208,   729,   934,
     1780    1409,   505,    46,   388,   367,   702,    46,  1080,    95,   693,
     1781      46,   498,   274,   472,   894,   448,  1125,   882,   448,  1177,
     1782     163,   703,   275,  1230,   448,    47,   172,   557,   558,  1099,
     1783     453,   754,   472,   453,   609,   392,   113,   393,   173,   453,
     1784     472,   679,   704,   860,   394,    94,   870,   861,   771,   603,
     1785     862,   754,   400,   777,   863,   629,   395,   396,   705,   633,
     1786     104,   488,   397,   318,   702,   488,   401,   598,   398,  1016,
     1787    1085,   704,   729,  1096,  1344,   721,   521,   728,   696,   521,
     1788     914,   318,   521,  1174,   726,    66,    60,   915,   172,   988,
     1789     276,   523,  1018,   334,   523,  1174,   548,   523,   365,  1175,
     1790     465,   549,   550,   366,  1300,   671,   673,  1442,   326,  1302,
     1791      46,  1291,   337,   520,  1442,   108,   520,   136,   137,   520,
     1792    1301,  1085,    46,   225,    46,  1303,   208,   226,   471,    53,
     1793     230,   569,   232,   404,   719,   870,   762,    67,   892,   241,
     1794     720,   570,   172,    46,   327,  1388,   318,   322,   322,   172,
     1795     999,   741,  1347,  1480,   817,    74,   742,   815,   862,    46,
     1796     593,   827,  1095,   603,   328,  -102,   764,  1031,   404,  -102,
     1797     939,   891,    46,   893,    74,    46,   765,   551,   552,   701,
     1798    1016,  -109,    74,  -109,  1029,   751,   337,  -109,   752,   856,
     1799     819,   758,   370,   519,   593,   717,   519,  1332,   329,   519,
     1800     865,  1333,  -109,  -109,  1074,   943,   883,   601,   642,    46,
     1801     330,    46,   884,    36,   736,   944,   172,    39,   382,  1444,
     1802     737,  1445,   322,   378,    40,    41,   559,   560,    74,   871,
     1803     871,   871,  -449,   172,  -449,   746,   402,   172,  -449,   938,
     1804     322,   747,  1107,   817,   762,   989,   871,   761,   917,    42,
     1805     693,  1036,   799,   762,   334,    46,    46,   905,   390,   144,
     1806     907,   984,  1481,   762,   225,   996,   762,   985,   419,    46,
     1807     138,   720,  1222,  1340,   903,   434,   448,   420,   577,   762,
     1808    1128,   728,   472,   910,  1341,   663,  1343,   912,   726,   424,
     1809     762,   453,   762,   692,   827,   603,   442,   104,   172,   664,
     1810      36,   455,   170,   171,    39,   322,   488,   694,   918,  1348,
     1811     458,    40,    41,   596,   919,   762,   920,   859,   461,   598,
     1812     871,   237,   240,   211,   472,   462,  1399,   717,   334,   108,
     1813    1031,    36,  1400,   874,   484,    39,   366,   717,  1419,  1500,
     1814     238,   159,    40,    41,   762,   577,   889,    46,   858,   248,
     1815     324,   404,   717,   598,   493,   728,   494,   190,   512,    46,
     1816     213,   528,   726,   223,   553,   554,   208,   733,   509,     8,
     1817       9,    10,    11,    12,   211,   524,   108,   734,   136,   137,
     1818     208,   526,   527,   324,   404,   998,   827,   561,   126,   815,
     1819     127,   128,   129,   547,   562,   578,    30,   404,   603,  1224,
     1820     563,   505,   225,  -275,   230,   581,  1056,   404,  1172,   871,
     1821       8,     9,    10,    11,    12,   817,   895,   211,   404,    33,
     1822     564,   898,   819,   404,    74,   567,   529,   530,   531,   527,
     1823     333,    46,   787,   788,   789,   790,  -421,    30,   412,   659,
     1824     404,   159,   585,   500,    46,   481,   324,   404,   729,   532,
     1825     588,   533,    46,   534,   368,   638,  1263,  1264,   505,   505,
     1826      33,  1131,   172,   404,   656,   527,    74,   841,   324,   601,
     1827      46,   208,  1314,  1316,  1317,  1282,  1283,   211,   815,   159,
     1828     457,   657,   448,   693,  1100,  1143,   665,   404,    66,    60,
     1829     225,   693,  1146,   667,   601,   172,    36,   453,   170,   171,
     1830      39,  1121,   159,  1148,   754,   601,  1121,    40,    41,   603,
     1831    1210,   172,   404,   658,   436,   211,  1151,  1079,   925,   211,
     1832     925,   488,  1102,   318,   172,  1437,  1438,   729,  1378,  1379,
     1833     783,   784,    53,   685,     2,   202,     4,     5,     6,     7,
     1834      67,   785,   786,   791,   792,   717,   717,   660,   661,   662,
     1835    1058,   253,   708,   748,  1121,   710,  -222,   759,   763,    63,
     1836     114,   767,   820,   -12,  1056,   822,   824,  1186,  1188,  1190,
     1837     856,   835,     2,   202,     4,     5,     6,     7,   879,   880,
     1838     886,   285,   906,   908,   913,   688,   909,  1217,   960,  -398,
     1839      63,   142,    34,   737,    35,   933,  -502,  1471,  1101,   947,
     1840     224,   717,   717,   157,   211,   954,     8,     9,    10,    11,
     1841      12,   956,   961,   965,   966,   643,   968,  1158,   969,   970,
     1842     368,   172,   971,   337,    46,   217,   980,   991,   992,   993,
     1843      34,    74,    35,    30,  1007,  1008,  1085,  1009,   780,   781,
     1844     782,  1010,  1011,  1179,   472,  1012,  1013,  1024,  -386,   448,
     1845     815,  -385,  1071,  1082,    -3,  1038,    33,   434,  1081,  1193,
     1846    1083,    36,   255,  1084,   453,    39,  1091,  1411,  1089,   505,
     1847    1073,  1088,    40,    41,  1092,  1090,  1098,  1108,  1109,   762,
     1848    1110,   527,   322,   211,   974,  1113,  1120,    53,  1117,  1141,
     1849    1164,  1162,  1163,  1165,   706,    67,   368,    42,  1166,   457,
     1850     104,  1180,  1181,   323,  1183,  1184,  1192,   144,  1182,  1198,
     1851     215,   255,   344,  1196,    -3,  1197,  1203,  1208,    46,  1056,
     1852    1214,  1225,  1223,   493,  1218,  1457,  1411,   505,   505,   858,
     1853    1228,   728,   739,   211,   743,  1232,  1236,  1239,   726,  1296,
     1854    1241,   399,  1243,  1244,  1249,  1273,   210,  1245,  1246,  1247,
     1855    1100,  1256,  1265,  1121,  1121,  1121,   417,  1266,  1276,   142,
     1856     423,  1277,  1342,  1490,   157,   334,   104,  1290,   717,  1298,
     1857       2,   202,     4,     5,     6,     7,   717,   717,   717,  1279,
     1858     904,  1280,  1287,   172,  1304,   440,    74,  1306,  1102,   443,
     1859    1310,   444,  1312,  1318,  1311,  1319,  1320,   210,  1322,  1328,
     1860     459,    66,    60,  1329,  1330,  1331,    63,  1056,  1338,  1339,
     1861    1349,   473,  1283,   527,  1352,  1354,   392,   726,   393,  1355,
     1862     717,   480,  1357,   206,   216,   394,  1362,    72,    34,   423,
     1863      35,   208,   400,  1365,  1361,  1372,  1100,   395,   396,  1373,
     1864     210,  -387,  1376,   397,  1397,    53,   401,  1387,  1391,   398,
     1865    1393,   663,  1401,    67,   211,   104,  1335,   975,    72,  1056,
     1866    1398,  1410,  1056,  1058,  1101,   664,  1271,  1272,  1420,  1274,
     1867    1405,  1406,  1407,  1408,  1102,  1278,  1179,   472,  1281,  1422,
     1868      46,    46,   211,   878,  1333,  1121,  1121,   211,  1415,  1350,
     1869    1424,  1426,  1428,   218,   718,   255,  1430,  1431,   594,  1443,
     1870     210,  1056,  1432,   527,   622,  1451,  1056,  1453,  1455,  1456,
     1871    1463,  1475,   990,  1478,  1485,   433,  1487,   627,  1493,  1499,
     1872      53,   627,   995,   434,   255,   793,  1100,   901,    67,  1056,
     1873     794,   796,   795,  1231,  1470,   797,  1289,  1006,   210,  1390,
     1874    1458,  1501,   210,   929,    74,  1351,  1474,   146,  1226,   932,
     1875    1101,  1353,   147,  1227,   148,  1202,  1446,  1086,   712,   683,
     1876     684,   926,   812,    36,  1102,   170,   171,    39,  1087,  1472,
     1877     473,    46,  1116,   211,    40,    41,   885,  1037,  1056,   949,
     1878     347,  1097,  1299,  1056,   344,   731,   957,   211,   802,   473,
     1879      46,    46,   104,   158,  1449,   803,  1056,   473,  1056,   370,
     1880       0,     0,  1056,  1377,   804,  1056,  1385,     0,     0,  1450,
     1881      46,  1056,   367,   104,     0,  1056,     0,  1179,   472,    74,
     1882       0,  1449,     0,   713,  1179,   472,   423,   210,  1384,   479,
     1883    1447,     0,   104,     0,     0,    36,  1450,   179,   180,    39,
     1884    1101,   727,     0,    63,   318,  1417,    40,    41,     0,     0,
     1885    1421,   423,     0,   441,  1396,   423,     0,  1473,     0,     0,
     1886       0,    53,     0,  1179,   472,     0,     0,     0,    53,    67,
     1887     172,   181,     0,  1435,    72,     0,    67,     0,   211,    72,
     1888       0,   182,     0,   255,   344,     0,     0,     0,   104,     0,
     1889       0,   527,    36,  1498,   179,   180,    39,     0,     0,   718,
     1890       0,     0,     0,    40,    41,  1503,   210,    53,     8,     9,
     1891      10,    11,    12,     0,     0,    67,     0,     0,   104,     0,
     1892       0,   643,     0,     0,     0,     0,     0,  1041,   261,   805,
     1893    1156,  1157,   509,     0,     0,    30,     0,     0,   262,     0,
     1894    1491,     0,     0,     0,     0,    75,  1491,   627,   818,     0,
     1895     594,     0,     0,     0,     0,  1491,   210,     0,    33,  1491,
     1896      74,   837,     0,     0,     0,     0,     0,    74,     0,     0,
     1897       0,     0,   218,     0,     0,     0,    75,     0,     0,   594,
     1898       0,     0,     0,     0,   594,     0,  1205,  1206,     0,     0,
     1899     627,     0,     0,   344,   344,   344,     0,     0,     0,   569,
     1900       0,   404,     0,   322,     0,     0,    74,     0,   104,   570,
     1901     344,   219,   209,     0,     0,   643,     0,     0,     0,     0,
     1902       0,     0,   228,     0,    54,    54,     0,     0,   713,   104,
     1903       0,   718,   172,     0,     0,     0,   104,     0,    72,   473,
     1904       0,   718,    36,   527,   255,   727,    39,     0,   922,     0,
     1905       0,  -276,   347,    40,    41,    54,   718,    72,     8,     9,
     1906      10,    11,    12,   209,   211,    72,     0,     0,     0,     0,
     1907       0,     0,     0,     0,     0,   104,     0,   210,   825,     0,
     1908     601,   473,     0,     0,   344,    30,     0,    54,   602,     0,
     1909      54,   347,  -277,   948,     0,     0,   423,     0,   349,     8,
     1910       9,    10,    11,    12,     0,   210,   209,     0,    33,   347,
     1911     210,    72,  1041,     0,     0,     0,     0,     0,   255,   727,
     1912       0,     0,     0,     0,   973,     0,    30,     0,     0,     0,
     1913       0,     0,     8,     9,    10,    11,    12,     0,     8,     9,
     1914      10,    11,    12,     0,     0,     0,     0,     0,   406,    33,
     1915       0,     0,   347,  1321,     0,   414,     0,     0,     0,    30,
     1916     713,  1323,  1324,  1325,     0,    30,   209,     0,     0,     0,
     1917     713,     0,     0,   344,     0,   627,     0,   342,  1004,   627,
     1918     818,     0,    33,     0,     0,   713,     0,    36,    33,   179,
     1919     180,    39,    75,     0,     0,  1015,   210,    75,    40,    41,
     1920       0,     0,     0,     0,   209,  1356,     0,     0,   209,     0,
     1921     210,     0,     0,    77,     0,  1269,   347,     0,     0,     0,
     1922       0,     0,     0,   600,   499,   601,     0,   406,     0,   764,
     1923       0,   404,     0,   602,     0,     0,     0,     0,   211,   765,
     1924       0,    54,     0,     0,    77,     0,    63,     0,     0,   718,
     1925     718,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1926       0,   347,   347,   347,     0,     0,     0,     0,   627,     0,
     1927       0,    54,     0,     0,     0,     0,     0,     0,   347,   220,
     1928       0,   575,     0,     8,     9,    10,    11,    12,     0,   579,
     1929     219,     0,   582,   209,     0,     0,   347,     0,     0,     0,
     1930       0,   210,     0,  1094,     0,   718,   718,    72,     0,     0,
     1931      30,   423,   114,   347,     0,     0,     0,    36,     0,   179,
     1932     180,    39,     0,   121,   124,   125,   344,     0,    40,    41,
     1933     211,     0,     0,    33,   535,   536,   537,   538,   539,   540,
     1934     541,   542,   543,   544,     0,     0,     0,     0,     0,    72,
     1935       0,     0,   347,   687,   406,   404,    75,     0,   414,     0,
     1936     594,   688,     0,   689,     0,     0,   350,   545,     0,     0,
     1937     349,     0,   209,   142,   943,    75,   601,     0,   713,   713,
     1938       0,   344,   344,    75,   944,     0,     0,   347,     0,   209,
     1939       0,     0,     0,     0,   250,     0,   251,     0,     0,     0,
     1940       0,  1178,     0,     0,     0,     0,     0,     0,     0,   349,
     1941       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     1942       0,     0,   209,     0,     0,     0,     0,   349,   347,    75,
     1943       0,     0,     0,     0,   713,   713,     0,     0,   347,    30,
     1944     627,   347,   406,  1297,     0,     0,   218,     0,   347,   342,
     1945       0,     0,     0,   347,     0,     0,     0,     0,     0,     0,
     1946      77,     0,    33,     0,     0,    77,     0,    36,     0,     0,
     1947     349,    39,   718,     0,     0,   389,     0,     0,    40,    41,
     1948     718,   718,   718,     0,     0,   408,   409,   210,     0,     0,
     1949     413,     0,   415,   416,     0,   727,     0,     0,     0,     0,
     1950       0,     0,     0,   733,     0,     0,     0,     0,    54,     0,
     1951       0,     0,     0,   734,    72,    36,     0,   179,   180,    39,
     1952       0,     0,     0,     0,   718,     0,    40,    41,     0,     0,
     1953       0,    84,   575,   575,   349,     0,     0,     0,  1270,     0,
     1954       0,     0,     0,   209,     0,     0,     0,     0,     0,   342,
     1955       0,   600,     0,   601,     0,   255,     0,     0,   220,    63,
     1956       0,   602,    84,     0,     0,     0,     0,     0,     0,     0,
     1957       0,   209,   713,     0,   727,     0,   209,     0,   114,   349,
     1958     349,   349,     0,     0,     0,     0,     0,     0,     0,     0,
     1959       0,     0,     0,     0,   347,     0,   349,   221,     0,     0,
     1960       0,   713,     0,     0,     0,     0,     0,     0,     0,   713,
     1961     713,   713,     0,   342,   349,     0,     0,     0,     0,   896,
     1962     344,   344,     0,   899,    77,    75,     0,     0,     0,     0,
     1963       0,   349,     0,     0,  1178,     0,     0,     0,   350,     0,
     1964       0,     0,     0,    77,     0,     0,   347,   347,     0,   347,
     1965     347,    77,     0,   713,     0,     0,   406,     0,   342,   342,
     1966     342,   210,   209,     0,   114,     0,     0,    75,     0,    72,
     1967     349,     0,     0,     0,     0,   342,   209,   350,     0,     0,
     1968       0,     0,     0,     0,   357,     0,     0,     0,     0,     0,
     1969       0,     0,     0,     0,     0,   350,   499,    77,     0,     0,
     1970       0,     0,   347,   347,     0,   349,     0,     0,     0,     0,
     1971       0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
     1972      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     1973      23,    24,     0,   344,    25,    26,    27,     0,   350,     0,
     1974       0,     0,    30,   446,     0,     0,   349,     0,     0,   342,
     1975       0,     0,     0,   210,   114,     0,   349,     0,     0,   349,
     1976       0,     0,     0,   347,   219,    33,   349,   209,   575,     0,
     1977       0,   349,    37,    38,     0,  1178,     0,     0,    84,     0,
     1978       0,     0,  1178,    84,     0,     0,     0,     0,     0,     0,
     1979       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
     1980      12,     0,   350,     0,     0,     0,   218,     0,   447,     0,
     1981       0,     0,   700,     0,     0,     0,   109,     0,     0,     0,
     1982       0,  1178,    36,    30,   179,   180,    39,    72,  1488,     0,
     1983       0,     0,    75,    40,    41,     0,     0,     0,   342,     0,
     1984     347,     0,   347,     0,     0,   342,    33,   350,   350,   350,
     1985       0,    36,     0,   179,   180,    39,     0,     0,   687,     0,
     1986     404,     0,    40,    41,   350,     0,     0,     0,   689,   347,
     1987       0,   807,   808,     0,     0,     0,   221,   347,   347,   347,
     1988     406,     0,   350,     0,     0,     0,     0,   181,   347,   347,
     1989       0,     0,     0,    77,     0,     0,     0,   182,     0,   350,
     1990       0,   842,    72,     0,   845,   846,     0,   849,     0,   851,
     1991     852,    54,   349,     0,   853,   854,     0,     0,     0,     0,
     1992       0,   347,     0,     0,     0,     0,     0,     0,     0,     0,
     1993       0,     0,     0,     0,     0,    77,     0,     0,   350,     0,
     1994       0,     0,    84,     0,     0,     0,    36,     0,   179,   180,
     1995      39,     0,     0,   209,  1132,     0,   357,    40,    41,     0,
     1996       0,    84,     0,     0,   349,   349,     0,   349,   349,    84,
     1997    1144,     0,     0,   350,   164,     0,   168,    54,     0,   174,
     1998     175,   176,  1468,   178,   404,     0,     0,    75,     0,     0,
     1999       0,   342,  1469,     0,     0,   357,   927,   928,   229,     0,
     2000       0,   347,   930,     8,     9,    10,    11,    12,     0,     0,
     2001     244,   245,     0,   357,   350,    84,     0,     0,     0,     0,
     2002     349,   349,     0,     0,   350,     0,     0,   350,     0,     0,
     2003      30,     0,   220,     0,   350,     0,     0,     0,     0,   350,
     2004       0,     0,     0,    72,     0,  1211,   342,   342,     0,     0,
     2005      72,     0,     0,    33,     0,     0,   357,     0,    36,     0,
     2006     179,   180,    39,     0,     0,     0,    54,     0,     0,    40,
     2007      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2008       0,   349,     0,     0,     0,     0,     0,     0,     0,    72,
     2009       0,     0,     0,     0,   687,     0,   404,     0,     0,     0,
     2010      77,     0,     0,     0,   689,     0,     0,     0,     0,     0,
    19522011       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1953      941,     0,   587,     0,     0,   177,   794,   205,     0,   394,
    1954      942,  1330,     0,   402,   515,   178,   817,     0,   589,     0,
    1955        0,   804,     0,   578,     0,     0,     0,     0,     0,   206,
    1956        0,   249,   707,   437,   437,  1147,   826,     0,     0,     0,
    1957      706,   316,   707,     0,   205,     0,     0,  1113,   205,     0,
    1958        0,   706,   706,   706,   578,     0,     0,     0,   707,   578,
    1959        0,     0,     0,     0,   488,   613,     0,     0,     0,   332,
    1960      332,     0,     0,     0,     0,   213,     0,     0,     0,     0,
    1961        0,     0,     0,     0,   332,   523,   524,   525,   526,   527,
    1962      528,   529,   530,   531,   532,   335,     0,   811,   394,     0,
    1963      589,   706,   702,   437,     0,     0,   915,     0,   682,     0,
    1964        0,     0,     0,     0,     0,   462,     0,     0,   533,     0,
    1965        0,     0,     0,   716,     0,     0,   920,   205,     0,     0,
    1966        0,     0,     0,   120,   123,   124,    75,     0,     0,     0,
    1967        0,    72,     0,     0,   437,   206,     0,     0,  1113,     0,
    1968        0,   515,   817,   589,     0,   335,     0,     0,     0,   462,
    1969       72,     0,   332,     0,     0,     0,     0,    75,    72,     0,
    1970     1497,   946,     0,     0,   411,   206,     0,     0,  1496,     0,
    1971      206,   437,   437,     0,     0,     0,     0,   563,   563,     0,
    1972        0,     0,     0,     0,   974,   335,   716,     0,     0,  1497,
    1973        0,   972,   214,   244,     0,   245,   205,  1496,     0,   437,
    1974        0,     0,     0,   335,     0,    72,     0,     0,     0,     0,
    1975        0,     0,     0,   205,     0,   315,     0,     0,     0,     0,
    1976        0,     0,     0,   312,     0,     0,     0,     0,   702,     0,
    1977        0,     0,     0,     0,     0,   817,     0,     0,   702,     0,
    1978        0,     0,     0,  1002,   804,   335,   589,   205,     0,     0,
    1979      249,     0,     0,     0,   702,   707,   707,     0,     0,   206,
    1980        0,   886,     0,  1019,     0,   889,     0,     0,     0,     0,
    1981        0,     0,   377,   206,     0,     0,   337,     0,     0,     0,
    1982        0,   396,   397,     0,     0,     0,   401,     0,   403,   404,
    1983      563,     0,     0,     0,     0,   249,     0,     0,     0,     0,
    1984        0,     0,   394,     0,     0,   335,     0,     0,     0,     0,
    1985        0,     0,   707,   707,     0,    63,     0,     0,     0,     0,
    1986        0,   515,     0,     0,     0,     0,   316,   817,   589,     0,
    1987        0,    77,     0,     0,     0,     0,     0,     0,     0,   804,
    1988      682,     0,     0,     0,     0,     0,  1088,     0,   682,     0,
    1989        0,     0,     0,   335,   335,     0,     8,     9,    10,    11,
    1990       12,   206,    77,   205,     0,     0,   589,    75,   335,     0,
    1991        0,     0,    75,     0,     0,     0,     0,     0,     0,     0,
    1992     1105,     0,     0,    30,     0,     0,   335,     0,   411,   113,
    1993        0,     0,     0,   205,     0,     0,     0,   215,   205,    72,
    1994        0,     0,     0,   332,     0,     0,    33,   335,     0,     0,
    1995        0,    36,     0,   176,   563,    39,     0,   249,     0,     0,
    1996        0,     0,    40,    41,     0,     0,     0,     0,   515,     0,
    1997        0,     0,     0,     0,     0,   613,     0,   578,     0,     0,
    1998        0,     0,     0,    72,     0,     0,   335,   676,     0,   392,
    1999        8,     9,    10,    11,    12,   140,     0,   678,     0,   214,
    2000        0,   702,   702,     0,   332,   332,   332,     0,     0,     0,
    2001     1331,     0,     0,     0,     0,     0,   498,    30,     0,   337,
    2002      335,   338,     0,     0,     0,  1197,     0,   205,     0,     0,
    2003        0,     0,     0,     0,     0,     0,     0,     0,     0,   707,
    2004       33,   205,     0,     0,     0,    36,     0,   176,   589,    39,
    2005      707,   707,   707,     0,     0,     0,    40,    41,   702,   702,
    2006        0,   488,   335,     0,     0,    75,     0,   563,   563,   804,
    2007      249,     0,   335,     0,     0,   394,     0,   213,   335,   337,
    2008        0,  1517,     0,   392,    75,     0,     0,     0,   335,     0,
    2009        0,  1518,    75,     8,     9,    10,    11,    12,     0,   206,
    2010      707,     0,     0,     0,     0,   249,     0,     0,     0,     0,
    2011        0,     0,    77,     0,     0,     0,     0,    77,     0,   337,
    2012       30,     0,     0,     0,     0,     0,   613,     0,   716,   205,
    2013        0,     0,     0,   613,   332,   332,     0,   337,     0,    75,
    2014      515,     0,     0,    33,     0,     0,     0,     0,    36,    72,
    2015      176,  1144,    39,     8,     9,    10,    11,    12,     0,    40,
    2016       41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2017     1161,     0,     0,   335,     0,     0,  1299,     0,     0,   337,
    2018       30,     0,     0,     0,   255,     0,     0,     0,     0,     0,
    2019        0,     0,     0,   332,   256,     0,     0,    63,     0,   796,
    2020      797,     0,     0,    33,   215,     0,     0,   613,    36,     0,
    2021        0,     0,    39,     0,     0,     0,   702,     0,   716,    40,
    2022       41,     0,   113,     0,   338,     0,     0,   831,     0,     0,
    2023      834,   835,     0,   838,     0,   840,   841,   335,     0,   337,
    2024      842,   843,     0,     0,   907,   702,   392,     0,   563,     0,
    2025        0,     0,     0,  1236,   908,     0,   702,   702,   702,     0,
    2026        0,     0,     0,     0,     0,     0,     0,     0,   332,   332,
    2027       77,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2028        0,     0,  1197,     0,   338,     0,     0,   337,   337,    77,
    2029        0,     0,     0,     0,   206,   335,   335,    77,   335,   335,
    2030      335,     0,   337,     0,     0,   613,   702,     8,     9,    10,
    2031       11,    12,     0,     0,     0,     0,     0,   113,     0,    72,
    2032      337,     0,     0,     0,   338,   925,   926,   205,     0,     0,
    2033        0,   928,     0,    75,    30,     0,     0,     0,     0,     0,
    2034        0,   337,   338,     0,    77,     0,     0,     0,     0,     0,
    2035        0,     0,   335,   335,     0,     0,     0,    33,     0,     0,
    2036        0,     0,    36,   335,    84,     0,    39,   249,     0,     0,
    2037        0,     0,     0,    40,    41,     0,     0,    75,     0,     0,
    2038      337,     0,     0,     0,   338,     0,     0,     0,     0,     0,
    2039        0,     0,     0,     0,   332,    84,   206,     0,    42,     0,
    2040        0,     0,     0,     0,     0,     0,     0,     0,   142,     0,
    2041        0,     0,     0,     0,   337,     0,     0,     0,   113,     0,
    2042        0,     0,   335,     0,     0,     0,     0,     0,   335,   335,
    2043      216,     0,     0,     0,     0,     0,     0,     0,     0,  1197,
    2044        0,     0,     0,     0,   338,     0,  1197,     0,     0,     0,
    2045        0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
    2046        0,     0,     0,     0,     0,     0,   337,     0,     0,     0,
    2047      213,   214,   337,     0,     0,     0,     0,   468,     0,     0,
    2048        0,     0,   337,     0,     0,     0,     0,   335,     0,  1197,
    2049        0,    72,   338,   338,     0,     0,  1538,     0,     0,     0,
    2050        0,     0,     0,    54,    54,     0,     0,   338,     0,     0,
    2051      335,     0,   335,     0,   345,     0,     0,     0,     0,     0,
    2052        0,     0,   205,     0,     0,   338,     0,     0,     0,     8,
    2053        9,    10,    11,    12,    54,     0,     0,     0,    77,   335,
    2054        0,     0,     0,    75,     0,     0,   338,     0,     0,     0,
    2055      335,   335,   335,     0,     0,     0,    30,     0,     0,     0,
    2056        0,     0,   335,   335,     0,     0,    54,   337,     0,    54,
    2057        0,     0,     0,     0,     0,     0,    72,     0,     0,    33,
    2058        0,     0,    77,     0,    36,   338,     0,     0,    39,     0,
    2059        0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
    2060      335,     0,     0,     0,     0,    84,     0,     0,     0,     0,
    2061       84,     0,     0,     0,     0,     0,     0,     0,     0,   338,
    2062      722,     0,     0,     0,   205,     0,     0,     0,     0,     0,
    2063      723,   337,     0,     0,     0,     0,   122,   122,   122,     0,
     2012     357,     0,     0,     0,   219,     0,     0,   209,     8,     9,
     2013      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2014      20,    21,    22,    23,    24,    75,     0,    25,    26,    27,
     2015       0,     0,     0,     0,     0,    30,   446,     0,   349,     0,
     2016     349,     0,     0,     0,     0,   357,   357,   357,     0,     0,
     2017       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2018     350,     0,   357,     0,     0,    37,    38,   349,     0,     0,
     2019       0,     0,     0,     0,     0,   349,   349,   349,     0,     0,
     2020     357,     0,    54,    54,     0,     0,   349,   349,     0,     0,
     2021       0,    84,     0,     0,     0,     0,     0,   357,     0,   209,
     2022      75,   447,     0,     0,    54,   931,     0,     0,     0,   109,
     2023       0,     0,   350,   350,     0,   350,   350,     0,     0,   349,
     2024       0,     0,     0,    54,     0,     0,     0,     0,     0,     0,
     2025       0,     0,     0,    84,     0,    77,   357,     0,     0,     0,
     2026       0,     0,     0,   592,   599,     0,     0,     0,     0,     0,
     2027       0,     0,     0,     0,     0,   623,   624,     0,     0,     0,
     2028       0,     0,     0,     0,     0,   342,   342,     0,   350,   350,
     2029       0,   357,     0,     0,    54,     0,     0,     0,     0,    54,
     2030       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2031      17,    18,    19,    20,    21,    22,    23,    24,  -278,   349,
     2032      25,    26,    27,     0,     0,     0,     0,     0,    30,    54,
     2033       0,     0,   357,     0,     0,     0,     0,     0,     0,     0,
     2034       0,     0,   357,     0,     0,   357,     0,     0,     0,   350,
     2035     221,    33,   357,     0,     0,     0,     0,   357,    37,    38,
     2036       0,    75,  -278,     0,     0,     0,     0,     0,    75,     0,
     2037       0,     0,     0,     0,     0,  1207,     0,     8,     9,    10,
     2038      11,    12,     0,     0,     0,     0,     0,     0,     0,     0,
     2039       0,     0,   220,     0,   333,     0,     0,     0,   342,     0,
     2040       0,     0,   109,     0,    30,     0,     0,    75,     0,     0,
     2041       0,     0,     0,    77,     0,     0,     0,     0,    84,    54,
     2042       0,     0,     0,     0,     0,     0,   350,    33,   350,     0,
     2043       0,     0,    36,     0,   179,   180,    39,     0,     0,     0,
     2044      54,     0,     0,    40,    41,     0,     0,    54,     0,     0,
     2045       0,     0,     0,     0,     0,   350,     0,     0,     0,     0,
     2046       0,     0,     0,   350,   350,   350,     0,     0,  1468,     0,
     2047     404,     0,     0,     0,   350,   350,     0,     0,  1469,     0,
     2048       0,     0,     0,     0,     0,     0,    54,     0,    77,     0,
     2049       0,     0,     0,     0,     0,  1288,     0,     0,   357,     0,
     2050       0,     0,     0,     0,     0,     0,     0,   350,     0,  1014,
     2051       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2052       0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
     2053       0,     0,     0,     0,     0,     0,     0,     0,   277,    30,
     2054     278,     0,     0,     0,     0,   214,     0,     0,     0,     0,
     2055     357,   357,     0,   357,   357,     0,     0,     0,     0,     0,
     2056       0,   279,    33,     0,     0,     0,     0,   280,     0,     0,
     2057       0,   281,     0,    84,   282,   283,   284,   285,    40,    41,
     2058       0,   286,   287,     0,     0,     0,     0,   350,     0,   288,
     2059       0,   162,     0,     0,     0,     0,   268,     0,     0,     0,
     2060       0,     0,     0,   289,     0,   373,   357,   357,     0,     0,
     2061       0,     0,   291,   813,   293,   294,   295,   296,     0,     0,
     2062       0,     0,     0,     0,     0,   162,     0,     0,     0,    77,
     2063       0,     0,     0,     0,     0,   363,    77,     0,   936,   369,
     2064     937,     0,     0,     0,     0,     0,     0,   940,   941,     0,
     2065       0,     0,   946,     0,  1152,     0,     0,     8,     9,    10,
     2066      11,    12,     0,     0,   951,     0,     0,   357,     0,   955,
     2067       0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
     2068       0,     0,     0,   277,    30,   278,     0,   162,     0,     0,
     2069       0,     0,     0,   981,     0,     0,     0,     0,     0,   214,
     2070       0,     0,     0,     0,     0,     0,   279,    33,     0,     0,
     2071     221,     0,   280,     0,     0,     0,   281,   162,   454,   282,
     2072     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2073       0,    84,     0,     0,   288,     0,     0,   592,     0,     0,
     2074       0,   369,     0,     0,   357,     0,   357,     0,   289,   162,
     2075     373,     0,     0,     0,     0,     0,     0,   291,  1153,   293,
     2076     294,   295,   296,     0,     0,     0,     0,     0,     0,     0,
     2077       0,   454,     0,   357,   162,     0,     0,     0,     0,     0,
     2078       0,   357,   357,   357,     0,     0,     0,     0,     0,     0,
     2079       0,     0,   357,   357,  1025,  1026,  1027,  1028,     0,  1030,
     2080       0,     0,     0,     0,     0,     0,    84,     0,     0,     0,
     2081       0,     0,     0,     0,  1072,     0,     0,     0,     0,     0,
     2082       0,   597,     0,     0,     0,   357,   621,     0,  1078,     0,
     2083       0,     0,     0,     1,     2,   202,     4,     5,     6,     7,
     2084       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2085      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2086      26,    27,    28,     0,     0,    29,  1093,    30,     0,     0,
     2087       0,     0,   123,   123,   123,     0,     0,     0,     0,     0,
    20642088       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2065        0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
    2066        0,   338,     0,     0,     0,     0,     0,     0,     0,     0,
    2067        0,   338,     0,     0,     0,     0,   215,   338,     0,     0,
    2068        0,     0,     0,     0,     0,     0,     0,   338,   335,   337,
    2069      337,     0,   337,   337,   337,     0,     0,   216,     0,     0,
    2070        0,     0,     0,     0,     0,     0,   122,     0,   122,     0,
    2071        0,     0,     0,    75,     0,    54,     0,   345,     0,     0,
    2072     1226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2073        0,     0,   265,    72,     0,     0,     0,     0,     0,     0,
    2074       72,     0,     0,     0,    54,     0,   337,   337,    77,     0,
    2075        0,     0,     0,     0,     0,     0,     0,   337,     0,     0,
    2076        0,     0,     0,    84,     0,     0,     0,     0,     0,     0,
    2077        0,     0,   338,     0,     0,     0,     0,   345,     0,     0,
    2078        0,     0,    84,    72,     0,   122,     0,     0,     0,     0,
    2079       84,     0,   122,     0,   122,   122,     0,     0,     0,   122,
    2080        0,   122,   122,     0,     0,     0,     0,     0,     0,     0,
    2081        0,     0,     0,     0,     0,     0,   337,   345,     0,     0,
    2082        0,     0,   337,   337,     0,     0,     0,     0,     0,     0,
    2083        0,     0,     0,     0,     0,   345,   338,    84,     0,     0,
     2089      33,     0,    34,     0,    35,     0,     0,    37,    38,     0,
     2090       0,   162,   162,  1118,     0,   357,     0,   363,     0,     0,
     2091    1126,     0,     0,     0,  1130,     0,     0,     0,     0,  1134,
     2092       0,  1135,     0,     0,     0,  1137,  1138,  1139,   454,     0,
     2093    1142,   454,     0,    43,     0,     0,     0,   454,     0,  1154,
     2094       0,   109,     0,   123,     0,   123,     0,    84,     0,     0,
     2095       0,     0,     0,     0,    84,     0,     0,  1169,  1170,     8,
     2096       9,    10,    11,    12,   730,     0,     0,     0,     0,   271,
     2097       0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
     2098       0,     0,  1199,     0,     0,  1201,    30,     0,     0,   454,
     2099       0,     0,   454,    84,   162,   454,     0,     0,     0,     0,
     2100       0,     0,     0,     0,     0,     0,     0,   363,     0,    33,
     2101       0,     0,     0,     0,    36,     0,   179,   180,    39,     0,
     2102       0,     0,     0,  1216,   123,    40,    41,     0,     0,  1220,
     2103    1221,     0,   123,     0,   123,   123,     0,     0,  1229,   123,
     2104       0,   123,   123,  1233,     0,     0,  1237,     0,  1238,     0,
     2105     261,  1240,     0,     0,     0,     0,     0,     0,     0,   162,
     2106     262,     0,     0,     0,  1248,     0,     0,     0,     0,     0,
     2107       0,   363,     0,   597,     0,     0,   823,  1255,     0,  1257,
     2108    1258,  1259,  1260,     0,     0,     0,     0,     0,     0,     0,
     2109       0,     0,     0,     0,     0,  1267,     0,  1268,     0,     0,
     2110       0,   168,   597,     0,     0,     0,     0,   597,     0,     0,
     2111       0,   123,     0,     0,     0,     0,   363,   363,   363,     0,
     2112       0,     0,     0,     0,     0,     0,     0,     0,     0,  1292,
     2113    1293,     0,     0,   363,     0,     0,     0,   207,     0,     0,
     2114       0,     0,     0,     0,     0,     0,     0,   227,     0,   231,
     2115       0,   233,     0,     0,     0,     0,     0,     0,   242,     0,
     2116       0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
     2117       0,     0,     0,     0,     0,     0,     0,  1326,  1327,     0,
     2118       0,     0,     0,     0,     0,     0,     0,  1337,   207,   454,
     2119     231,   233,   242,     0,     0,     0,     0,     0,     0,     0,
     2120       0,     0,     0,     0,     0,     0,     0,   363,     0,   945,
     2121       0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    20842122       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2085        0,     0,     0,     0,  1318,     0,   330,     0,     0,     0,
    2086        0,     0,     0,     0,   214,     0,     0,     0,     0,   122,
    2087        0,     0,     0,     0,     0,     0,     0,   345,     0,     0,
    2088        0,   337,     0,     0,     0,    75,     0,     0,     0,     0,
    2089        0,     0,     0,     0,   338,   338,     0,   338,   338,   338,
    2090        0,     0,     0,     0,   337,     0,   337,     0,     0,     0,
    2091        0,     0,     0,     0,     0,     0,   330,     0,    77,     0,
     2123       0,   207,     0,  1364,     0,     0,     0,     0,     0,     0,
     2124       0,     0,   730,     0,     0,  1368,     0,  1369,  1370,  1371,
     2125       0,     0,     0,     0,     0,     0,     0,     0,     0,  1375,
     2126       0,     0,     0,     0,     0,   153,     0,     0,  1386,     0,
    20922127       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2093        0,     0,     0,   337,     0,     0,     0,   345,     0,     0,
    2094        0,     0,     0,     0,   337,   337,   337,     0,     0,     0,
    2095        0,   338,   338,     0,     0,     0,   337,   337,     0,     0,
    2096        0,     0,   338,     0,     0,     0,     0,     0,     0,     0,
    2097       75,     0,     0,     0,     0,     0,    54,     0,     0,     0,
    2098        0,     0,     0,     0,     0,   345,   345,     0,     0,     0,
    2099        0,     0,     0,     0,   337,     0,     0,     0,     0,     0,
    2100      345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2101        0,     0,     0,     0,     0,     0,   330,     0,   345,     0,
    2102        0,   338,     0,     0,     0,     0,     0,   338,   338,     0,
    2103        0,    84,     0,     0,     0,     0,     0,     0,     0,   345,
    2104        0,     0,     0,     0,   161,     0,   165,     0,     0,   171,
    2105      172,   173,     0,   175,     0,     0,     0,     0,     0,     0,
    2106        0,     0,     0,     0,     0,     0,     0,     0,   224,   215,
    2107        0,     0,     0,     0,     0,    84,   330,     0,   345,   238,
    2108      239,     0,   337,     0,     0,     0,   338,     0,     0,     0,
    2109       77,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2110       17,    18,    19,    20,    21,    22,    23,    24,  -279,   338,
    2111        0,   338,   345,     0,     0,     0,     0,     0,    30,     0,
    2112        0,     0,     0,     0,   330,   330,     0,    75,     0,     0,
    2113        0,     0,     0,     0,    75,     0,     0,     0,   338,   330,
    2114        0,    33,     0,     0,   327,     0,     0,     0,     0,   338,
    2115      338,   338,  -279,     0,   345,     0,     0,     0,     0,     0,
    2116        0,   338,   338,     0,   345,     0,     0,     0,     0,   216,
    2117      345,     0,   122,   122,     0,    77,     0,    75,     0,     0,
    2118      345,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2119        0,     0,     0,     0,     0,     0,     0,     0,     0,   338,
    2120      122,     0,     0,   122,   122,     0,   122,     0,   122,   122,
    2121        0,     0,     0,   122,   122,     0,     0,   330,     2,   197,
     2128    1394,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2129       0,   207,     0,   231,   233,   242,   363,     0,     0,     0,
     2130     621,     0,     0,   363,     0,     0,     0,     0,     0,     0,
     2131       0,   247,     0,     0,     0,     0,     0,     0,     0,     0,
     2132       0,   252,     0,     0,     0,     0,     0,  1433,  1434,   207,
     2133       0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
     2134    1439,     0,     0,     0,     0,     0,     0,  1439,     0,   497,
     2135       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2136      18,    19,    20,    21,    22,    23,    24,  -278,     0,    25,
     2137      26,    27,  1467,     0,     0,     0,   153,    30,     0,     0,
     2138       0,     0,     0,     0,     0,     0,     0,     0,     0,   379,
     2139       0,     0,     0,     0,     0,   454,     0,   207,  1489,     0,
     2140      33,     0,     0,     0,     0,    36,     0,   331,   332,    39,
     2141       0,  -278,   411,     0,     0,     0,    40,    41,   207,     0,
     2142     123,   123,  1502,   231,   233,     0,   425,  1504,     0,     0,
     2143       0,   242,     0,     0,     0,   430,   162,     0,     0,     0,
     2144       0,   634,     0,   333,     0,   438,     0,     0,     0,   363,
     2145     123,   625,     0,   123,   123,     0,   123,     0,   123,   123,
     2146       0,     0,     0,   123,   123,     0,     0,     0,     0,     0,
     2147     464,     0,     0,   207,     0,   474,     0,     0,     0,     0,
     2148       0,     0,     0,   597,     0,     0,     0,     0,   482,     0,
     2149       0,   207,     0,     0,   492,     0,   496,   207,     0,     0,
     2150       0,     0,     0,     0,   363,   363,     0,     0,     0,     0,
     2151       0,     0,   525,     0,   207,     0,     0,   207,   207,     0,
     2152       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2153       0,     0,     0,   207,     0,     0,     0,     0,     0,     0,
     2154     123,     0,     0,     0,     0,   123,   123,   207,     0,     0,
     2155       0,   123,     0,     0,   207,   584,     0,     0,     0,     0,
     2156     589,     0,   454,   201,     2,   202,     4,     5,     6,     7,
     2157       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2158      18,    19,    20,    21,    22,    23,    24,     0,   635,    25,
     2159      26,    27,   636,   637,     0,   639,     0,    30,     0,     0,
     2160       0,   649,   650,     0,   651,   652,     0,   653,     0,   654,
     2161       0,     0,     0,     0,     0,     0,     0,     0,   730,     0,
     2162      33,     0,    34,     0,    35,    36,   584,   203,    38,    39,
     2163       0,     0,     0,     0,   669,     0,    40,    41,     0,     0,
     2164       0,     0,     0,   277,     0,   278,     0,     0,     0,     0,
     2165       0,     0,     0,     0,     0,     0,     0,     0,   680,     0,
     2166     214,    42,     0,   204,     0,     0,   279,     0,   207,   686,
     2167       0,   205,   280,     0,     0,     0,   281,     0,     0,   282,
     2168     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2169       0,     0,   722,     0,   288,     0,   207,   730,   725,     0,
     2170       0,   207,     0,   464,     0,     0,     0,     0,   289,     0,
     2171     373,     0,     0,     0,     0,     0,     0,   291,   375,   293,
     2172     294,   295,   296,     0,     0,     0,     0,     0,   336,   358,
     2173       0,  1194,     0,     0,     0,     0,     0,     0,     0,   760,
     2174       0,     0,     0,   363,   363,     0,     0,     0,     0,     0,
     2175       0,     0,   214,     0,     0,   775,     0,     0,     0,     0,
     2176       0,   407,     0,     0,     0,     0,     0,     0,   407,     8,
     2177       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2178      19,    20,    21,    22,    23,    24,     0,   207,    25,    26,
     2179      27,   801,     0,     0,     0,   277,    30,   278,     0,     0,
     2180     811,   207,     0,     0,     0,     0,     0,   814,     0,     0,
     2181       0,     0,   821,     0,     0,     0,     0,     0,   279,    33,
     2182       0,   497,     0,   836,   280,     0,    37,    38,   281,     0,
     2183       0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
     2184     407,     0,     0,     0,     0,     0,   288,     0,     0,     0,
     2185       0,     0,     0,     0,     0,     0,   363,     0,     0,     0,
     2186     289,     0,   517,   876,     0,   167,     0,     0,     0,   291,
     2187     292,   293,   294,   295,   296,     0,     0,     0,     0,   207,
     2188       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2189       0,     0,   207,     0,   407,     0,     0,     0,   821,     0,
     2190       0,     0,   407,   580,     0,   407,   583,   454,     0,     0,
     2191       0,   207,     0,     0,     0,   358,     0,     0,     0,   613,
     2192       0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
     2193       0,     0,     0,     0,   454,     0,     0,     0,   631,     0,
     2194       0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
     2195       0,     0,     0,   247,     0,     0,     0,   162,     0,     0,
     2196       0,     0,     0,   952,   953,     0,     0,   407,     0,     0,
     2197       0,   407,     0,     0,     0,   967,     0,     0,     0,     0,
     2198       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2199       0,     0,   982,     0,   983,     0,   207,     0,   987,     0,
     2200       0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
     2201       0,     0,     0,     0,     0,     0,     0,     0,   316,     0,
     2202       0,     0,   207,     0,   407,     0,     0,     0,   340,     0,
     2203       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2204     376,     0,     0,     0,   123,     0,     0,   207,     0,     0,
     2205       0,     0,     0,     0,     0,   407,     0,     0,   358,     0,
     2206       0,     0,     0,  1019,     0,     0,     0,     0,     0,     0,
     2207    1020,     0,     0,     0,     0,   277,     0,   278,   207,     0,
     2208       0,     0,     0,  1022,     0,  1023,     0,     0,     0,   207,
     2209       0,     0,     0,     0,     0,     0,     0,   407,   279,  1035,
     2210     336,   358,     0,     0,   280,  1039,     0,     0,   281,     0,
     2211     316,   282,   283,   284,   285,    40,    41,  1075,   286,   287,
     2212    1076,     0,     0,     0,     0,     0,   288,     0,     0,     0,
     2213       0,     0,     0,     0,     0,   478,     0,     0,   589,     0,
     2214     289,     0,   373,     0,     0,   407,   407,     0,   798,   291,
     2215     375,   293,   294,   295,   296,     0,     0,     0,     0,     0,
     2216       0,     0,     0,     0,   816,   358,     0,   358,   207,     0,
     2217       0,     0,     0,     0,     0,     0,   613,     0,   613,   613,
     2218       0,     0,     0,     0,     0,   613,     0,     0,     0,     0,
     2219       0,     0,     0,     0,     0,   855,   358,     0,     0,     0,
     2220       0,   358,     0,     0,     0,     0,     0,     0,     0,     0,
     2221     358,   358,   358,     0,     0,     0,     0,     0,     0,     0,
     2222       0,     0,  1136,     0,     0,     0,     0,   358,     0,     0,
     2223       0,     0,   407,   897,     0,     0,   407,   900,     0,     0,
     2224       0,     0,     0,   902,     0,     0,     0,     0,     0,   376,
     2225       0,     0,   207,   277,     0,   278,     0,     0,     0,     0,
     2226       0,   336,   358,   407,     0,   407,     0,     0,     0,   407,
     2227       0,     0,     0,     0,     0,     0,   279,   525,     0,     0,
     2228       0,     0,   640,  1200,   136,   137,   281,     0,     0,   282,
     2229     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2230       0,   358,   613,     0,   288,     0,     0,     0,     0,     0,
     2231       0,     0,  1213,     0,     0,     0,     0,  1215,   289,     0,
     2232     641,     0,   642,   374,     0,  1219,     0,   291,   375,   293,
     2233     294,   295,   296,     0,     0,   336,   358,     0,     0,     0,
     2234     407,   407,     0,     0,   207,   504,   508,   504,   511,   724,
     2235       0,     0,     0,  1242,     0,   514,   515,     0,     0,     0,
     2236     504,   504,     0,     0,     0,  1250,     0,     0,  1251,     0,
     2237    1252,     0,   504,     0,     0,     0,     0,     0,     0,     0,
     2238       0,   407,     0,     0,  1261,  1262,     0,   756,     0,     0,
     2239     358,     0,     0,     0,     0,     0,   816,   358,     0,     0,
     2240     769,   613,     0,   613,     0,     0,  1275,   756,   504,     0,
     2241       0,     0,     0,   613,     0,     0,     0,     0,     0,     0,
     2242     778,   779,     0,     0,     0,     0,     0,     0,     0,     0,
     2243       0,     0,  1294,     0,     0,     0,     0,     0,     0,     0,
     2244       0,     0,   800,     0,   504,     0,     0,     0,     0,     0,
     2245       0,     0,   809,     0,     0,     0,     0,     0,     0,   340,
     2246       0,     0,     0,     0,   769,     0,     0,     0,     8,     9,
     2247      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2248      20,    21,    22,    23,    24,   816,     0,    25,    26,    27,
     2249       0,     0,     0,   407,     0,    30,     0,     0,   407,     0,
     2250       0,     0,     0,     0,     0,     0,   407,     0,     0,     0,
     2251       0,     0,     0,     0,   875,     0,     0,     0,    33,   613,
     2252     613,   376,  1358,     0,  1359,   203,    38,     0,     0,     0,
     2253       0,     0,     0,     0,     0,  1366,     0,  1367,     0,     0,
     2254       0,     0,     0,   358,     0,     0,     0,     0,     0,   407,
     2255       0,     0,     0,     0,     0,  1374,     0,     0,     0,     0,
     2256       0,   340,   207,     0,     0,     0,     0,   407,  1133,   267,
     2257       0,  1392,     0,     0,     0,     0,     0,   358,     0,  1395,
     2258       0,     0,  1219,   407,  1145,     0,   613,   613,  1150,     0,
     2259       0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
     2260       0,     0,  1416,     0,     0,     0,     0,     0,     0,     0,
     2261       0,  1423,     0,     0,  1425,  1427,     0,   504,   504,   504,
     2262     504,   504,   504,   504,   504,   504,   504,   504,   504,   504,
     2263     504,   504,   504,   504,   504,   769,     0,   972,     0,     0,
     2264       0,     0,     0,   977,     0,     0,     0,     0,     0,  1452,
     2265     986,  1219,     0,     0,     0,     0,     0,   816,   407,  1212,
     2266     504,     0,     0,  1462,     0,     0,     0,     0,     0,     0,
     2267     613,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2268       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2269       0,     0,     0,  1002,  1003,     0,   340,     0,     0,     0,
     2270       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2271       0,   340,   358,     2,   202,     4,     5,     6,     7,     8,
     2272       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2273      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2274      27,     0,     0,     0,     0,   277,    30,   278,     0,     0,
     2275       0,  1033,     0,     0,     0,   376,     0,   504,     0,     0,
     2276       0,     0,     0,     0,     0,     0,     0,     0,   279,    33,
     2277       0,    34,   336,    35,   280,     0,    37,    38,   281,   504,
     2278       0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
     2279       0,   358,   504,     0,     0,     0,   288,     0,     0,     0,
     2280       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2281     289,     0,   338,     0,     0,     0,     0,   768,     0,   291,
     2282     339,   293,   294,   295,   296,     0,     0,     0,     0,   316,
     2283       0,     0,     0,     0,     0,     0,   504,   358,   358,     0,
     2284       0,     0,  1114,  1115,     0,     0,     0,     0,   277,   376,
     2285     278,     0,     0,     0,     0,   977,     0,     0,  1124,     0,
     2286     756,     0,     0,     0,     0,     0,     0,   504,     0,     0,
     2287       0,   279,     0,     0,     0,     0,     0,   280,     0,  1140,
     2288       0,   281,   504,     0,   282,   283,   284,   285,    40,    41,
     2289    1155,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2290       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2291       0,     0,   376,   289,  1173,   373,     0,     0,   374,     0,
     2292       0,     0,   291,   375,   293,   294,   295,   296,     0,  1195,
     2293       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2294       0,     0,     0,     0,     0,     0,     0,     0,  1204,     0,
     2295     358,     0,  -497,     0,     0,     1,     2,     3,     4,     5,
     2296       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2297      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2298       0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
     2299      31,     0,   977,     0,     0,     0,     0,     0,     0,     0,
     2300       0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
     2301       0,   875,    33,     0,    34,     0,    35,    36,     0,    37,
     2302      38,    39,     0,     0,     0,   407,  1253,  1254,    40,    41,
     2303       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
     2304       0,   278,     0,     0,   407,   407,     0,     0,     0,     0,
     2305       0,     0,     0,    42,     0,    43,     0,     0,   504,     0,
     2306       0,     0,   279,    44,   407,     0,     0,     0,   280,     0,
     2307     504,     0,   281,     0,     0,   282,   283,   284,   285,    40,
     2308      41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
     2309     288,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2310       0,     0,     0,   977,   289,     0,   373,     0,     0,   974,
     2311       0,   504,     0,   291,   375,   293,   294,   295,   296,     0,
     2312       0,     1,     2,   202,     4,     5,     6,     7,     8,     9,
     2313      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2314      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2315      28,     0,     0,    29,   277,    30,  1042,  1043,     0,  1044,
     2316       0,     0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
     2317       0,  1053,     0,     0,  1054,    32,     0,   279,    33,   504,
     2318      34,     0,    35,   640,     0,    37,    38,   281,     0,     0,
     2319     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2320       0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
     2321       0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
     2322       0,  1055,   504,     0,   167,     0,     0,     0,   291,   292,
     2323     293,   294,   295,   296,     0,     0,   504,   504,     0,     0,
     2324    1402,     0,  -126,     0,     1,     2,   202,     4,     5,     6,
     2325       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2326      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2327      25,    26,    27,    28,     0,     0,    29,   277,    30,   278,
     2328       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2329       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2330     279,    33,     0,    34,     0,    35,   280,  1454,    37,    38,
     2331     281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
     2332     286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
     2333       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2334       0,     0,   289,     0,  1055,     0,     0,     0,     0,     0,
     2335     316,   291,   292,   293,   294,   295,   296,     0,     0,     0,
     2336       0,     0,     0,     0,     0,  -126,     1,     2,   202,     4,
     2337       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2338      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2339       0,     0,    25,    26,    27,    28,     0,     0,    29,   277,
     2340      30,   278,     8,     9,    10,    11,    12,    13,    14,    15,
     2341      16,    17,    18,    19,    20,    21,    22,    23,    24,  -278,
     2342       0,     0,   279,    33,     0,    34,     0,    35,   280,    30,
     2343      37,    38,   281,     0,     0,   282,   283,   284,   285,    40,
     2344      41,     0,   286,   287,     0,     0,     0,   504,     0,     0,
     2345     288,     0,    33,     0,     0,     0,     0,     0,     0,     0,
     2346       0,     0,     0,  -278,   289,     0,    43,     0,     0,     0,
     2347       0,     0,     0,   291,   292,   293,   294,   295,   296,     0,
     2348       0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
     2349      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2350      20,    21,    22,    23,    24,   504,   504,    25,    26,    27,
     2351       0,     0,     0,     0,   277,    30,   278,     8,     9,    10,
     2352      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2353      21,    22,    23,    24,  -279,     0,     0,   279,    33,     0,
     2354      34,     0,    35,   280,    30,    37,    38,   281,     0,     0,
     2355     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2356       0,     0,     0,     0,     0,   288,     0,    33,     0,     0,
     2357       0,     0,     0,     0,     0,     0,     0,     0,  -279,   289,
     2358       0,   916,     0,     0,     0,     0,   768,     0,   291,   339,
     2359     293,   294,   295,   296,     2,   202,     4,     5,     6,     7,
     2360       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2361      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2362      26,    27,     0,     0,     0,     0,   277,    30,   278,     8,
     2363       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2364      19,    20,    21,    22,    23,    24,     0,     0,     0,   279,
     2365      33,     0,    34,     0,    35,   280,    30,    37,    38,   281,
     2366       0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
     2367     287,     0,     0,     0,     0,     0,     0,   288,     0,    33,
     2368       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2369       0,   289,     0,   916,     0,     0,     0,     0,   768,     0,
     2370     291,   591,   293,   294,   295,   296,     2,   202,     4,     5,
     2371       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2372      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2373       0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
     2374     278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2375       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2376       0,   279,    33,     0,    34,     0,    35,   280,     0,    37,
     2377      38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
     2378       0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2379       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2380       0,     0,     0,   289,     0,   338,     0,     0,     0,     0,
     2381       0,     0,   291,   339,   293,   294,   295,   296,     2,   202,
    21222382       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    21232383      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2124       24,    84,     0,    25,    26,    27,     0,     0,     0,     0,
    2125        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2126        0,     0,     0,     0,     0,   345,     0,     0,     0,     0,
    2127        0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
    2128        0,   198,   199,    39,     0,     0,     0,   338,     0,     0,
    2129       40,    41,     0,   122,     0,     0,     0,     0,   122,   122,
    2130        0,     0,     0,     0,   122,     0,     0,     0,     0,   330,
    2131        0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
    2132      576,     0,   584,     0,     0,   201,     0,     0,     0,   345,
    2133        0,     0,    77,   609,   610,     0,     0,     0,     0,    77,
    2134        0,     0,     0,     0,     0,     0,     0,   620,     0,   456,
    2135        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
     2384      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2385     277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
     2386       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2387       0,     0,     0,   279,    33,     0,    34,     0,    35,   280,
     2388       0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
     2389      40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
     2390       0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
     2391       0,     0,     0,     0,     0,   289,     0,   916,     0,     0,
     2392       0,     0,     0,     0,   291,   339,   293,   294,   295,   296,
     2393       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    21362394      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    21372395      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2138       54,     0,    77,    30,     0,     0,     0,   345,   345,     0,
    2139      345,   345,   345,     0,     0,     0,     0,     0,     0,     0,
    2140        0,     0,     0,     0,   330,     0,    33,   663,    34,     0,
    2141       35,    84,     0,    37,    38,     0,     2,   197,     4,     5,
    2142        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2143       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2144        0,    25,    26,    27,   345,   345,     0,     0,   271,    30,
    2145      272,     0,    -3,     0,    54,   345,     0,     0,     0,     0,
    2146        0,     0,     0,     0,     0,     0,     0,     0,   330,     0,
    2147        0,   273,    33,     0,    34,     0,    35,   274,     0,    37,
    2148       38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2149        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2150        0,     0,     0,     0,     0,     0,     0,   757,     0,     0,
    2151        0,     0,     0,   283,   345,   325,    -3,     0,     0,     0,
    2152      345,   345,   285,   326,   287,   288,   289,   290,     0,   330,
    2153      330,   330,     8,     9,    10,    11,    12,    13,    14,    15,
    2154       16,    17,    18,    19,    20,    21,    22,    23,    24,  -280,
    2155       54,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    2156        0,     0,   216,     0,     0,     0,     0,   803,  1017,     0,
    2157        0,     8,     9,    10,    11,    12,     0,     0,     0,   345,
    2158        0,     0,    33,    84,     0,     0,     0,     0,     0,     0,
    2159        0,     0,     0,  -280,   330,     0,     0,   271,    30,   272,
    2160        0,     0,   345,     0,   345,     0,     0,     0,     0,     0,
    2161        0,     0,     0,     0,     0,     0,     0,     0,   864,     0,
    2162      273,    33,     0,     0,     0,     0,   274,     0,     0,     0,
    2163      275,   345,     0,   276,   277,   278,   279,    40,    41,     0,
    2164      280,   281,   345,   345,   345,     0,   893,     0,   282,     0,
    2165        0,     0,     0,     0,   345,   345,     0,     0,     0,   330,
    2166      330,     0,   283,     0,   361,   909,   910,     0,    84,   914,
    2167        0,   285,   892,   287,   288,   289,   290,     0,     0,     0,
     2396       0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
    21682397       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2169        0,     0,   345,   122,     0,     0,     0,   934,     0,   935,
    2170       54,    54,     0,     0,     0,     0,   938,   939,     0,     0,
    2171        0,   944,     0,     0,     0,     0,     0,     0,   330,     0,
    2172        0,     0,    54,   949,     0,     0,     0,     0,   953,     0,
    2173        0,     0,     0,     0,   271,     0,   272,     0,     0,     0,
    2174        0,     0,   970,     0,     0,     0,     0,    54,     0,     0,
    2175        0,     0,   981,     0,     0,     0,     0,   273,     0,     0,
    2176        0,     0,     0,   274,     0,     0,     0,   275,     0,     0,
    2177      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2178      345,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2179        0,     0,     0,   330,   330,     0,     0,     0,     0,   283,
    2180     1003,   361,    54,     0,     0,     0,     0,    54,   285,   363,
    2181      287,   288,   289,   290,   203,     0,     0,     0,     0,  1018,
    2182        0,     0,  1213,     0,   222,    84,   226,   122,   228,     0,
    2183        0,     0,    84,     0,     0,   236,     0,     0,     0,     0,
    2184        0,  1170,    54,     0,     8,     9,    10,    11,    12,     0,
    2185        0,     0,  1029,     0,  1030,  1031,  1032,     0,     0,  1035,
    2186      864,     0,     0,     0,   203,     0,   226,   228,   236,     0,
    2187      271,    30,   272,     0,  1077,    84,     0,     0,     0,     0,
    2188        0,     0,     0,     0,     0,     0,   576,     0,     0,  1084,
    2189        0,   203,     0,   273,    33,  1085,     0,     0,     0,   274,
    2190        0,     0,     0,   275,     0,   203,   276,   277,   278,   279,
    2191       40,    41,     0,   280,   281,     0,     0,     0,     0,   330,
    2192        0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
    2193        0,     0,     0,     0,  1104,   283,     0,   361,     0,     0,
    2194        0,     0,     0,    54,   285,  1171,   287,   288,   289,   290,
    2195        0,     0,     0,     0,     0,     0,     0,     0,     0,   757,
    2196        0,     0,     0,   203,    54,   226,   228,   236,     0,     0,
    2197        0,    54,  1130,     0,     0,     0,     0,   864,     0,     0,
    2198     1138,     0,     0,     0,  1142,     0,     0,     0,     0,  1146,
    2199        0,     0,     0,  1151,  1152,  1153,     0,     0,     0,     0,
    2200      203,     0,     0,  1159,   203,     0,     0,     0,     0,     0,
    2201        0,     0,     0,  1172,    54,     0,     0,     0,     0,     0,
    2202      486,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2203        0,     0,  1188,  1189,     8,     9,    10,    11,    12,    13,
    2204       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2205       24,     0,     0,    25,    26,    27,     0,  1218,     0,     0,
    2206     1220,    30,   435,     0,     0,     0,     0,     0,   203,     0,
     2398       0,     0,     0,     0,     0,   279,    33,     0,    34,     0,
     2399      35,   280,     0,   203,    38,   281,     0,     0,   282,   283,
     2400     284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
     2401       0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
     2402       0,     0,     0,     0,     0,     0,     0,   289,     0,  1000,
     2403       0,     0,     0,     0,     0,     0,   291,  1001,   293,   294,
     2404     295,   296,     2,   202,     4,     5,     6,     7,     8,     9,
     2405      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2406      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2407       0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    22072408       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2208        0,     0,     0,   203,    33,  1234,     0,     0,   226,   228,
    2209        0,    37,    38,     0,     0,     0,   236,     0,     0,     0,
    2210        0,     0,   150,     0,  1241,     0,     0,     0,     0,     0,
    2211     1245,  1246,     0,     0,     0,     0,     0,     0,     0,  1254,
    2212        0,     0,     0,     0,     0,  1258,     0,   436,  1262,     0,
    2213     1263,   689,     0,  1265,     0,   108,     0,     0,   203,     0,
    2214        0,     0,     0,     0,   864,     0,     0,   241,  1274,     0,
    2215        0,     0,     0,     0,     0,     0,   203,   246,     0,     0,
    2216        0,     0,   203,     0,   271,  1283,   272,  1285,  1286,  1287,
    2217     1288,     0,     0,     0,     0,     0,     0,     0,     0,   203,
    2218        0,     0,   203,   203,  1296,     0,  1297,   273,     0,     0,
    2219      165,     0,     0,   625,     0,   135,     0,   275,     0,   203,
    2220      276,   277,   278,   279,    40,    41,     0,   280,   281,  1317,
    2221      353,     0,     0,   203,     0,   282,     0,     0,  1322,  1323,
    2222      203,     0,     0,   367,     0,     0,     0,     0,     0,   283,
    2223        0,   626,     0,   627,   362,     0,     0,     0,   285,   363,
    2224      287,   288,   289,   290,     0,   399,     0,     0,     0,     0,
    2225        0,     0,     0,     0,     0,     0,     0,     0,     0,   413,
    2226        0,     0,     0,     0,     0,     0,     0,   418,     0,  1357,
    2227     1358,     0,     0,     0,     0,  1362,  1363,   426,     0,     0,
    2228        0,     0,     0,     0,     0,     0,  1373,     0,     0,   434,
     2409       0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
     2410      34,     0,    35,   280,     0,   203,    38,   281,     0,     0,
     2411     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2412       0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
     2413       0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
     2414       0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
     2415     293,   294,   295,   296,     1,     2,     3,     4,     5,     6,
     2416       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2417      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2418      25,    26,    27,    28,     0,     0,    29,     0,    30,    31,
    22292419       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2230        0,   453,     0,     0,     0,     0,   463,     0,     0,     0,
    2231        0,     0,     0,     0,     0,     0,     0,     0,     0,   471,
    2232        0,     0,     0,     0,     0,   481,     0,   485,     0,   203,
    2233        0,     0,     0,     0,     0,     0,     0,  1404,     0,     0,
    2234        0,     0,     0,   513,     0,     0,     0,     0,     0,  1408,
    2235        0,     0,     0,  1411,  1412,  1413,     0,     0,     0,   203,
    2236        0,     0,     0,     0,   203,  1417,     0,     0,     0,     0,
    2237        0,   271,     0,   272,  1428,     0,     0,     0,     0,     0,
    2238        0,     0,     0,     0,   573,     0,     0,     0,     0,     0,
    2239     1439,     0,     0,     0,   273,     0,     0,     0,     0,     0,
    2240      274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
    2241      279,    40,    41,   621,   280,   281,     0,   622,   623,     0,
    2242      624,     0,   282,     0,     0,     0,   634,   635,     0,   636,
    2243      637,     0,   638,     0,   639,     0,   283,     0,   361,     0,
    2244        0,   362,  1480,  1481,     0,   285,   363,   287,   288,   289,
    2245      290,   652,     0,   203,     0,  1486,     0,     0,     0,   654,
    2246        0,   271,  1486,   272,  1048,     0,  1049,   203,     0,  1050,
    2247     1051,  1052,  1053,  1054,  1055,  1056,  1057,  1532,  1058,     0,
    2248        0,  1059,    32,   667,   273,     0,     0,   486,     0,  1516,
    2249      625,     0,     0,     0,   275,   675,     0,   276,   277,   278,
    2250      279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
    2251        0,     0,   282,     0,     0,     0,     0,  1539,   711,     0,
    2252        0,     0,     0,     0,   714,     0,   283,     0,   361,   453,
    2253        0,   164,     0,     0,     0,   285,   363,   287,   288,   289,
    2254      290,     0,  1552,     0,     0,   203,     0,  1554,     0,  -126,
    2255        0,     0,     0,     0,     0,   203,     0,     0,     0,     0,
    2256        0,     0,     0,     0,     0,   748,     0,     0,     0,     0,
    2257        0,     0,     0,     0,     0,     0,     0,   203,     0,     0,
    2258      764,     0,     0,  -501,     0,     0,     1,     2,     3,     4,
     2420       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
     2421       0,    33,     0,    34,     0,    35,    36,     0,    37,    38,
     2422      39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
     2423       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2424       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2425       0,     0,    42,     0,    43,     0,     0,     0,  -501,     0,
     2426       0,     0,    44,     1,     2,     3,     4,     5,     6,     7,
     2427       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2428      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2429      26,    27,    28,     0,     0,    29,     0,    30,    31,     0,
     2430       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2431       0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
     2432      33,     0,    34,     0,    35,    36,     0,    37,    38,    39,
     2433       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
     2434       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2435       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2436       0,    42,     0,    43,     0,     0,     0,     0,     0,     0,
     2437       0,    44,     1,     2,   202,     4,     5,     6,     7,     8,
     2438       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2439      19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
     2440      27,    28,     0,     0,    29,     0,    30,     0,     0,     0,
     2441       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2442       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2443       0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
     2444    -278,   201,     2,   202,     4,     5,     6,     7,     8,     9,
     2445      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2446      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2447       0,     0,    43,     0,     0,    30,     0,     0,     0,     0,
     2448     109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2449       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2450      34,     0,    35,     0,     0,   203,    38,     2,   202,     4,
    22592451       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    22602452      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2261        0,     0,    25,    26,    27,    28,   790,     0,    29,     0,
    2262       30,    31,     0,     0,     0,   800,     0,   801,     0,     0,
    2263        0,     0,     0,   806,     0,     0,     0,     0,     0,   271,
    2264       32,   272,     0,    33,     0,    34,   825,    35,    36,     0,
    2265       37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2266       41,     0,   273,     0,     0,     0,     0,     0,   274,     0,
    2267        0,   203,   275,     0,     0,   276,   277,   278,   279,    40,
    2268       41,     0,   280,   281,    42,   866,    43,     0,     0,     0,
    2269      282,     0,     0,     0,    44,   346,     0,   203,     0,     0,
    2270        0,     0,     0,     0,   283,     0,   361,     0,     0,     0,
    2271        0,     0,   787,   285,   363,   287,   288,   289,   290,     0,
    2272        0,   901,     0,   203,     0,     0,   395,     0,     0,     0,
    2273        0,     0,     0,   395,     0,     8,     9,    10,    11,    12,
    2274       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2275       23,    24,  -279,   203,    25,    26,    27,     0,     0,     0,
    2276        0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    2277      203,     0,     0,     0,     0,     0,     0,     0,     0,   241,
    2278        0,     0,     0,     0,     0,    33,     0,     0,     0,   950,
    2279      951,     0,    37,    38,     0,     0,  -279,     0,     0,     0,
    2280        0,   965,     0,   395,     0,     0,     0,     0,   271,     0,
    2281      272,     0,     0,     0,     0,     0,     0,     0,   982,     0,
    2282      983,     0,     0,     0,   987,     0,  1028,     0,   568,     0,
    2283        0,   273,     0,     0,     0,     0,   108,   274,     0,   203,
    2284        0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2285        0,   280,   281,     0,     0,     0,   203,   395,     0,   282,
    2286        0,     0,     0,     0,     0,   395,   569,     0,   395,   572,
    2287        0,   346,     0,   283,     0,   361,   599,     0,     0,     0,
    2288      756,     0,   285,   363,   287,   288,   289,   290,     0,  1023,
    2289        0,     0,     0,     0,     0,   617,  1024,     0,   346,     0,
    2290        0,     0,     0,     0,     0,     0,     0,     0,     0,  1026,
    2291        0,  1027,     0,     0,     0,     0,   271,     0,   272,     0,
    2292        0,     0,     0,     0,   395,     0,  1040,     0,   395,     0,
    2293        0,     0,  1044,     0,     0,     0,     0,     0,     0,   273,
    2294        0,     0,     0,     0,  1080,   274,     0,  1081,   203,   275,
    2295        0,     0,   276,   277,   278,   279,    40,    41,   346,   280,
    2296      281,     0,     0,     0,     0,     0,   790,   282,     0,     0,
    2297        0,     0,  1091,     0,     0,     0,     0,     0,     0,     0,
    2298      310,   283,   395,   361,     0,     0,   973,     0,     0,   328,
    2299      285,   363,   287,   288,   289,   290,     0,     0,     0,     0,
    2300        0,   364,     0,     0,     0,     0,     0,     0,     0,     0,
    2301        0,     0,     0,   395,     0,     0,   346,     0,     0,     0,
    2302        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2303       18,    19,    20,    21,    22,    23,    24,  -279,     0,    25,
    2304       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2305      203,     0,     0,     0,     0,   395,     0,  1150,   346,     0,
    2306        0,     0,     0,  1156,  1157,     0,     0,     0,     0,     0,
    2307       33,     0,     0,     0,     0,    36,     0,   809,    38,    39,
    2308        0,  -279,     0,     0,     0,     0,    40,    41,     0,     0,
    2309        0,     0,     0,   467,     0,     0,     0,     0,     0,     0,
    2310        0,     0,   395,   395,     0,     0,     0,     0,     0,     0,
    2311        0,  1028,     0,   568,     0,     0,     0,     0,   346,  1215,
    2312      346,   611,     0,     0,     0,  1219,     0,     0,   812,     0,
    2313        0,   599,     0,   599,   599,     0,     0,     0,     0,     0,
    2314      599,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2315      844,   346,     0,     0,     0,     0,   346,     0,     0,     0,
    2316     1238,     0,     0,     0,     0,  1240,   346,   346,     0,     0,
    2317        0,     0,     0,  1244,     0,     0,     0,     0,     0,     0,
    2318        0,   346,     0,     0,     0,     0,   395,   887,     0,     0,
    2319      395,   890,   328,     0,     0,     0,     0,     0,     0,     0,
    2320        0,   364,  1267,     0,     0,     0,     0,     0,     0,     0,
    2321        0,     0,     0,     0,     0,   395,     0,     0,     0,  1278,
    2322      346,   395,  1279,   395,  1280,     0,     0,   395,     0,     0,
     2453       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2454      30,   204,     0,     0,     0,     0,     0,     0,     0,   267,
    23232455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2324        0,  1290,  1291,     0,     0,     0,     0,     0,     0,     0,
    2325        0,   310,     0,     0,     0,     0,     0,     0,     0,   346,
    2326      599,     0,  1304,     0,     0,     0,     0,     0,     0,     0,
    2327        0,     0,   310,   310,     0,     0,     0,     0,     0,     0,
    2328        0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
    2329        0,     0,     0,   346,  1328,     0,     0,   395,   395,     0,
    2330        0,     0,   713,     0,     0,     0,     0,     0,     8,     9,
    2331       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2332       20,    21,    22,    23,    24,  -279,     0,    25,    26,    27,
    2333        0,     0,     0,     0,     0,    30,     0,     0,     0,   395,
    2334      745,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2335        0,   346,   758,     0,     0,     0,     0,     0,    33,   745,
    2336      599,     0,   599,    36,     0,   809,    38,    39,     0,  -279,
    2337        0,   599,   767,   768,    40,    41,     8,     9,    10,    11,
    2338       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2339       22,    23,    24,  1398,   789,  1399,     0,     0,     0,     0,
    2340        0,   568,   812,    30,   798,     0,  1406,     0,  1407,   108,
    2341        0,     0,   758,     0,     0,     0,     0,     0,     0,     0,
    2342        0,     0,     0,     0,     0,     0,    33,     0,  1416,     0,
     2456       0,     0,     0,    33,     0,    34,     0,    35,    36,     0,
     2457     203,    38,    39,     0,     0,     0,     0,     0,     0,    40,
     2458      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23432459       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2344        0,     0,     0,     0,  1434,     0,   346,     0,     0,     0,
    2345        0,     0,   395,   395,     0,     0,  1440,     0,     0,  1244,
    2346      395,     0,     0,   865,     0,   395,     0,     0,     0,     0,
    2347      364,     0,     0,   395,     0,     0,     0,     0,     0,     0,
    2348        0,  1461,     0,     0,     0,     0,   599,   599,     0,     0,
    2349     1468,   328,     0,  1470,  1472,     0,     0,     0,     0,     0,
     2460       0,     0,     0,     0,    42,     0,   204,     0,     0,     0,
     2461       0,     0,     0,     0,   205,     2,   202,     4,     5,     6,
     2462       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2463      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2464      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    23502465       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2351      346,     0,     0,     0,   328,     0,     0,   395,     0,     0,
    2352        0,     0,     0,     0,   812,     0,     0,     0,     0,     0,
    2353        0,  1499,     0,     0,     0,  1244,   395,  1145,     0,     0,
    2354        0,     0,  1148,     0,   346,     0,     0,  1511,     0,     0,
    2355        0,     0,     0,     0,     0,   395,  1162,     0,   599,   599,
    2356     1167,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2357        0,   346,   346,   346,     0,     0,     0,     0,     0,     0,
    2358        0,     0,     0,     0,     0,     0,     0,   758,     0,   971,
    2359        0,     0,     0,     0,     0,   976,     0,     0,     0,     0,
    2360        0,     0,     0,   986,     0,     8,     9,    10,    11,    12,
    2361       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2362       23,    24,  -279,     0,    25,    26,    27,     0,  1227,     0,
    2363        0,     0,    30,   395,     0,     0,   346,   812,   395,  1237,
    2364      328,     0,     0,  1000,  1001,   328,     0,     0,     0,     0,
    2365      599,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2366        0,     0,    37,    38,   328,     0,  -279,     0,     0,     0,
    2367        0,     0,   812,     0,     0,     0,     0,   493,   497,   493,
    2368      500,     0,     0,     0,     0,     0,     0,   503,   504,     0,
    2369        0,     0,   493,   493,     0,   346,  1028,     0,   568,     0,
    2370     1148,   346,   346,     0,   493,  1038,   611,     0,     0,   364,
    2371        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
    2372       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2373       23,    24,  -279,   493,    25,    26,    27,     0,     0,     0,
    2374      328,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    23752466       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2376      346,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2377      493,     0,    37,    38,  1148,     0,  -279,     0,     0,     0,
    2378        0,     0,     0,     0,     0,   346,     0,     0,     0,     0,
    2379        0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
    2380        0,     0,     0,     0,  1125,  1126,     0,     0,   568,     0,
    2381        0,   271,   364,   272,     0,     0,   108,     0,     0,   976,
    2382        0,     0,  1136,     0,   745,     0,     0,     0,     0,     0,
    2383        0,     0,     0,     0,   273,   346,   346,     0,     0,     0,
    2384      274,  1154,     0,     0,   275,     0,     0,   276,   277,   278,
    2385      279,    40,    41,     0,   280,   281,     0,     0,  1173,     0,
    2386        0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
    2387        0,     0,  1148,     0,     0,     0,   283,     0,   361,     0,
    2388        0,   364,     0,  1192,     0,   285,   363,   287,   288,   289,
    2389      290,     0,     0,     0,     0,     0,     0,     0,  1214,     0,
    2390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2391        0,     0,     0,     0,     0,     0,     0,  1223,     0,     0,
    2392        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2393      758,     0,     0,     0,   812,     0,     0,     0,     0,     0,
    2394        0,     0,     0,   493,   493,   493,   493,   493,   493,   493,
    2395      493,   493,   493,   493,   493,   493,   493,   493,   493,   493,
    2396      493,   346,     0,     0,     0,     0,     0,     0,   976,     0,
    2397        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2398        0,     0,   493,     0,     0,     0,     0,     0,     0,   865,
    2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2400        0,     0,     0,     0,     0,     0,     0,  1281,     0,  1282,
    2401        0,     0,     0,     0,     0,     0,     1,     2,     3,     4,
    2402        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2403       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2404        0,   395,    25,    26,    27,    28,     0,     0,    29,     0,
    2405       30,    31,     0,     0,   758,     0,     0,     0,     0,     0,
    2406        0,     0,   395,   395,     0,     0,     0,     0,     0,   310,
    2407       32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2408       37,    38,    39,   395,   493,     0,     0,     0,     0,    40,
    2409       41,     0,   976,     0,     0,     0,     0,     0,     0,     0,
    2410        0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
    2411        0,     0,     0,     0,    42,     0,    43,     0,     0,   493,
    2412     -505,     0,     0,     0,    44,     0,     0,     0,     0,     0,
    2413        0,     1,     2,   197,     4,     5,     6,     7,     8,     9,
     2467       0,    33,     0,    34,     0,    35,     0,     0,    37,    38,
     2468       0,     0,     2,   202,     4,     5,     6,     7,     8,     9,
    24142469      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    24152470      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2416       28,     0,   493,    29,   271,    30,  1047,  1048,     0,  1049,
    2417        0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2418        0,  1058,     0,     0,  1059,    32,     0,   273,    33,     0,
    2419       34,     0,    35,   625,   493,    37,    38,   275,     0,     0,
    2420      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2421        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2423        0,  1060,     0,     0,   164,     0,     0,     0,   285,   286,
    2424      287,   288,   289,   290,  1447,     0,     0,     0,     0,     0,
    2425        0,     0,  -126,     0,     0,     0,     0,     0,     1,     2,
    2426      197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2427       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2428       23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2429       29,   271,    30,   272,     0,     0,     0,     0,     0,   493,
     2471       0,     0,     0,  -383,   676,    30,     0,     0,     0,     0,
     2472       0,     0,   625,     0,     0,     0,     0,     0,     0,     0,
     2473       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2474      34,     0,    35,     0,     0,    37,    38,     0,     0,     0,
    24302475       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2431      271,     0,   272,     0,   273,    33,     0,    34,  1503,    35,
    2432      274,     0,    37,    38,   275,     0,     0,   276,   277,   278,
    2433      279,    40,    41,   273,   280,   281,     0,     0,     0,   274,
    2434        0,     0,   282,   275,     0,     0,   276,   277,   278,   279,
    2435       40,    41,     0,   280,   281,     0,   283,     0,  1060,     0,
    2436        0,   282,     0,     0,   310,   285,   286,   287,   288,   289,
    2437      290,     0,     0,     0,     0,   283,     0,   361,     0,  -126,
    2438        0,     0,     0,     0,   285,   712,   287,   288,   289,   290,
    2439        0,     0,     0,     0,     0,     0,   493,     0,     0,     0,
    2440        0,     0,     0,     0,     0,     0,   493,     1,     2,   197,
    2441        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2442       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2443       24,     0,     0,    25,    26,    27,    28,     0,     0,    29,
    2444      271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
    2445        0,     0,     0,     0,   493,     0,     0,     0,     0,   271,
    2446        0,   272,     0,   273,    33,     0,    34,     0,    35,   274,
    2447        0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
    2448       40,    41,   273,   280,   281,     0,     0,     0,   625,     0,
    2449        0,   282,   275,     0,     0,   276,   277,   278,   279,    40,
    2450       41,     0,   280,   281,     0,   283,     0,    43,     0,     0,
    2451      282,     0,     0,     0,   285,   286,   287,   288,   289,   290,
    2452        0,     0,     0,     0,   283,     0,   761,     0,   493,     0,
    2453        0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
    2454        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
     2476       0,     0,     0,     0,     0,     0,     0,  1334,     0,     0,
     2477       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2478       0,   676,     0,     0,     0,     0,     0,     0,     0,   625,
     2479       2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    24552480      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    24562481      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2457        0,     0,   271,    30,   272,     0,     0,     0,   493,     0,
     2482       0,     0,     0,    30,     8,     9,    10,    11,    12,    13,
     2483      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2484      24,     0,     0,    25,    26,    27,    33,     0,    34,     0,
     2485      35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
    24582486       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2459        0,     0,     0,   493,   493,   273,    33,     0,    34,     0,
    2460       35,   274,     0,    37,    38,   275,     0,     0,   276,   277,
    2461      278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    2462        0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,   283,     0,   325,
    2464       -3,     0,     0,     0,   756,     0,   285,   326,   287,   288,
    2465      289,   290,     2,   197,     4,     5,     6,     7,     8,     9,
    2466       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2467       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2468        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    2469        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2470        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2471       34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
    2472      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2473        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2475        0,   913,    -3,     0,     0,     0,   756,     0,   285,   326,
    2476      287,   288,   289,   290,     0,     2,   197,     4,     5,     6,
    2477        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2478       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2479       25,    26,    27,     0,     0,     0,     0,   271,    30,   272,
    2480        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2481        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2482      273,    33,     0,    34,     0,    35,   274,   493,    37,    38,
    2483      275,     0,     0,   276,   277,   278,   279,    40,    41,     0,
    2484      280,   281,     0,     0,     0,     0,     0,     0,   282,     0,
    2485        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2486        0,     0,   283,     0,   913,    -3,     0,     0,     0,   756,
    2487        0,   285,   575,   287,   288,   289,   290,     0,     0,     0,
    2488        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2489      493,   493,     2,   197,     4,     5,     6,     7,     8,     9,
    2490       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2491       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2492        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    2493        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2494        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2495       34,     0,    35,   274,     0,    37,    38,   275,     0,     0,
    2496      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2497        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2498        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2499        0,   913,    -3,     0,     0,     0,     0,     0,   285,   326,
    2500      287,   288,   289,   290,     2,   197,     4,     5,     6,     7,
    2501        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2502       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2503       26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
    2504        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
    2506       33,     0,    34,     0,    35,   274,     0,   198,   199,   275,
    2507        0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
    2508      281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
    2509        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2510        0,   283,     0,   998,     0,     0,     0,     0,     0,     0,
    2511      285,   999,   287,   288,   289,   290,     2,   197,     4,     5,
    2512        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2513       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2514        0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
    2515      272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2517        0,   273,    33,     0,    34,     0,    35,   274,     0,   198,
    2518      199,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2519        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2520        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2521        0,     0,     0,   283,     0,   361,     0,     0,     0,     0,
    2522        0,     0,   285,   363,   287,   288,   289,   290,     1,     2,
    2523        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2524       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2525       23,    24,     0,     0,    25,    26,    27,    28,     0,     0,
    2526       29,     0,    30,    31,     0,     0,     0,     0,     0,     0,
    2527        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2528        0,     0,    32,     0,     0,    33,     0,    34,     0,    35,
    2529       36,     0,    37,    38,    39,     0,     0,     0,     0,     0,
    2530        0,    40,    41,     0,     0,     0,     0,     0,     0,     0,
    2531        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,    42,     0,    43,     0,
    2533        0,     0,     0,     0,     0,     0,    44,   196,     2,   197,
     2487       0,     0,     0,     0,    33,  1336,     0,     0,     0,   108,
     2488       0,    37,    38,     0,     0,     0,     0,     0,     0,   676,
     2489       0,     0,     0,     0,     0,     0,     0,   625,     2,   202,
    25342490       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25352491      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    25372493       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    25382494       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2539        0,     0,     0,     0,    33,     0,    34,     0,    35,    36,
    2540        0,   198,   199,    39,     0,     0,     0,     0,     0,     0,
    2541       40,    41,     0,     0,     0,     0,     0,     0,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,    42,     0,   200,     0,     0,
    2544        0,     0,     0,     0,     0,   201,     1,     2,   197,     4,
    2545        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2546       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2547     -279,     0,    25,    26,    27,    28,     0,     0,    29,     0,
    2548       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2549        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2550        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2551       37,    38,     0,     0,  -279,     1,     2,   197,     4,     5,
    2552        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2553       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2554        0,    25,    26,    27,    28,     0,    43,    29,     0,    30,
    2555        0,     0,     0,     0,   108,     0,     0,     0,     0,     0,
    2556        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2557        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2558       38,     0,   196,     2,   197,     4,     5,     6,     7,     8,
     2495       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
     2496       0,   203,    38,     2,   202,     4,     5,     6,     7,     8,
    25592497       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    25602498      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2561       27,     0,     0,     0,     0,    43,    30,     0,     0,     0,
    2562        0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
     2499      27,     0,     0,     0,     0,     0,    30,   266,     0,     0,
     2500       0,     0,     0,     0,     0,   620,     0,     0,     0,     0,
    25632501       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2564        0,    34,     0,    35,     0,     0,   198,   199,     2,   197,
     2502       0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
    25652503       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25662504      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    25672505      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2568        0,    30,   200,     0,     0,     0,     0,     0,     0,     0,
    2569      261,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2506       0,    30,   676,     0,     0,     0,     0,     0,     0,     0,
     2507     625,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25702508       0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2571        0,    37,    38,     2,   197,     4,     5,     6,     7,     8,
     2509       0,    37,    38,     2,   202,     4,     5,     6,     7,     8,
    25722510       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    25732511      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2574       27,     0,     0,     0,     0,     0,    30,   662,    -3,     0,
    2575        0,     0,     0,     0,     0,   611,     0,     0,     0,     0,
     2512      27,     0,     0,     0,     0,     0,    30,   590,     0,     0,
     2513       0,     0,     0,     0,     0,   625,     0,     0,     0,     0,
    25762514       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2577        0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2578        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
     2515       0,    34,     0,    35,     0,     0,   203,    38,     8,     9,
     2516      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2517      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2518       0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
     2519       0,     0,   204,     0,     0,     0,     0,     0,     0,     0,
     2520     267,     0,     0,     0,     0,     0,     0,   279,    33,     0,
     2521       0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
     2522     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2523       0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
     2524       0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
     2525       0,   590,    -3,     0,     0,     0,     0,     0,   291,   591,
     2526     293,   294,   295,   296,     8,     9,    10,    11,    12,    13,
     2527      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2528      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2529     277,    30,   278,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2531       0,     0,     0,   279,    33,     0,     0,     0,     0,   640,
     2532       0,    37,    38,   281,     0,     0,   282,   283,   284,   285,
     2533      40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
     2534       0,   288,     0,     0,     0,     0,     0,     0,     0,     0,
     2535       0,     0,     0,     0,     0,   289,   -35,   753,     0,     0,
     2536       0,     0,     0,     0,   291,   292,   293,   294,   295,   296,
     2537       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2538      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2539      26,    27,     0,     0,     0,     0,   277,    30,   278,     0,
     2540       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2541       0,     0,     0,     0,     0,     0,     0,     0,     0,   279,
     2542      33,     0,     0,     0,     0,   280,     0,    37,    38,   281,
     2543       0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
     2544     287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
     2545       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2546       0,   289,     0,   290,     0,     0,     0,     0,     0,     0,
     2547     291,   292,   293,   294,   295,   296,     8,     9,    10,    11,
    25792548      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    25802549      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2581        0,  -389,   662,    30,     0,     0,     0,     0,     0,     0,
    2582      611,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2583        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2584       35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
     2550       0,     0,   277,    30,   278,     0,     0,     0,     0,     0,
    25852551       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,     0,     0,  1370,     0,     0,     0,     0,
    2587        0,     0,     0,     0,     0,     0,     0,     0,     0,   662,
    2588        0,     0,     0,     0,     0,     0,     0,   611,     2,   197,
    2589        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2590       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2591       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2592        0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
     2552       0,     0,     0,     0,     0,   279,    33,     0,     0,     0,
     2553       0,   280,     0,    37,    38,   281,     0,     0,   282,   283,
     2554     284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
     2555       0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
     2556       0,     0,     0,     0,     0,     0,     0,   289,     0,   154,
     2557       0,     0,     0,     0,     0,     0,   291,   292,   293,   294,
     2558     295,   296,     8,     9,    10,    11,    12,    13,    14,    15,
    25932559      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2594        0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
    2595        0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
     2560       0,    25,    26,    27,     0,     0,     0,     0,   277,    30,
     2561     278,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25962562       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2597        0,     0,    33,  1372,     0,     0,     0,   107,     0,    37,
    2598       38,     0,     0,     0,     0,     0,     0,   662,     0,     0,
    2599        0,     0,     0,     0,     0,   611,     2,   197,     4,     5,
    2600        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2601       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2602        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2563       0,   279,    33,     0,     0,     0,     0,   280,     0,    37,
     2564      38,   281,     0,     0,   282,   283,   284,   285,    40,    41,
     2565       0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
    26032566       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2567       0,     0,     0,   289,     0,   590,     0,     0,     0,     0,
     2568       0,     0,   291,   591,   293,   294,   295,   296,     8,     9,
     2569      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2570      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2571       0,     0,     0,     0,   277,    30,   278,     0,     0,     0,
    26042572       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2605        0,     0,    33,     0,    34,     0,    35,     0,     0,   198,
    2606      199,     2,   197,     4,     5,     6,     7,     8,     9,    10,
     2573       0,     0,     0,     0,     0,     0,     0,   279,    33,     0,
     2574       0,     0,     0,   280,     0,    37,    38,   281,     0,     0,
     2575     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2576       0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
     2577       0,     0,     0,     0,     0,     0,     0,     0,     0,   289,
     2578       0,   373,     0,     0,     0,     0,     0,     0,   291,   375,
     2579     293,   294,   295,   296,   467,     2,   202,     4,     5,     6,
     2580       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2581      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2582      25,    26,    27,     0,     0,     0,     0,     0,    30,     8,
     2583       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2584      19,    20,    21,    22,    23,    24,  -278,     0,    25,    26,
     2585      27,    33,     0,    34,     0,    35,    30,     0,    37,    38,
     2586       0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
     2587      16,    17,    18,    19,    20,    21,    22,    23,    24,    33,
     2588       0,    25,    26,    27,    36,     0,   331,   332,    39,    30,
     2589    -278,     0,     0,     0,     0,    40,    41,    -3,     0,     0,
     2590       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2591       0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
     2592      38,    39,   333,     0,     0,     0,     0,     0,    40,    41,
     2593     109,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2594      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2595      25,    26,    27,    42,     0,   154,     0,     0,    30,     0,
     2596       0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
     2597       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2598       0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
     2599      39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
     2600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2601      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2602      27,     0,    42,     0,    43,     0,    30,     0,     0,     0,
     2603       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
     2604       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2605       0,     0,     0,     0,    36,     0,   203,    38,    39,     0,
     2606       0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
    26072607      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    26082608      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2609        0,     0,     0,     0,    30,   260,     0,     0,     0,     0,
    2610        0,     0,     0,   606,     0,     0,     0,     0,     0,     0,
    2611        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2612        0,    35,     0,     0,    37,    38,     2,   197,     4,     5,
    2613        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2614       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2615        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2616      574,     0,     0,     0,     0,     0,     0,     0,   611,     0,
     2609      42,     0,   266,     0,    30,     0,     0,     0,     0,     0,
     2610     205,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2611       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2612       0,     0,    36,     0,   331,   332,    39,     0,     0,     0,
     2613       0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
     2614      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2615      23,    24,     0,     0,    25,    26,    27,     0,   634,     0,
     2616     333,     0,    30,     0,     0,     0,     0,     0,   625,     0,
    26172617       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2618        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2619       38,     2,   197,     4,     5,     6,     7,     8,     9,    10,
     2618       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2619      36,     0,   331,   332,    39,     0,     0,     0,     0,     0,
     2620       0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
     2621      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2622    -278,     0,    25,    26,    27,     0,     0,     0,   333,     0,
     2623      30,     0,     0,     0,     0,     0,   109,     0,     0,     0,
     2624       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2625       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2626      37,    38,     0,     0,  -278,     8,     9,    10,    11,    12,
     2627      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2628      23,    24,  -278,     0,    25,    26,    27,     0,     0,     0,
     2629       0,     0,    30,     0,   634,     0,   333,     0,     0,     0,
     2630       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2631       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2632       0,     0,    37,    38,     0,     0,  -278,     8,     9,    10,
    26202633      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    26212634      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2622        0,     0,     0,     0,    30,   662,     0,     0,     0,     0,
    2623        0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
    2624        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2625        0,    35,     0,     0,   198,   199,     8,     9,    10,    11,
    2626       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2627       22,    23,    24,     0,     0,    25,    26,    27,   474,   475,
    2628      476,     0,   271,    30,   272,     0,     0,     0,     0,     0,
    2629      200,     0,     0,     0,     0,     0,     0,     0,   261,     0,
    2630        0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
    2631        0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
    2632      278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    2633        0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2634        0,     0,     0,     0,     0,     0,     0,   283,     0,   284,
    2635        0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
    2636      289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
    2637       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2638        0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
    2639      272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2640        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2641        0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
    2642       38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2643        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2644        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2645        0,     0,     0,   283,     0,   506,     0,     0,   164,     0,
    2646        0,     0,   285,   286,   287,   288,   289,   290,     8,     9,
    2647       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2648       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2649        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    2650        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2651        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2652        0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
    2653      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2654        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2655        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2656        0,   574,    -3,     0,     0,     0,     0,     0,   285,   575,
    2657      287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
    2658       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2659       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2660      271,    30,   272,     0,     0,     0,     0,     0,     0,     0,
    2661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2662        0,     0,     0,   273,    33,     0,     0,     0,     0,   625,
    2663        0,    37,    38,   275,     0,     0,   276,   277,   278,   279,
    2664       40,    41,     0,   280,   281,     0,     0,     0,     0,     0,
    2665        0,   282,     0,     0,     0,     0,     0,     0,     0,     0,
    2666        0,     0,     0,     0,     0,   283,   -35,   742,     0,     0,
    2667        0,     0,     0,     0,   285,   286,   287,   288,   289,   290,
    2668        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2669       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2670       26,    27,     0,     0,     0,     0,   271,    30,   272,     0,
    2671        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2672        0,     0,     0,     0,     0,     0,     0,     0,     0,   273,
    2673       33,     0,     0,     0,     0,   274,     0,    37,    38,   275,
    2674        0,     0,   276,   277,   278,   279,    40,    41,     0,   280,
    2675      281,     0,     0,     0,     0,     0,     0,   282,     0,     0,
    2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2677        0,   283,     0,   284,     0,     0,     0,     0,     0,     0,
    2678      285,   286,   287,   288,   289,   290,     8,     9,    10,    11,
    2679       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2680       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2681        0,     0,   271,    30,   272,     0,     0,     0,     0,     0,
    2682        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2683        0,     0,     0,     0,     0,   273,    33,     0,     0,     0,
    2684        0,   274,     0,    37,    38,   275,     0,     0,   276,   277,
    2685      278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    2686        0,     0,     0,   282,     0,     0,     0,     0,     0,     0,
    2687        0,     0,     0,     0,     0,     0,     0,   283,     0,   151,
    2688        0,     0,     0,     0,     0,     0,   285,   286,   287,   288,
    2689      289,   290,     8,     9,    10,    11,    12,    13,    14,    15,
    2690       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2691        0,    25,    26,    27,     0,     0,     0,     0,   271,    30,
    2692      272,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2693        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2694        0,   273,    33,     0,     0,     0,     0,   274,     0,    37,
    2695       38,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2696        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2697        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2698        0,     0,     0,   283,     0,   574,     0,     0,     0,     0,
    2699        0,     0,   285,   575,   287,   288,   289,   290,     8,     9,
    2700       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2701       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2702        0,     0,     0,     0,   271,    30,   272,     0,     0,     0,
    2703        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2704        0,     0,     0,     0,     0,     0,     0,   273,    33,     0,
    2705        0,     0,     0,   274,     0,    37,    38,   275,     0,     0,
    2706      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2707        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2708        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2709        0,   361,     0,     0,     0,     0,     0,     0,   285,   363,
    2710      287,   288,   289,   290,     8,     9,    10,    11,    12,    13,
    2711       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2712       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2713        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2714        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2715        0,     0,     0,     0,    33,     0,     0,     0,     0,    36,
    2716        0,    37,    38,    39,     0,     0,     0,     0,     0,     0,
    2717       40,    41,     8,     9,    10,    11,    12,    13,    14,    15,
    2718       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2719        0,    25,    26,    27,     0,    42,     0,   151,     0,    30,
    2720        0,     0,     0,     0,     0,    44,     0,     0,     0,     0,
    2721        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2722        0,     0,    33,     0,     0,     0,     0,    36,     0,    37,
    2723       38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    2724        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2725       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2726       26,    27,     0,    42,     0,    43,     0,    30,     0,     0,
    2727        0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
    2728        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2729       33,     0,     0,     0,     0,    36,     0,   198,   199,    39,
    2730        0,     0,     0,     0,     0,     0,    40,    41,     8,     9,
    2731       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2732       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2733        0,    42,     0,   260,     0,    30,     0,     0,     0,     0,
    2734        0,   201,     0,     0,     0,     0,     0,     0,     0,     0,
    2735        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2736        0,     0,     0,    36,     0,   809,    38,    39,     0,     0,
    2737        0,     0,     0,     0,    40,    41,     8,     9,    10,    11,
    2738       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2739       22,    23,    24,     0,     0,    25,    26,    27,     0,  1028,
    2740        0,   568,     0,    30,     0,     0,     0,     0,     0,   611,
    2741        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2742        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2743        0,    36,     0,   809,    38,    39,     0,     0,     0,     0,
    2744        0,     0,    40,    41,     8,     9,    10,    11,    12,    13,
    2745       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2746       24,     0,     0,    25,    26,    27,     0,     0,     0,   568,
    2747        0,    30,   435,     0,     0,     0,     0,   108,     0,     0,
    2748        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2749        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2750        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2751       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2752        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2753       30,   435,     0,     0,     0,     0,     0,   436,     0,     0,
    2754        0,   929,     0,     0,     0,   108,     0,     0,     0,     0,
    2755        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2756       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2757       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2758        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2759      435,     0,     0,     0,     0,     0,   436,     0,     0,     0,
    2760     1394,     0,     0,     0,   108,     0,     0,     0,     0,     0,
    2761        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2762       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2763       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2764       25,    26,    27,     0,     0,     0,     0,     0,    30,   435,
    2765        0,     0,     0,     0,     0,   436,     0,     0,     0,  1438,
    2766        0,     0,     0,   108,     0,     0,     0,     0,     0,     0,
    2767        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2768        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2769       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2770       26,    27,     0,     0,     0,     0,     0,    30,   435,     0,
    2771        0,     0,     0,     0,   436,     0,     0,     0,  1500,     0,
    2772        0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
    2773       33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    2774        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2775       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2776       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2777        0,     0,     0,   436,     0,     0,     0,  1524,     0,     0,
    2778        0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
    2779        0,     0,     0,     0,   107,     0,    37,    38,     8,     9,
    2780       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2781       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2782        0,     0,     0,     0,     0,    30,   435,     0,     0,     0,
    2783        0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
    2784      108,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2785        0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    2786       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2787       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2788        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2789        0,   436,     0,     0,     0,     0,     0,     0,     0,   108,
    2790        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2791        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2792       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2793       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2794        0,     0,     0,    30,     0,     0,     0,     0,  1028,     0,
    2795      568,     0,     0,     0,     0,     0,     0,     0,   108,     0,
    2796        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2797        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
    2798       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2799       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2800        0,     0,    30,     0,     0,     0,     0,  1028,     0,   568,
    2801        0,     0,     0,     0,     0,     0,     0,   611,     0,     0,
    2802        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2803        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2804       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2805       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2806        0,    30,     0,     0,     0,     0,     0,     0,   247,     0,
    2807        0,     0,     0,     0,     0,     0,   108,     0,     0,     0,
    2808        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2809        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2810       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2811        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2812       30,     0,     0,     0,     0,     0,     0,   151,     0,     0,
    2813        0,     0,     0,     0,     0,   108,     0,     0,     0,     0,
    2814        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2815      198,   199,     8,     9,    10,    11,    12,    13,    14,    15,
    2816       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2817        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2818        0,     0,     0,     0,     0,     0,   260,     0,     0,     0,
    2819        0,     0,     0,     0,   261,     0,     0,     0,     0,     0,
    2820        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2821       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2822       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2823       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2824        0,     0,     0,     0,     0,   247,     0,     0,     0,     0,
    2825        0,     0,     0,   611,     0,     0,     0,     0,     0,     0,
    2826        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2827        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2828       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2829       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2830        0,     0,     0,     0,   568,     0,     0,     0,     0,     0,
    2831        0,     0,   611,     0,     0,     0,     0,     0,     0,     0,
    2832       33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    2833        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2834       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2835       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2836        0,     0,     0,   436,     0,     0,     0,     0,     0,     0,
    2837        0,   108,     0,     0,     0,     0,     0,     0,     0,    33,
    2838        0,     0,     0,     0,     0,     0,   198,   199,     8,     9,
    2839       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2840       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2841        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2842        0,     0,   260,     0,     0,     0,     0,     0,     0,     0,
    2843      606,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2844        0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
    2845       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2846       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2847        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2848        0,   574,     0,     0,     0,     0,     0,     0,     0,   611,
     2635       0,     0,     0,     0,    30,   446,   634,     0,   333,     0,
     2636       0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
    28492637       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    28502638       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
     
    28522640      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    28532641       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2854       43,     0,     0,     0,     0,     0,     0,     0,   108,     0,
     2642     447,     0,     0,     0,  1209,     0,     0,     0,   109,     0,
    28552643       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2856        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2644       0,   108,     0,    37,    38,     8,     9,    10,    11,    12,
    28572645      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    28582646      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2859        0,     0,    30,     0,     0,     0,     0,     0,     0,   568,
    2860        0,     0,     0,     0,     0,     0,     0,   108,     0,     0,
     2647       0,     0,    30,   446,     0,     0,     0,     0,     0,    43,
     2648       0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
    28612649       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2862        0,     0,   198,   199,     8,     9,    10,    11,    12,    13,
     2650       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    28632651      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    28642652      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2865        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2866        0,     0,     0,     0,     0,     0,   261,     0,     0,     0,
     2653       0,    30,     0,     0,     0,     0,     0,     0,   447,     0,
     2654       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    28672655       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2868        0,   198,   199,     2,   197,     4,     5,     6,     7,     8,
     2656       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2657      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2658       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2659      30,     0,     0,     0,     0,   634,     0,   333,     0,     0,
     2660       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
     2661       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2662      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2663      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2664       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2665       0,     0,     0,     0,   634,     0,   333,     0,     0,     0,
     2666       0,     0,     0,     0,   625,     0,     0,     0,     0,     0,
     2667       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2668      38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2669      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2670      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2671       0,     0,     0,     0,     0,   253,     0,     0,     0,     0,
     2672       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
     2673       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2674       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2675      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2676      26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
     2677       0,     0,     0,     0,   154,     0,     0,     0,     0,     0,
     2678       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2679      33,     0,     0,     0,     0,     0,     0,   203,    38,     8,
    28692680       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    28702681      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    28712682      27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2872        0,     0,     0,     0,     0,   606,     0,     0,     0,     0,
    2873        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2874        0,    34,     0,    35,     0,     0,    37,    38,     0,   271,
    2875        0,   272,  1048,     0,  1049,     0,     0,  1050,  1051,  1052,
    2876     1053,  1054,  1055,  1056,  1057,     0,  1058,     0,     0,  1059,
    2877       32,     0,   273,     0,     0,     0,     0,     0,   625,     0,
    2878        0,  -402,   275,     0,     0,   276,   277,   278,   279,    40,
    2879       41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
    2880      282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2881        0,     0,     0,     0,   283,     0,   361,     0,     0,   164,
    2882        0,     0,     0,   285,   363,   287,   288,   289,   290,     0,
    2883        0,     0,     0,     0,     0,     0,     0,  -126,     2,   197,
    2884        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2885       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2886       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2887        0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
    2888       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2889        0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
    2890        0,    37,    38,     0,   271,     0,   272,  1048,     0,  1049,
    2891     1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2892     1532,  1058,    33,  1329,  1059,    32,     0,   273,     0,    37,
    2893       38,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2894      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2895        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2896        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2897        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2898      287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
    2899     1420,  1421,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2900        0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
    2901        0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2902      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2903        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2904        0,     0,     0,     0,     0,     0,     0,     0,     0,   283,
    2905        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2906      287,   288,   289,   290,   271,     0,   272,  1048,     0,  1049,
    2907        0,     0,  1050,  1051,  1052,  1053,  1054,  1055,  1056,  1057,
    2908        0,  1058,     0,     0,  1059,    32,     0,   273,     0,     0,
    2909        0,     0,     0,   625,     0,     0,     0,   275,     0,     0,
    2910      276,   277,   278,   279,    40,    41,     0,   280,   281,     0,
    2911        0,     0,     0,     0,     0,   282,     0,     0,     0,     0,
    2912        0,   271,     0,   272,     0,     0,     0,     0,     0,   283,
    2913        0,   361,     0,     0,   164,     0,     0,     0,   285,   363,
    2914      287,   288,   289,   290,   273,     0,     0,     0,     0,     0,
    2915      274,     0,     0,     0,   275,     0,     0,   276,   277,   278,
    2916      279,    40,    41,     0,   280,   281,     0,     0,     0,     0,
    2917        0,     0,   282,     0,     0,     0,     0,     0,   271,     0,
    2918      272,     0,     0,     0,     0,     0,   283,     0,   361,     0,
    2919        0,     0,     0,     0,     0,   285,   892,   287,   288,   289,
    2920      290,   273,     0,     0,     0,     0,     0,   274,     0,     0,
    2921        0,   275,     0,     0,   276,   277,   278,   279,    40,    41,
    2922        0,   280,   281,     0,     0,     0,     0,     0,     0,   282,
    2923        0,     0,     0,     0,     0,   271,     0,   272,     0,     0,
    2924        0,     0,     0,   283,     0,     0,     0,     0,     0,     0,
    2925        0,     0,   285,   363,   287,   288,   289,   290,   273,     0,
    2926        0,     0,     0,     0,   274,     0,     0,     0,   275,     0,
    2927        0,   276,   277,   278,   279,    40,    41,     0,   280,   281,
    2928        0,     0,     0,     0,     0,     0,   282,     0,     0,     0,
    2929        0,     0,   271,     0,   272,     0,     0,     0,     0,     0,
    2930      496,     0,     0,     0,     0,     0,     0,     0,     0,   285,
    2931      363,   287,   288,   289,   290,   273,     0,     0,     0,     0,
    2932        0,   274,     0,     0,     0,   275,     0,     0,   276,   277,
    2933      278,   279,    40,    41,     0,   280,   281,     0,     0,     0,
    2934        0,     0,     0,   282,     0,     0,     0,     0,     0,   271,
    2935        0,   272,     0,     0,     0,     0,     0,   499,     0,     0,
    2936        0,     0,     0,     0,     0,     0,   285,   363,   287,   288,
    2937      289,   290,   273,     0,     0,     0,     0,     0,   274,     0,
    2938        0,     0,   275,     0,     0,   276,   277,   278,   279,    40,
    2939       41,     0,   280,   281,     0,     0,     0,     0,     0,     0,
    2940      282,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2941        0,     0,     0,     0,   502,     0,     0,     0,     0,     0,
    2942        0,     0,     0,   285,   363,   287,   288,   289,   290,     2,
    2943      197,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2944       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2945       23,    24,     0,     0,     0,     0,     0,     0,     0,     0,
    2946        0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
    2947        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2948        0,     0,     0,     0,     0,    33,     0,    34,     0,    35,
    2949       36,     0,   167,   168,    39,     0,     0,     0,     0,     0,
    2950        0,    40,    41,   196,     2,   197,     4,     5,     6,     7,
    2951        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2952       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2953       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2954        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2956       33,     0,    34,     0,    35,     0,     0,   198,   199,   456,
    2957        2,   197,     4,     5,     6,     7,     8,     9,    10,    11,
     2683       0,     0,     0,   266,     0,     0,     0,     0,     0,     0,
     2684       0,   267,     0,     0,     0,     0,     0,     0,     0,    33,
     2685       0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
     2686      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2687      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2688       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2689       0,     0,   253,     0,     0,     0,     0,     0,     0,     0,
     2690     625,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2691       0,     0,     0,     0,     0,    37,    38,     8,     9,    10,
     2692      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2693      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2694       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2695       0,   333,     0,     0,     0,     0,     0,     0,     0,   625,
     2696       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2697       0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    29582698      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    29592699      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    29602700       0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
     2701     447,     0,     0,     0,     0,     0,     0,     0,   109,     0,
     2702       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2703       0,     0,     0,   203,    38,     8,     9,    10,    11,    12,
     2704      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2705      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2706       0,     0,    30,     0,     0,     0,     0,     0,     0,   266,
     2707       0,     0,     0,     0,     0,     0,     0,   620,     0,     0,
     2708       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2709       0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2710      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2711      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2712       0,    30,     0,     0,     0,     0,     0,     0,   590,     0,
     2713       0,     0,     0,     0,     0,     0,   625,     0,     0,     0,
     2714       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
     2715       0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
     2716      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2717       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2718      30,     0,     0,     0,     0,     0,     0,   333,     0,     0,
     2719       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
     2720       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
     2721      37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
     2722      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2723       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2724       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2725       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2726       0,     0,    33,     0,     0,     0,     0,     0,     0,   203,
     2727      38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2728      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2729      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2730       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2731       0,     0,     0,   620,     0,     0,     0,     0,     0,     0,
     2732       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2733       0,    35,     0,     0,    37,    38,     0,   277,     0,   278,
     2734    1043,     0,  1044,     0,     0,  1045,  1046,  1047,  1048,  1049,
     2735    1050,  1051,  1052,  1482,  1053,     0,     0,  1054,    32,     0,
     2736     279,     0,     0,     0,     0,     0,   640,     0,     0,  -396,
     2737     281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
     2738     286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
    29612739       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2962        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2963       35,     0,     0,    37,    38,     2,   197,     4,     5,     6,
    2964        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2740       0,     0,   289,     0,   373,     0,     0,   167,     0,     0,
     2741       0,   291,   375,   293,   294,   295,   296,     0,   277,     0,
     2742     278,  1043,     0,  1044,     0,  -126,  1045,  1046,  1047,  1048,
     2743    1049,  1050,  1051,  1052,     0,  1053,     0,     0,  1054,    32,
     2744       0,   279,     0,     0,     0,     0,     0,   640,     0,     0,
     2745       0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
     2746       0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2747       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2748       0,     0,     0,   289,     0,   373,     0,     0,   167,     0,
     2749       0,     0,   291,   375,   293,   294,   295,   296,     0,     0,
     2750       0,     0,     0,     0,     0,     0,  -126,     2,   202,     4,
     2751       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2752      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2753       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2754      30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    29652755      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2966       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2756      25,    26,    27,    33,     0,    34,     0,    35,    30,     0,
     2757      37,    38,     0,   277,     0,   278,  1043,     0,  1044,  1378,
     2758    1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,  1482,
     2759    1053,    33,  1295,  1054,    32,     0,   279,     0,    37,    38,
     2760       0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
     2761     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2762       0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
     2763       0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
     2764     373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
     2765     294,   295,   296,   277,     0,   278,  1043,     0,  1044,  1378,
     2766    1379,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
     2767    1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
     2768       0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
     2769     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2770       0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
     2771       0,     0,     0,     0,     0,     0,     0,     0,   289,     0,
     2772     373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
     2773     294,   295,   296,   277,     0,   278,  1043,     0,  1044,     0,
     2774       0,  1045,  1046,  1047,  1048,  1049,  1050,  1051,  1052,     0,
     2775    1053,     0,     0,  1054,    32,     0,   279,     0,     0,     0,
     2776       0,     0,   640,     0,     0,     0,   281,     0,     0,   282,
     2777     283,   284,   285,    40,    41,     0,   286,   287,     0,     0,
     2778       0,     0,     0,     0,   288,     0,     0,     0,     0,     0,
     2779     277,     0,   278,     0,     0,     0,     0,     0,   289,     0,
     2780     373,     0,     0,   167,     0,     0,     0,   291,   375,   293,
     2781     294,   295,   296,   279,     0,     0,     0,     0,     0,   280,
     2782       0,     0,     0,   281,     0,     0,   282,   283,   284,   285,
     2783      40,    41,     0,   286,   287,     0,     0,     0,     0,     0,
     2784       0,   288,     0,     0,     0,     0,     0,   277,     0,   278,
     2785       0,     0,     0,     0,     0,   289,     0,   373,     0,     0,
     2786       0,     0,   768,     0,   291,   375,   293,   294,   295,   296,
     2787     279,     0,     0,     0,     0,     0,   280,     0,     0,     0,
     2788     281,     0,     0,   282,   283,   284,   285,    40,    41,     0,
     2789     286,   287,     0,     0,     0,     0,     0,     0,   288,     0,
     2790       0,     0,     0,     0,   277,     0,   278,     0,     0,     0,
     2791       0,     0,   289,     0,   373,     0,     0,     0,     0,     0,
     2792       0,   291,   375,   293,   294,   295,   296,   279,     0,     0,
     2793       0,     0,     0,   280,     0,     0,     0,   281,     0,     0,
     2794     282,   283,   284,   285,    40,    41,     0,   286,   287,     0,
     2795       0,     0,     0,     0,     0,   288,     0,     0,     0,     0,
     2796       0,   277,     0,   278,     0,     0,     0,     0,     0,   289,
     2797       0,   373,     0,     0,     0,     0,     0,     0,   291,   723,
     2798     293,   294,   295,   296,   279,     0,     0,     0,     0,     0,
     2799     640,     0,     0,     0,   281,     0,     0,   282,   283,   284,
     2800     285,    40,    41,     0,   286,   287,     0,     0,     0,     0,
     2801       0,     0,   288,     0,     0,     0,     0,     0,   277,     0,
     2802     278,     0,     0,     0,     0,     0,   289,     0,   772,     0,
     2803       0,     0,     0,     0,     0,   291,   375,   293,   294,   295,
     2804     296,   279,     0,     0,     0,     0,     0,   280,     0,     0,
     2805       0,   281,     0,     0,   282,   283,   284,   285,    40,    41,
     2806       0,   286,   287,     0,     0,     0,     0,     0,     0,   288,
     2807       0,     0,     0,     0,     0,   277,     0,   278,     0,     0,
     2808       0,     0,     0,   289,     0,   373,     0,     0,     0,     0,
     2809       0,     0,   291,   813,   293,   294,   295,   296,   279,     0,
     2810       0,     0,     0,     0,   280,     0,     0,     0,   281,     0,
     2811       0,   282,   283,   284,   285,    40,    41,     0,   286,   287,
     2812       0,     0,     0,     0,     0,     0,   288,     0,     0,     0,
     2813       0,     0,   277,     0,   278,     0,     0,     0,     0,     0,
     2814     289,     0,     0,     0,     0,     0,     0,     0,     0,   291,
     2815     375,   293,   294,   295,   296,   279,     0,     0,     0,     0,
     2816       0,   280,     0,     0,     0,   281,     0,     0,   282,   283,
     2817     284,   285,    40,    41,     0,   286,   287,     0,     0,     0,
     2818       0,     0,     0,   288,     0,     0,     0,     0,     0,   277,
     2819       0,   278,     0,     0,     0,     0,     0,   507,     0,     0,
     2820       0,     0,     0,     0,     0,     0,   291,   375,   293,   294,
     2821     295,   296,   279,     0,     0,     0,     0,     0,   280,     0,
     2822       0,     0,   281,     0,     0,   282,   283,   284,   285,    40,
     2823      41,     0,   286,   287,     0,     0,     0,     0,     0,     0,
     2824     288,     0,     0,     0,     0,     0,   277,     0,   278,     0,
     2825       0,     0,     0,     0,   510,     0,     0,     0,     0,     0,
     2826       0,     0,     0,   291,   375,   293,   294,   295,   296,   279,
     2827       0,     0,     0,     0,     0,   280,     0,     0,     0,   281,
     2828       0,     0,   282,   283,   284,   285,    40,    41,     0,   286,
     2829     287,     0,     0,     0,     0,     0,     0,   288,     0,     0,
     2830       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2831       0,   513,     0,     0,     0,     0,     0,     0,     0,     0,
     2832     291,   375,   293,   294,   295,   296,     2,   202,     4,     5,
     2833       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2834      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2835       0,     0,     0,     0,     0,     0,     0,     0,     0,    30,
    29672836       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29682837       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2969        0,    33,     0,    34,     0,    35,     0,     0,   198,   199,
    2970        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2971       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2972       26,    27,   474,   475,   476,     0,     0,    30,     8,     9,
     2838       0,     0,    33,     0,    34,     0,    35,    36,     0,   170,
     2839     171,    39,     0,     0,     0,     0,     0,     0,    40,    41,
     2840     201,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2841      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2842      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2843       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
     2844       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2845       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2846       0,    35,     0,     0,   203,    38,   467,     2,   202,     4,
     2847       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2848      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2849       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2850      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2851       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2852       0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
     2853      37,    38,     2,   202,     4,     5,     6,     7,     8,     9,
    29732854      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    29742855      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2975       33,     0,     0,     0,     0,    30,     0,    37,    38,     0,
     2856       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    29762857       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    29772858       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2978        0,     0,     0,     0,     0,   198,   199
     2859      34,     0,    35,     0,     0,   203,    38,     8,     9,    10,
     2860      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2861      21,    22,    23,    24,     0,     0,    25,    26,    27,   485,
     2862     486,   487,     0,     0,    30,     8,     9,    10,    11,    12,
     2863      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2864      23,    24,     0,     0,    25,    26,    27,    33,     0,     0,
     2865       0,     0,    30,     0,    37,    38,     0,     0,     0,     0,
     2866       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2867       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
     2868       0,     0,   203,    38
    29792869};
    29802870
    29812871#define yypact_value_is_default(yystate) \
    2982   ((yystate) == (-1297))
     2872  ((yystate) == (-1269))
    29832873
    29842874#define yytable_value_is_error(yytable_value) \
     
    29872877static const yytype_int16 yycheck[] =
    29882878{
    2989        1,   112,     0,   438,     0,    42,   178,     1,    42,   177,
    2990       42,   210,   177,   444,   162,   177,   102,   178,    32,   412,
    2991      630,   177,   269,   177,   177,   520,     0,     1,   270,   877,
    2992      606,   676,   434,    31,   558,    31,   737,   557,   877,   177,
    2993      433,   434,   676,   676,    42,   586,    44,   331,    44,   437,
    2994      588,     0,   557,  1026,  1027,     0,    54,    31,   557,  1027,
    2995      588,   755,    60,   980,    60,    63,     0,    63,    66,   346,
    2996       66,   586,    66,   350,   586,   179,    54,  1047,    42,   481,
    2997       65,   192,    31,   485,   256,   987,    31,   255,  1339,    63,
    2998      255,   701,    66,   255,    31,   256,   586,    31,   586,   255,
    2999      586,   255,   255,    65,   399,   103,   586,   752,   106,    42,
    3000      407,   408,    29,    42,   112,   101,    88,   255,   752,   752,
    3001      102,    37,   510,   418,  1420,   103,    89,   109,   106,   246,
    3002      589,   426,    42,    43,     0,     0,   595,   123,  1040,   124,
    3003      177,   622,    37,   177,   142,   177,   142,   251,   252,   111,
    3004      122,  1424,   115,     0,     1,   636,   154,    27,   154,   621,
    3005      622,    65,    37,    80,    81,    31,    31,     4,     5,     6,
    3006        7,     8,     9,    37,   636,   479,   101,   102,    57,   177,
    3007      178,   195,   178,    37,    31,   101,   483,   103,  1484,  1440,
    3008       75,    67,   391,   477,   192,    71,   106,    63,    74,  1047,
    3009       76,    71,   326,   201,   501,   201,   101,    83,   103,    52,
    3010      101,   209,    65,   177,   212,   387,   212,    65,   255,    66,
    3011      124,   255,   101,   255,   101,    62,   387,    64,   103,    42,
    3012       43,   209,   722,   714,   722,  1508,   722,   101,   212,   103,
    3013     1513,   242,   654,   241,   177,   241,  1513,   101,   177,   103,
    3014      103,    94,   714,   113,   114,   103,  1529,   255,   256,   103,
    3015      256,   696,   106,  1536,   262,   437,   377,   241,   565,  1536,
    3016      794,   269,  1240,    37,   815,    65,   437,    67,    75,    42,
    3017       43,   282,   399,    65,   262,    67,   590,   124,   826,    37,
    3018      594,   269,   241,   106,   405,   989,   241,   469,   826,   410,
    3019      815,   418,   104,   815,   241,   102,   108,   241,   469,   426,
    3020       65,   615,   246,   103,   108,   619,   233,  1290,  1291,   317,
    3021      219,   317,    65,  1291,   106,   815,   101,   815,   204,   815,
    3022      124,   123,   330,   331,  1304,   815,  1253,   101,   237,   103,
    3023      617,    65,   185,    67,   107,   106,   212,   471,   103,   347,
    3024      108,   108,   330,   351,    65,  1056,    67,    68,   817,    89,
    3025      103,     0,     1,     3,   207,   209,    78,   124,     3,   347,
    3026      283,  1219,   667,   351,   217,   241,   241,   101,   790,   377,
    3027     1219,   246,   106,   108,   908,   115,   670,   907,   800,   387,
    3028      101,   387,    31,   105,   241,   106,    65,    65,    67,    67,
    3029      941,     0,   907,   102,   816,    44,   471,   405,   907,   102,
    3030      109,   104,   410,     0,   942,   108,   102,   907,   262,   907,
    3031      270,   907,   108,   999,    63,   269,   941,    66,   101,   941,
    3032      123,   124,   101,   108,   108,   677,  1513,   106,   106,   437,
    3033      283,   102,    65,  1416,    67,   362,    69,   108,  1416,   124,
    3034      124,   575,  1529,    76,    77,   456,  1304,   699,   334,  1536,
    3035      336,   102,    65,   461,    67,   399,   332,   123,   109,   108,
    3036      103,   469,   105,   469,   113,   473,   109,   473,   101,   477,
    3037      103,   101,   606,   631,   418,   101,   109,   611,   111,   736,
    3038      985,  1461,   426,   108,   407,   408,   108,   583,  1468,   473,
    3039      501,   101,   141,   347,  1406,  1407,   678,   351,   676,   124,
    3040      108,   676,   124,   108,   676,   154,   517,   678,  1128,   520,
    3041      676,   522,   676,   676,   473,   442,   124,   638,   473,   124,
    3042      447,   104,   920,   108,   399,   108,   640,   471,   676,   473,
    3043      928,  1511,   826,   121,   848,   123,   422,  1028,   950,   124,
    3044      667,   675,   108,   418,  1013,  1014,   621,   622,   101,   952,
    3045      108,   426,   201,   480,  1088,   482,  1028,   101,   124,   570,
    3046       65,   636,    67,   212,    69,   108,   124,  1105,    81,    82,
    3047      423,    76,    77,   496,   972,   583,   499,   101,   586,   502,
    3048      588,   124,   231,   111,   711,  1487,   462,   102,   116,   117,
    3049      104,  1493,   241,  1304,   108,   583,   101,   473,   473,   607,
    3050      675,  1023,  1024,  1461,   253,   458,   111,   101,  1510,   103,
    3051     1468,   102,   261,  1515,   748,   623,   473,   111,   573,   607,
    3052        4,     5,     6,     7,     8,     9,   637,   635,   639,   102,
    3053      638,   554,   102,   947,   283,   623,   109,   286,   108,   714,
    3054      108,   108,   101,   496,   103,    44,   499,   635,    32,   502,
    3055      123,   104,   946,  1511,   863,   108,   124,   124,  1080,  1081,
    3056      102,    60,   670,   102,    63,  1156,  1157,    66,   676,   108,
    3057      678,  1382,   101,   748,   103,   884,   102,   326,    62,   101,
    3058       64,   103,   111,   332,  1156,  1157,   102,     4,     5,     6,
    3059        7,     8,     9,    65,   102,    67,   102,    69,   709,   101,
    3060      627,   101,   108,   103,    76,    77,    83,    84,   101,     1,
    3061      997,   111,   870,   104,   722,   723,   812,   108,   103,   496,
    3062      105,   102,   499,   667,   109,   502,     3,   108,   736,   101,
    3063      101,   675,   608,    10,    11,    12,    13,    14,   920,   111,
    3064      107,   118,   119,   142,    44,    62,   928,    64,   736,   920,
    3065       85,    86,    44,   607,  1465,   154,  1467,   928,   407,   408,
    3066       37,   857,   102,   412,   691,   108,   109,   711,   108,   623,
    3067      697,    10,    11,    12,    13,    14,    65,   124,    67,   178,
    3068       69,   635,    57,    60,   433,   434,   435,    76,    77,   438,
    3069     1231,   102,   667,   102,  1088,   444,   101,   108,    37,   108,
    3070      653,  1512,   201,   102,   748,   124,   102,   815,   108,   108,
    3071      102,   664,   108,   212,   102,   668,   108,   677,   826,   102,
    3072      108,    60,   471,   102,   473,   108,   702,  1230,   101,   108,
    3073      103,    65,   102,   101,   483,    69,   711,   101,   108,   699,
    3074      716,   141,    76,    77,   101,  1267,   103,   496,   102,   141,
    3075      499,   806,   501,   502,   108,    44,  1278,  1279,  1280,    65,
    3076      101,  1148,  1517,    69,   106,   999,   877,   101,  1155,  1121,
    3077       76,    77,   102,  1517,  1517,    54,    55,   111,   108,   101,
    3078     1325,   103,   736,   979,  1042,  1326,    10,    11,    12,    13,
    3079       14,   106,   102,   877,   902,   101,   124,   103,   108,   907,
    3080      908,   201,   102,   124,   196,   111,  1328,    65,   108,   201,
    3081      106,   102,   920,    37,   902,   101,   565,   108,   317,   108,
    3082      928,    65,   877,    67,    68,    69,   575,   787,   804,   578,
    3083      101,   102,   103,   877,  1186,  1187,    60,    75,   946,   231,
    3084      102,   103,  1229,   870,    65,   112,   901,   951,    69,   876,
    3085     1395,  1026,   141,  1028,   120,    76,    77,   606,   101,   102,
    3086      103,   261,   611,   543,   544,   545,   546,   951,   101,   261,
    3087      103,   982,   264,   101,   985,   103,   987,   101,    87,   103,
    3088      101,   121,   103,   283,    42,    43,   286,   111,   387,   997,
    3089      111,   283,  1113,  1017,   286,  1436,  1092,   123,   101,    65,
    3090      103,   877,   877,    69,   103,   101,   866,   103,   102,   997,
    3091       76,    77,   201,   681,     3,   683,  1150,   101,   102,   103,
    3092      877,    10,    11,    12,    13,    14,   675,   104,  1473,  1040,
    3093      102,  1127,   102,  1474,   326,   101,   101,   102,   103,  1050,
    3094     1327,   102,  1053,  1054,  1055,   111,   973,   696,    37,   108,
    3095      109,   904,   539,   540,   346,   102,  1501,    65,   350,    67,
    3096       68,    69,   102,  1047,    78,    79,    80,   716,    76,    77,
    3097      101,    60,   261,   103,    65,  1150,    67,    68,    69,   108,
    3098     1088,  1156,  1157,   541,   542,    76,    77,   101,   123,   103,
    3099      106,   105,  1047,   101,   951,   547,   548,   286,  1496,   748,
    3100      101,   877,   102,  1047,   102,  1113,  1240,   407,   408,   104,
    3101      101,   104,   412,   109,   104,   407,   408,  1259,  1260,  1261,
    3102      412,   109,  1525,   108,    28,    75,  1002,   102,   102,   989,
    3103      108,   104,   108,   433,   434,   107,  1091,   326,   109,   102,
    3104     1538,   433,   434,   435,   101,   107,   438,   107,   102,  1076,
    3105       75,   102,   444,   102,    65,   804,    67,    68,    69,   124,
    3106      102,   109,  1089,  1090,   456,    76,    77,   102,  1420,   102,
    3107      104,  1047,  1047,   102,   102,   102,   108,   101,   104,   101,
    3108       28,   102,   102,   483,  1044,   102,   102,   102,   102,   481,
    3109     1047,   483,   102,   485,  1198,   102,   496,   102,   104,   499,
    3110      123,   501,   502,   104,   496,  1058,  1150,   499,  1219,   501,
    3111      502,   107,   102,  1197,  1198,  1290,   102,   104,   407,   408,
    3112      102,  1229,   102,   412,   102,   108,   453,   102,   877,   102,
    3113      107,  1483,  1484,   104,   104,  1219,   102,   102,   101,   108,
    3114     1244,  1229,   106,   104,   433,   434,   108,     3,  1259,  1260,
    3115     1261,   108,   104,   104,    10,    11,    12,    13,    14,   102,
    3116     1244,  1121,   104,   102,  1219,   565,  1193,   108,   108,   102,
    3117      104,   101,   101,   565,  1050,  1219,  1199,  1200,  1399,  1202,
    3118      101,    37,   101,   575,   101,  1208,   109,   124,  1211,   107,
    3119      102,   583,   102,  1389,   483,   104,  1240,   102,   106,   121,
    3120      107,   102,   951,   952,    60,   108,   104,  1318,   124,   108,
    3121      104,   102,   501,   102,   606,  1299,   104,   104,   104,   611,
    3122     1304,  1197,   104,   102,   104,   617,  1186,  1187,   104,    45,
    3123      107,   124,   124,   106,   124,  1339,  1518,   104,   102,  1517,
    3124      124,  1198,  1517,  1219,  1219,  1517,   124,  1518,   107,  1304,
    3125      999,  1517,   102,  1517,  1517,  1339,  1538,   104,   107,   104,
    3126     1304,   104,  1219,   104,   104,  1376,   104,  1538,  1379,  1517,
    3127      104,   104,   102,   102,    55,  1496,   565,   104,   104,   101,
    3128      101,  1389,    54,   102,   104,   102,   575,  1244,   106,   124,
    3129     1398,  1399,    75,   102,   109,  1406,  1407,   102,  1047,   102,
    3130      104,  1389,   104,   104,   696,   102,   101,    89,   107,    40,
    3131     1398,   104,   102,  1424,   102,   102,   102,   606,  1429,   108,
    3132       89,    75,   611,  1299,   109,   102,   124,   654,  1304,  1304,
    3133        0,   106,   124,   124,   726,   102,  1440,   102,   109,   107,
    3134      124,   104,   104,  1219,  1455,   124,   101,  1304,     0,     1,
    3135      107,   107,   102,   102,   124,  1378,  1440,   650,   549,  1312,
    3136      550,    31,   551,  1219,   552,  1129,  1393,   553,  1484,  1384,
    3137     1517,  1313,    42,  1517,    44,  1517,  1546,  1461,  1499,    31,
    3138       32,  1123,  1339,    65,  1468,    67,  1497,    69,  1496,  1124,
    3139       60,  1468,    44,    63,    76,    77,    66,  1508,  1076,   435,
    3140      928,  1150,  1513,   683,   435,   930,  1461,   447,   570,  1517,
    3141     1518,   973,  1518,  1468,    66,   870,  1527,  1461,  1529,   101,
    3142      812,   103,  1533,   726,  1468,  1536,   632,  1511,   948,   111,
    3143     1538,  1542,  1538,  1244,   473,  1546,    -1,   736,    -1,    -1,
    3144       -1,    65,  1318,    67,  1398,    69,    -1,    -1,  1197,  1198,
    3145      102,    -1,    76,    77,    -1,    -1,  1511,    -1,    -1,    -1,
    3146     1420,    -1,    -1,   790,    -1,   857,    -1,  1511,    -1,    -1,
    3147     1219,    -1,   142,   800,    -1,    -1,    -1,   101,    -1,   103,
    3148       -1,  1230,  1231,  1440,   154,  1461,  1461,   111,    -1,   816,
    3149      142,  1240,  1468,  1468,    -1,  1244,    -1,    -1,   150,    -1,
    3150     1376,    -1,    -1,  1379,  1461,    -1,    -1,   177,   178,    -1,
    3151       -1,  1468,    -1,    -1,    -1,    -1,  1469,    -1,    -1,    -1,
    3152       -1,    -1,    -1,  1483,  1484,    -1,   178,    -1,    -1,    -1,
    3153       63,   201,    -1,    -1,    -1,  1511,  1511,    -1,    -1,    -1,
    3154      192,    -1,   212,   195,   196,  1498,    -1,    -1,  1424,   201,
    3155     1299,    -1,   952,  1429,  1511,  1304,    -1,    -1,   950,   951,
    3156      952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   221,
    3157       -1,   241,    -1,   225,    -1,   227,  1325,  1326,    -1,  1455,
    3158      113,    -1,    -1,   235,  1537,   255,    -1,   979,    -1,   241,
    3159     1339,    -1,    -1,    -1,   246,   453,  1549,    65,    -1,    67,
    3160       -1,    69,    -1,    -1,   256,   997,    -1,   999,    76,    77,
    3161       -1,   272,   264,    -1,    10,    11,    12,    13,    14,    -1,
    3162       -1,   154,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
    3163       -1,    -1,    -1,   101,    -1,   103,   297,    -1,    -1,    -1,
    3164       -1,    37,     0,   111,    -1,    -1,  1395,   317,    -1,    -1,
    3165       -1,  1527,    -1,    -1,    -1,    -1,    -1,  1533,    -1,    -1,
    3166       -1,   331,    -1,   952,    60,   326,  1542,    -1,    -1,    -1,
    3167     1546,    -1,    -1,    31,   326,    -1,    -1,    -1,    -1,   212,
    3168       -1,   333,    10,    11,    12,    13,    14,  1436,    -1,    -1,
    3169       -1,  1440,    -1,    -1,   346,    -1,  1023,  1024,   350,    -1,
    3170     1092,   353,   363,    -1,    -1,   101,    -1,   103,    66,    37,
    3171      999,   181,  1461,    -1,    -1,   111,   249,   387,   188,  1468,
    3172      253,  1470,    -1,    -1,  1473,  1474,    -1,    -1,    -1,    -1,
    3173       -1,    -1,    60,    -1,    -1,  1127,    -1,    65,    -1,    67,
    3174       -1,    69,    -1,    -1,    -1,    -1,    -1,   399,    76,    77,
    3175     1499,    -1,  1501,  1080,  1081,    -1,  1148,    -1,    63,    -1,
    3176       -1,   413,  1511,  1155,    -1,    -1,   418,   437,    73,    -1,
    3177       -1,    -1,    -1,   101,   426,   103,  1525,    -1,    -1,    -1,
    3178       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,   258,    -1,
    3179       -1,    -1,   150,    -1,    -1,    -1,   654,    -1,    -1,   332,
    3180       -1,   453,    -1,   473,   456,    -1,    -1,   477,   113,    10,
    3181       11,    12,    13,    14,    10,    11,    12,    13,    14,   471,
    3182       -1,   473,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   481,
    3183     1230,    -1,    -1,   485,    -1,    -1,    37,  1229,  1230,  1231,
    3184       -1,    37,   312,    -1,    -1,    -1,    -1,    -1,    -1,   154,
    3185      320,    -1,  1244,   323,    -1,    -1,    -1,    -1,    -1,    60,
    3186       -1,   513,    -1,   221,    60,    -1,    -1,    -1,    -1,    65,
    3187       -1,    67,    -1,    69,    -1,   536,   537,   538,   411,    -1,
    3188       76,    77,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,
     2879       1,    42,     0,   235,     0,   215,    42,   687,    42,   181,
     2880     103,   181,     1,   687,    32,   687,   165,   620,   181,   275,
     2881     343,     0,   183,  1023,    31,   182,   987,   748,   449,   455,
     2882     181,   181,   645,    31,   600,    31,   181,  1305,   602,   182,
     2883     600,     0,   181,   532,    42,   276,    44,   276,    44,   492,
     2884       1,   600,    31,   496,   570,   343,    54,   603,   887,   152,
     2885     887,   980,    60,   609,    60,    63,    42,    63,    66,    37,
     2886      66,   600,    31,   767,  1035,    42,   448,    66,   113,  1042,
     2887     602,     0,     0,    42,   764,    44,   600,    42,    65,   261,
     2888     764,   261,   764,    44,   490,   600,   257,   258,   261,   712,
     2889      75,    60,   419,   420,    63,   262,   104,    66,    44,   107,
     2890     261,   261,    31,    31,   102,   113,   261,   411,   101,   262,
     2891      65,   109,   261,    27,   600,     0,     1,  1395,  1022,  1023,
     2892      57,   339,    65,     0,   111,   103,   430,    89,    52,    78,
     2893     181,    42,    43,    89,   438,   181,   144,   181,   144,   521,
     2894      37,  1378,   103,    88,   152,   108,    31,   101,   109,   157,
     2895     101,   157,   197,   115,    31,    37,   105,    71,    37,   115,
     2896     103,   124,   358,   109,   101,    37,   362,   494,   224,   124,
     2897     252,    95,   200,   181,   182,   144,   182,   122,    63,    42,
     2898      43,    66,   143,   403,   104,   512,    63,   243,   157,   197,
     2899     488,   152,   635,   636,   733,   181,   107,   205,   604,   205,
     2900    1437,   123,   608,  1042,   181,  1215,   214,    75,   651,   217,
     2901     261,   217,   181,   182,     0,   261,   181,   261,   733,   101,
     2902      54,   103,   101,   629,   103,    37,  1382,   633,    65,   101,
     2903     247,   103,   399,   336,   102,   101,   205,   248,   108,   247,
     2904     201,   247,    44,   106,   205,    31,   399,   733,   217,   825,
     2905     577,   106,  1262,   261,   262,   825,   262,   123,   247,   205,
     2906     268,   102,   365,   837,   482,   189,   825,   275,   109,   602,
     2907     104,   827,    37,   107,   235,   236,   707,   288,   247,   805,
     2908       3,   448,   725,     0,     1,   989,   825,   124,   212,   101,
     2909     236,   103,   261,   102,  1464,   448,    42,    43,   222,  1228,
     2910     109,   825,  1275,  1459,    65,   837,   267,   109,  1464,   270,
     2911     825,  1464,    65,   480,    31,   323,  1486,   323,   247,   247,
     2912    1051,   267,     3,  1479,   252,   108,  1479,   480,   289,   411,
     2913    1486,   292,   217,  1486,   342,   343,   101,   108,   103,   825,
     2914     217,   143,   103,   289,   389,   102,   292,   101,   430,    66,
     2915     103,   359,   109,   124,   323,   363,   438,  1261,  1262,     0,
     2916     106,  1200,   247,  1200,  1374,   289,   123,   943,    65,     0,
     2917     247,   814,   417,   591,   343,   336,   680,   422,   339,   123,
     2918     214,   389,   101,    65,   943,    67,    68,    65,  1001,    67,
     2919      68,   399,   588,   399,  1440,  1366,  1367,   358,    54,   102,
     2920    1446,   362,   620,   205,   365,   108,   103,   625,    65,   417,
     2921      67,    68,   944,   108,   422,  1461,   424,   101,   102,   943,
     2922    1466,   524,   108,   101,   106,   634,   635,   636,   106,   124,
     2923     399,   102,   101,   235,   268,   631,  1275,   108,   124,   101,
     2924     448,   275,   651,  1416,   102,   289,   103,   688,   104,   688,
     2925    1423,   107,   101,   859,  1010,  1011,   467,   108,   419,   420,
     2926     464,   247,    83,    84,   472,   267,   252,   344,   686,   710,
     2927    1374,   710,   480,   124,   480,   108,   484,   913,   484,   448,
     2928     488,   747,   101,   411,   655,   446,   985,   646,   449,  1462,
     2929     292,   124,   101,  1116,   455,   484,   152,   118,   119,   952,
     2930     446,   512,   430,   449,   837,   687,   467,   687,   342,   455,
     2931     438,   435,   108,   104,   687,   484,   725,   108,   529,   488,
     2932     104,   532,   689,   534,   108,   359,   687,   687,   124,   363,
     2933     247,   492,   687,   494,   108,   496,   689,   339,   687,   837,
     2934     922,   108,   760,   949,  1275,   469,   507,   482,   930,   510,
     2935     124,   512,   513,   108,   482,   484,   484,   124,   214,   798,
     2936     101,   507,  1094,   524,   510,   108,   111,   513,   104,   124,
     2937     581,   116,   117,   101,   108,   419,   420,  1416,   102,   108,
     2938     588,   124,   685,   507,  1423,    65,   510,    67,    68,   513,
     2939     124,   973,   600,    67,   602,   124,   473,    71,   680,   484,
     2940      74,   101,    76,   103,   102,   814,   108,   484,   653,    83,
     2941     108,   111,   268,   621,   102,  1346,   577,   419,   420,   275,
     2942     816,   101,   124,  1462,   820,   411,   106,   588,   104,   637,
     2943     591,   600,   108,   602,   102,   104,   101,   876,   103,   108,
     2944     722,   652,   650,   654,   430,   653,   111,   113,   114,  1080,
     2945     948,   102,   438,   104,   874,   507,   759,   108,   510,   620,
     2946     589,   513,   101,   507,   625,   669,   510,   104,   102,   513,
     2947     631,   108,   123,   124,   894,   101,   103,   103,   105,   687,
     2948     102,   689,   109,    65,   102,   111,   342,    69,   101,  1420,
     2949     108,  1422,   494,   107,    76,    77,    85,    86,   484,   634,
     2950     635,   636,   103,   359,   105,   102,    57,   363,   109,   720,
     2951     512,   108,   954,   909,   108,   109,   651,   102,   687,   101,
     2952     689,   880,   566,   108,   685,   733,   734,   102,   124,   111,
     2953     102,   102,  1463,   108,   208,   102,   108,   108,   101,   747,
     2954      29,   108,   102,   102,   668,   622,   707,   101,   108,   108,
     2955     989,   686,   680,   677,   102,   922,   102,   681,   686,   104,
     2956     108,   707,   108,   930,   733,   734,   124,   484,   424,   922,
     2957      65,   106,    67,    68,    69,   577,   737,   930,  1468,   102,
     2958     106,    76,    77,  1001,  1468,   108,  1468,   621,   124,   591,
     2959     725,    80,    81,    63,   722,   124,   102,   801,   759,    65,
     2960    1039,    65,   108,   637,   106,    69,   101,   811,   102,   102,
     2961      80,    44,    76,    77,   108,   108,   650,   825,   620,   101,
     2962     102,   103,   826,   625,   121,   760,   123,    60,   101,   837,
     2963      63,    75,   760,    66,    81,    82,   713,   101,   278,    10,
     2964      11,    12,    13,    14,   114,   104,    65,   111,    67,    68,
     2965     727,   291,   292,   102,   103,   816,   825,   112,    65,   820,
     2966      67,    68,    69,   303,   120,   101,    37,   103,   837,  1110,
     2967     121,  1110,   346,     3,   348,   101,   887,   103,  1037,   814,
     2968      10,    11,    12,    13,    14,  1081,   101,   157,   103,    60,
     2969      87,   101,   821,   103,   680,   123,    78,    79,    80,   339,
     2970     103,   909,   555,   556,   557,   558,   101,    37,   101,   102,
     2971     103,   144,   101,   747,   922,   101,   102,   103,  1136,   101,
     2972     104,   103,   930,   105,   157,   104,  1167,  1168,  1167,  1168,
     2973      60,   101,   588,   103,   102,   375,   722,   101,   102,   103,
     2974     948,   818,  1234,  1235,  1236,    54,    55,   217,   909,   182,
     2975     239,   102,   913,   922,   953,   101,   101,   103,   887,   887,
     2976     434,   930,   101,   104,   103,   621,    65,   913,    67,    68,
     2977      69,   982,   205,   101,   985,   103,   987,    76,    77,   948,
     2978     101,   637,   103,   102,   217,   255,  1014,   911,   692,   259,
     2979     694,   952,   953,   954,   650,   108,   109,  1215,    42,    43,
     2980     551,   552,   887,   104,     4,     5,     6,     7,     8,     9,
     2981     887,   553,   554,   559,   560,  1019,  1020,   102,   102,   102,
     2982     887,   103,   108,   101,  1035,   123,   106,   104,   102,     0,
     2983       1,   102,   104,   109,  1045,   104,   104,  1048,  1049,  1050,
     2984    1001,   104,     4,     5,     6,     7,     8,     9,   109,   108,
     2985      28,    75,   102,   102,   106,   109,   104,  1102,   124,   102,
     2986      31,    32,    62,   108,    64,   107,   107,  1449,   953,   107,
     2987      32,  1075,  1076,    44,   344,   101,    10,    11,    12,    13,
     2988      14,   102,    75,   102,   102,   374,   109,  1022,   102,   102,
     2989     323,   747,   102,  1196,  1102,    66,   108,   102,   102,   102,
     2990      62,   887,    64,    37,   102,   102,  1488,   102,   548,   549,
     2991     550,   102,   102,  1042,  1042,   102,   102,   102,   102,  1080,
     2992    1081,   102,    28,   102,   124,   107,    60,  1004,   104,  1053,
     2993     102,    65,   103,   102,  1080,    69,   104,  1378,   102,  1378,
     2994     123,   107,    76,    77,   104,   108,   102,   102,   102,   108,
     2995     101,   591,   954,   423,   106,   108,   104,  1042,   108,   102,
     2996     102,   108,   108,   102,   453,  1042,   399,   101,   104,   458,
     2997     887,   101,   101,   144,   101,   101,   101,   111,  1045,   124,
     2998    1179,   152,   153,   104,   107,   109,   102,   102,  1196,  1200,
     2999     102,   124,   106,   121,   107,  1436,  1437,  1436,  1437,  1001,
     3000     108,  1136,   491,   473,   493,   104,   108,   104,  1136,  1213,
     3001     102,   182,   102,   102,   102,    45,    63,   104,   104,   104,
     3002    1219,   104,   104,  1234,  1235,  1236,   197,   104,   124,   200,
     3003     201,   124,   101,  1475,   205,  1196,   953,   107,  1242,   102,
     3004       4,     5,     6,     7,     8,     9,  1250,  1251,  1252,   124,
     3005     669,   124,   124,   909,   107,   226,  1042,   102,  1219,   230,
     3006     104,   232,   104,   104,   107,   104,   104,   114,   104,   104,
     3007     241,  1200,  1200,   104,   102,   102,   247,  1288,   104,   104,
     3008     101,   252,    55,   723,    54,   102,  1468,  1215,  1468,   102,
     3009    1294,   262,   106,  1178,  1179,  1468,    75,     0,    62,   270,
     3010      64,  1178,  1469,   109,   124,   104,  1305,  1468,  1468,   104,
     3011     157,   102,   104,  1468,  1359,  1200,  1469,   102,    89,  1468,
     3012     101,  1488,   104,  1200,   594,  1042,  1261,   767,    31,  1340,
     3013     107,    40,  1343,  1200,  1219,  1488,  1180,  1181,   124,  1183,
     3014     102,   102,   102,   102,  1305,  1189,  1275,  1275,  1192,   124,
     3015    1358,  1359,   622,   642,   108,  1366,  1367,   627,   109,  1283,
     3016     102,    89,   102,    66,   464,   336,   124,    75,   339,   124,
     3017     217,  1382,   109,   813,   345,   102,  1387,   107,   104,   104,
     3018     124,   101,   801,   107,   107,  1270,   102,   358,   124,   102,
     3019    1275,   362,   811,  1270,   365,   561,  1395,   665,  1275,  1410,
     3020     562,   564,   563,  1117,  1449,   565,  1200,   826,   255,  1348,
     3021    1437,  1496,   259,   702,  1200,  1284,  1452,  1468,  1112,   708,
     3022    1305,  1288,  1468,  1113,  1468,  1071,  1423,   930,   458,   446,
     3023     446,   694,   581,    65,  1395,    67,    68,    69,   932,  1450,
     3024     411,  1449,   974,   713,    76,    77,   647,   880,  1459,   737,
     3025     153,   950,  1219,  1464,   425,   484,   747,   727,   569,   430,
     3026    1468,  1469,  1179,  1469,  1425,   569,  1477,   438,  1479,   101,
     3027      -1,    -1,  1483,  1340,   569,  1486,  1343,    -1,    -1,  1425,
     3028    1488,  1492,  1488,  1200,    -1,  1496,    -1,  1416,  1416,  1275,
     3029      -1,  1452,    -1,   464,  1423,  1423,   467,   344,  1342,  1468,
     3030    1424,    -1,  1219,    -1,    -1,    65,  1452,    67,    68,    69,
     3031    1395,   482,    -1,   484,  1475,  1382,    76,    77,    -1,    -1,
     3032    1387,   492,    -1,   226,  1358,   496,    -1,  1451,    -1,    -1,
     3033      -1,  1416,    -1,  1462,  1462,    -1,    -1,    -1,  1423,  1416,
     3034    1196,   101,    -1,  1410,   247,    -1,  1423,    -1,   818,   252,
     3035      -1,   111,    -1,   524,   525,    -1,    -1,    -1,  1275,    -1,
     3036      -1,  1001,    65,  1487,    67,    68,    69,    -1,    -1,   669,
     3037      -1,    -1,    -1,    76,    77,  1499,   423,  1462,    10,    11,
     3038      12,    13,    14,    -1,    -1,  1462,    -1,    -1,  1305,    -1,
     3039      -1,   880,    -1,    -1,    -1,    -1,    -1,   886,   101,   570,
     3040    1019,  1020,  1042,    -1,    -1,    37,    -1,    -1,   111,    -1,
     3041    1477,    -1,    -1,    -1,    -1,     0,  1483,   588,   589,    -1,
     3042     591,    -1,    -1,    -1,    -1,  1492,   473,    -1,    60,  1496,
     3043    1416,   602,    -1,    -1,    -1,    -1,    -1,  1423,    -1,    -1,
     3044      -1,    -1,   345,    -1,    -1,    -1,    31,    -1,    -1,   620,
     3045      -1,    -1,    -1,    -1,   625,    -1,  1075,  1076,    -1,    -1,
     3046     631,    -1,    -1,   634,   635,   636,    -1,    -1,    -1,   101,
     3047      -1,   103,    -1,  1475,    -1,    -1,  1462,    -1,  1395,   111,
     3048     651,    66,    63,    -1,    -1,   974,    -1,    -1,    -1,    -1,
     3049      -1,    -1,    73,    -1,     0,     1,    -1,    -1,   669,  1416,
     3050      -1,   801,  1358,    -1,    -1,    -1,  1423,    -1,   411,   680,
     3051      -1,   811,    65,  1153,   685,   686,    69,    -1,   689,    -1,
     3052      -1,     3,   425,    76,    77,    31,   826,   430,    10,    11,
     3053      12,    13,    14,   114,  1004,   438,    -1,    -1,    -1,    -1,
     3054      -1,    -1,    -1,    -1,    -1,  1462,    -1,   594,   101,    -1,
     3055     103,   722,    -1,    -1,   725,    37,    -1,    63,   111,    -1,
     3056      66,   464,     3,   734,    -1,    -1,   737,    -1,   153,    10,
     3057      11,    12,    13,    14,    -1,   622,   157,    -1,    60,   482,
     3058     627,   484,  1071,    -1,    -1,    -1,    -1,    -1,   759,   760,
     3059      -1,    -1,    -1,    -1,   765,    -1,    37,    -1,    -1,    -1,
     3060      -1,    -1,    10,    11,    12,    13,    14,    -1,    10,    11,
     3061      12,    13,    14,    -1,    -1,    -1,    -1,    -1,   185,    60,
     3062      -1,    -1,   525,  1242,    -1,   192,    -1,    -1,    -1,    37,
     3063     801,  1250,  1251,  1252,    -1,    37,   217,    -1,    -1,    -1,
     3064     811,    -1,    -1,   814,    -1,   816,    -1,   153,   819,   820,
     3065     821,    -1,    60,    -1,    -1,   826,    -1,    65,    60,    67,
     3066      68,    69,   247,    -1,    -1,   836,   713,   252,    76,    77,
     3067      -1,    -1,    -1,    -1,   255,  1294,    -1,    -1,   259,    -1,
     3068     727,    -1,    -1,     0,    -1,  1174,   589,    -1,    -1,    -1,
     3069      -1,    -1,    -1,   101,   275,   103,    -1,   264,    -1,   101,
     3070      -1,   103,    -1,   111,    -1,    -1,    -1,    -1,  1178,   111,
     3071      -1,   217,    -1,    -1,    31,    -1,   887,    -1,    -1,  1019,
     3072    1020,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3073      -1,   634,   635,   636,    -1,    -1,    -1,    -1,   909,    -1,
     3074      -1,   247,    -1,    -1,    -1,    -1,    -1,    -1,   651,    66,
     3075      -1,   318,    -1,    10,    11,    12,    13,    14,    -1,   326,
     3076     345,    -1,   329,   344,    -1,    -1,   669,    -1,    -1,    -1,
     3077      -1,   818,    -1,   944,    -1,  1075,  1076,   680,    -1,    -1,
     3078      37,   952,   953,   686,    -1,    -1,    -1,    65,    -1,    67,
     3079      68,    69,    -1,    25,    26,    27,   967,    -1,    76,    77,
     3080    1270,    -1,    -1,    60,    90,    91,    92,    93,    94,    95,
     3081      96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,   722,
     3082      -1,    -1,   725,   101,   391,   103,   411,    -1,   395,    -1,
     3083    1001,   109,    -1,   111,    -1,    -1,   153,   123,    -1,    -1,
     3084     425,    -1,   423,  1014,   101,   430,   103,    -1,  1019,  1020,
     3085      -1,  1022,  1023,   438,   111,    -1,    -1,   760,    -1,   440,
     3086      -1,    -1,    -1,    -1,    96,    -1,    98,    -1,    -1,    -1,
     3087      -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   464,
     3088      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3089      -1,    -1,   473,    -1,    -1,    -1,    -1,   482,   801,   484,
     3090      -1,    -1,    -1,    -1,  1075,  1076,    -1,    -1,   811,    37,
     3091    1081,   814,   479,  1213,    -1,    -1,   819,    -1,   821,   425,
     3092      -1,    -1,    -1,   826,    -1,    -1,    -1,    -1,    -1,    -1,
     3093     247,    -1,    60,    -1,    -1,   252,    -1,    65,    -1,    -1,
     3094     525,    69,  1242,    -1,    -1,   177,    -1,    -1,    76,    77,
     3095    1250,  1251,  1252,    -1,    -1,   187,   188,  1004,    -1,    -1,
     3096     192,    -1,   194,   195,    -1,  1136,    -1,    -1,    -1,    -1,
     3097      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,   484,    -1,
     3098      -1,    -1,    -1,   111,   887,    65,    -1,    67,    68,    69,
     3099      -1,    -1,    -1,    -1,  1294,    -1,    76,    77,    -1,    -1,
     3100      -1,     0,   569,   570,   589,    -1,    -1,    -1,  1179,    -1,
     3101      -1,    -1,    -1,   594,    -1,    -1,    -1,    -1,    -1,   525,
     3102      -1,   101,    -1,   103,    -1,  1196,    -1,    -1,   345,  1200,
     3103      -1,   111,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3104      -1,   622,  1213,    -1,  1215,    -1,   627,    -1,  1219,   634,
     3105     635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3106      -1,    -1,    -1,    -1,   967,    -1,   651,    66,    -1,    -1,
     3107      -1,  1242,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1250,
     3108    1251,  1252,    -1,   589,   669,    -1,    -1,    -1,    -1,   656,
     3109    1261,  1262,    -1,   660,   411,   680,    -1,    -1,    -1,    -1,
     3110      -1,   686,    -1,    -1,  1275,    -1,    -1,    -1,   425,    -1,
     3111      -1,    -1,    -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,
     3112    1023,   438,    -1,  1294,    -1,    -1,   693,    -1,   634,   635,
     3113     636,  1178,   713,    -1,  1305,    -1,    -1,   722,    -1,  1042,
     3114     725,    -1,    -1,    -1,    -1,   651,   727,   464,    -1,    -1,
     3115      -1,    -1,    -1,    -1,   153,    -1,    -1,    -1,    -1,    -1,
     3116      -1,    -1,    -1,    -1,    -1,   482,   747,   484,    -1,    -1,
     3117      -1,    -1,  1075,  1076,    -1,   760,    -1,    -1,    -1,    -1,
     3118      -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3119      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3120      25,    26,    -1,  1374,    29,    30,    31,    -1,   525,    -1,
     3121      -1,    -1,    37,    38,    -1,    -1,   801,    -1,    -1,   725,
     3122      -1,    -1,    -1,  1270,  1395,    -1,   811,    -1,    -1,   814,
     3123      -1,    -1,    -1,  1136,   819,    60,   821,   818,   805,    -1,
     3124      -1,   826,    67,    68,    -1,  1416,    -1,    -1,   247,    -1,
     3125      -1,    -1,  1423,   252,    -1,    -1,    -1,    -1,    -1,    -1,
     3126      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
     3127      14,    -1,   589,    -1,    -1,    -1,  1179,    -1,   103,    -1,
     3128      -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3129      -1,  1462,    65,    37,    67,    68,    69,  1200,  1469,    -1,
     3130      -1,    -1,   887,    76,    77,    -1,    -1,    -1,   814,    -1,
     3131    1213,    -1,  1215,    -1,    -1,   821,    60,   634,   635,   636,
     3132      -1,    65,    -1,    67,    68,    69,    -1,    -1,   101,    -1,
     3133     103,    -1,    76,    77,   651,    -1,    -1,    -1,   111,  1242,
     3134      -1,   573,   574,    -1,    -1,    -1,   345,  1250,  1251,  1252,
     3135     917,    -1,   669,    -1,    -1,    -1,    -1,   101,  1261,  1262,
     3136      -1,    -1,    -1,   680,    -1,    -1,    -1,   111,    -1,   686,
     3137      -1,   603,  1275,    -1,   606,   607,    -1,   609,    -1,   611,
     3138     612,   887,   967,    -1,   616,   617,    -1,    -1,    -1,    -1,
     3139      -1,  1294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3140      -1,    -1,    -1,    -1,    -1,   722,    -1,    -1,   725,    -1,
     3141      -1,    -1,   411,    -1,    -1,    -1,    65,    -1,    67,    68,
     3142      69,    -1,    -1,  1004,   991,    -1,   425,    76,    77,    -1,
     3143      -1,   430,    -1,    -1,  1019,  1020,    -1,  1022,  1023,   438,
     3144    1007,    -1,    -1,   760,    50,    -1,    52,   953,    -1,    55,
     3145      56,    57,   101,    59,   103,    -1,    -1,  1042,    -1,    -1,
     3146      -1,   967,   111,    -1,    -1,   464,   698,   699,    74,    -1,
     3147      -1,  1374,   704,    10,    11,    12,    13,    14,    -1,    -1,
     3148      86,    87,    -1,   482,   801,   484,    -1,    -1,    -1,    -1,
     3149    1075,  1076,    -1,    -1,   811,    -1,    -1,   814,    -1,    -1,
     3150      37,    -1,   819,    -1,   821,    -1,    -1,    -1,    -1,   826,
     3151      -1,    -1,    -1,  1416,    -1,  1082,  1022,  1023,    -1,    -1,
     3152    1423,    -1,    -1,    60,    -1,    -1,   525,    -1,    65,    -1,
     3153      67,    68,    69,    -1,    -1,    -1,  1042,    -1,    -1,    76,
     3154      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3155      -1,  1136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1462,
     3156      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3157     887,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    31893158      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3190      101,    -1,   103,    -1,    -1,   101,   558,   212,    -1,   379,
    3191      111,  1238,    -1,   383,   575,   111,   586,    -1,   588,    -1,
    3192       -1,   573,    -1,   575,    -1,    -1,    -1,    -1,    -1,   462,
    3193       -1,   583,   790,  1325,  1326,  1327,   588,    -1,    -1,    -1,
    3194     1267,  1230,   800,    -1,   249,    -1,    -1,  1339,   253,    -1,
    3195       -1,  1278,  1279,  1280,   606,    -1,    -1,    -1,   816,   611,
    3196       -1,    -1,    -1,    -1,   269,   617,    -1,    -1,    -1,   621,
    3197      622,    -1,    -1,    -1,    -1,   333,    -1,    -1,    -1,    -1,
    3198       -1,    -1,    -1,    -1,   636,    90,    91,    92,    93,    94,
    3199       95,    96,    97,    98,    99,   353,    -1,  1389,   468,    -1,
    3200      670,  1328,   654,  1395,    -1,    -1,   676,    -1,   678,    -1,
    3201       -1,    -1,    -1,    -1,    -1,   667,    -1,    -1,   123,    -1,
    3202       -1,    -1,    -1,   675,    -1,    -1,   678,   332,    -1,    -1,
    3203       -1,    -1,    -1,    25,    26,    27,     0,    -1,    -1,    -1,
    3204       -1,   399,    -1,    -1,  1436,   578,    -1,    -1,  1440,    -1,
    3205       -1,   712,   722,   723,    -1,   413,    -1,    -1,    -1,   711,
    3206      418,    -1,   714,    -1,    -1,    -1,    -1,    31,   426,    -1,
    3207     1470,   723,    -1,    -1,   726,   608,    -1,    -1,  1470,    -1,
    3208      613,  1473,  1474,    -1,    -1,    -1,    -1,   557,   558,    -1,
    3209       -1,    -1,    -1,    -1,   755,   453,   748,    -1,    -1,  1499,
    3210       -1,   753,    66,    95,    -1,    97,   411,  1499,    -1,  1501,
    3211       -1,    -1,    -1,   471,    -1,   473,    -1,    -1,    -1,    -1,
    3212       -1,    -1,    -1,   428,    -1,  1525,    -1,    -1,    -1,    -1,
    3213       -1,    -1,    -1,  1525,    -1,    -1,    -1,    -1,   790,    -1,
    3214       -1,    -1,    -1,    -1,    -1,   815,    -1,    -1,   800,    -1,
    3215       -1,    -1,    -1,   805,   806,   513,   826,   462,    -1,    -1,
    3216      812,    -1,    -1,    -1,   816,  1023,  1024,    -1,    -1,   702,
    3217       -1,   641,    -1,   825,    -1,   645,    -1,    -1,    -1,    -1,
    3218       -1,    -1,   174,   716,    -1,    -1,   150,    -1,    -1,    -1,
    3219       -1,   183,   184,    -1,    -1,    -1,   188,    -1,   190,   191,
    3220      670,    -1,    -1,    -1,    -1,   857,    -1,    -1,    -1,    -1,
    3221       -1,    -1,   682,    -1,    -1,   573,    -1,    -1,    -1,    -1,
    3222       -1,    -1,  1080,  1081,    -1,   877,    -1,    -1,    -1,    -1,
    3223       -1,   892,    -1,    -1,    -1,    -1,  1525,   907,   908,    -1,
    3224       -1,     0,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   901,
    3225      920,    -1,    -1,    -1,    -1,    -1,   908,    -1,   928,    -1,
    3226       -1,    -1,    -1,   621,   622,    -1,    10,    11,    12,    13,
    3227       14,   804,    31,   578,    -1,    -1,   946,   241,   636,    -1,
    3228       -1,    -1,   246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3229      942,    -1,    -1,    37,    -1,    -1,   654,    -1,   950,   951,
    3230       -1,    -1,    -1,   608,    -1,    -1,    -1,    66,   613,   667,
    3231       -1,    -1,    -1,   965,    -1,    -1,    60,   675,    -1,    -1,
    3232       -1,    65,    -1,    67,   794,    69,    -1,   979,    -1,    -1,
    3233       -1,    -1,    76,    77,    -1,    -1,    -1,    -1,   999,    -1,
    3234       -1,    -1,    -1,    -1,    -1,   997,    -1,   999,    -1,    -1,
    3235       -1,    -1,    -1,   711,    -1,    -1,   714,   101,    -1,   103,
    3236       10,    11,    12,    13,    14,  1017,    -1,   111,    -1,   333,
    3237       -1,  1023,  1024,    -1,  1026,  1027,  1028,    -1,    -1,    -1,
    3238     1238,    -1,    -1,    -1,    -1,    -1,  1047,    37,    -1,   353,
    3239      748,   150,    -1,    -1,    -1,  1047,    -1,   702,    -1,    -1,
    3240       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1267,
    3241       60,   716,    -1,    -1,    -1,    65,    -1,    67,  1088,    69,
    3242     1278,  1279,  1280,    -1,    -1,    -1,    76,    77,  1080,  1081,
    3243       -1,   736,   790,    -1,    -1,   399,    -1,   907,   908,  1091,
    3244     1092,    -1,   800,    -1,    -1,   915,    -1,   805,   806,   413,
    3245       -1,   101,    -1,   103,   418,    -1,    -1,    -1,   816,    -1,
    3246       -1,   111,   426,    10,    11,    12,    13,    14,    -1,  1002,
    3247     1328,    -1,    -1,    -1,    -1,  1127,    -1,    -1,    -1,    -1,
    3248       -1,    -1,   241,    -1,    -1,    -1,    -1,   246,    -1,   453,
    3249       37,    -1,    -1,    -1,    -1,    -1,  1148,    -1,  1150,   804,
    3250       -1,    -1,    -1,  1155,  1156,  1157,    -1,   471,    -1,   473,
    3251     1171,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,   877,
    3252       67,   991,    69,    10,    11,    12,    13,    14,    -1,    76,
    3253       77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3254     1010,    -1,    -1,   901,    -1,    -1,  1198,    -1,    -1,   513,
    3255       37,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    3256       -1,    -1,    -1,  1215,   111,    -1,    -1,  1219,    -1,   561,
    3257      562,    -1,    -1,    60,   333,    -1,    -1,  1229,    65,    -1,
    3258       -1,    -1,    69,    -1,    -1,    -1,  1238,    -1,  1240,    76,
    3259       77,    -1,  1244,    -1,   353,    -1,    -1,   589,    -1,    -1,
    3260      592,   593,    -1,   595,    -1,   597,   598,   965,    -1,   573,
    3261      602,   603,    -1,    -1,   101,  1267,   103,    -1,  1088,    -1,
    3262       -1,    -1,    -1,  1093,   111,    -1,  1278,  1279,  1280,    -1,
    3263       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1290,  1291,
    3264      399,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,  1304,    -1,   413,    -1,    -1,   621,   622,   418,
    3266       -1,    -1,    -1,    -1,  1197,  1023,  1024,   426,  1026,  1027,
    3267     1028,    -1,   636,    -1,    -1,  1327,  1328,    10,    11,    12,
    3268       13,    14,    -1,    -1,    -1,    -1,    -1,  1339,    -1,  1047,
    3269      654,    -1,    -1,    -1,   453,   687,   688,  1002,    -1,    -1,
    3270       -1,   693,    -1,   667,    37,    -1,    -1,    -1,    -1,    -1,
    3271       -1,   675,   471,    -1,   473,    -1,    -1,    -1,    -1,    -1,
    3272       -1,    -1,  1080,  1081,    -1,    -1,    -1,    60,    -1,    -1,
    3273       -1,    -1,    65,  1091,     0,    -1,    69,  1389,    -1,    -1,
    3274       -1,    -1,    -1,    76,    77,    -1,    -1,   711,    -1,    -1,
    3275      714,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,    -1,
    3276       -1,    -1,    -1,    -1,  1416,    31,  1299,    -1,   101,    -1,
    3277       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3278       -1,    -1,    -1,    -1,   748,    -1,    -1,    -1,  1440,    -1,
    3279       -1,    -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,
    3280       66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1461,
    3281       -1,    -1,    -1,    -1,   573,    -1,  1468,    -1,    -1,    -1,
    3282       -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
    3283       -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,    -1,    -1,
    3284     1198,   805,   806,    -1,    -1,    -1,    -1,  1517,    -1,    -1,
    3285       -1,    -1,   816,    -1,    -1,    -1,    -1,  1215,    -1,  1511,
    3286       -1,  1219,   621,   622,    -1,    -1,  1518,    -1,    -1,    -1,
    3287       -1,    -1,    -1,     0,     1,    -1,    -1,   636,    -1,    -1,
    3288     1238,    -1,  1240,    -1,   150,    -1,    -1,    -1,    -1,    -1,
    3289       -1,    -1,  1197,    -1,    -1,   654,    -1,    -1,    -1,    10,
    3290       11,    12,    13,    14,    31,    -1,    -1,    -1,   667,  1267,
    3291       -1,    -1,    -1,   877,    -1,    -1,   675,    -1,    -1,    -1,
    3292     1278,  1279,  1280,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    3293       -1,    -1,  1290,  1291,    -1,    -1,    63,   901,    -1,    66,
    3294       -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,    -1,    60,
    3295       -1,    -1,   711,    -1,    65,   714,    -1,    -1,    69,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,
    3297     1328,    -1,    -1,    -1,    -1,   241,    -1,    -1,    -1,    -1,
    3298      246,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,
    3299      101,    -1,    -1,    -1,  1299,    -1,    -1,    -1,    -1,    -1,
    3300      111,   965,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,
     3159     589,    -1,    -1,    -1,  1179,    -1,    -1,  1178,    10,    11,
     3160      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3161      22,    23,    24,    25,    26,  1200,    -1,    29,    30,    31,
     3162      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,  1213,    -1,
     3163    1215,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,    -1,
     3164      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3165     967,    -1,   651,    -1,    -1,    67,    68,  1242,    -1,    -1,
     3166      -1,    -1,    -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,
     3167     669,    -1,  1178,  1179,    -1,    -1,  1261,  1262,    -1,    -1,
     3168      -1,   680,    -1,    -1,    -1,    -1,    -1,   686,    -1,  1270,
     3169    1275,   103,    -1,    -1,  1200,   107,    -1,    -1,    -1,   111,
     3170      -1,    -1,  1019,  1020,    -1,  1022,  1023,    -1,    -1,  1294,
     3171      -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
     3172      -1,    -1,    -1,   722,    -1,  1042,   725,    -1,    -1,    -1,
     3173      -1,    -1,    -1,   339,   340,    -1,    -1,    -1,    -1,    -1,
     3174      -1,    -1,    -1,    -1,    -1,   351,   352,    -1,    -1,    -1,
     3175      -1,    -1,    -1,    -1,    -1,  1261,  1262,    -1,  1075,  1076,
     3176      -1,   760,    -1,    -1,  1270,    -1,    -1,    -1,    -1,  1275,
     3177      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3178      19,    20,    21,    22,    23,    24,    25,    26,    27,  1374,
     3179      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,  1305,
     3180      -1,    -1,   801,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3181      -1,    -1,   811,    -1,    -1,   814,    -1,    -1,    -1,  1136,
     3182     819,    60,   821,    -1,    -1,    -1,    -1,   826,    67,    68,
     3183      -1,  1416,    71,    -1,    -1,    -1,    -1,    -1,  1423,    -1,
     3184      -1,    -1,    -1,    -1,    -1,  1077,    -1,    10,    11,    12,
     3185      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3186      -1,    -1,  1179,    -1,   103,    -1,    -1,    -1,  1374,    -1,
     3187      -1,    -1,   111,    -1,    37,    -1,    -1,  1462,    -1,    -1,
     3188      -1,    -1,    -1,  1200,    -1,    -1,    -1,    -1,   887,  1395,
     3189      -1,    -1,    -1,    -1,    -1,    -1,  1213,    60,  1215,    -1,
     3190      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3191    1416,    -1,    -1,    76,    77,    -1,    -1,  1423,    -1,    -1,
     3192      -1,    -1,    -1,    -1,    -1,  1242,    -1,    -1,    -1,    -1,
     3193      -1,    -1,    -1,  1250,  1251,  1252,    -1,    -1,   101,    -1,
     3194     103,    -1,    -1,    -1,  1261,  1262,    -1,    -1,   111,    -1,
     3195      -1,    -1,    -1,    -1,    -1,    -1,  1462,    -1,  1275,    -1,
     3196      -1,    -1,    -1,    -1,    -1,  1197,    -1,    -1,   967,    -1,
     3197      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1294,    -1,     7,
     3198      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3199      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
     3200      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    37,
     3201      38,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
     3202    1019,  1020,    -1,  1022,  1023,    -1,    -1,    -1,    -1,    -1,
     3203      -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     3204      -1,    69,    -1,  1042,    72,    73,    74,    75,    76,    77,
     3205      -1,    79,    80,    -1,    -1,    -1,    -1,  1374,    -1,    87,
     3206      -1,   109,    -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,
     3207      -1,    -1,    -1,   101,    -1,   103,  1075,  1076,    -1,    -1,
     3208      -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
     3209      -1,    -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,  1416,
     3210      -1,    -1,    -1,    -1,    -1,   153,  1423,    -1,   714,   157,
     3211     716,    -1,    -1,    -1,    -1,    -1,    -1,   723,   724,    -1,
     3212      -1,    -1,   728,    -1,     7,    -1,    -1,    10,    11,    12,
     3213      13,    14,    -1,    -1,   740,    -1,    -1,  1136,    -1,   745,
     3214      -1,    -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,    -1,
     3215      -1,    -1,    -1,    36,    37,    38,    -1,   205,    -1,    -1,
     3216      -1,    -1,    -1,   769,    -1,    -1,    -1,    -1,    -1,   217,
     3217      -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
     3218    1179,    -1,    65,    -1,    -1,    -1,    69,   235,   236,    72,
     3219      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3220      -1,  1200,    -1,    -1,    87,    -1,    -1,   813,    -1,    -1,
     3221      -1,   259,    -1,    -1,  1213,    -1,  1215,    -1,   101,   267,
     3222     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3223     113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3224      -1,   289,    -1,  1242,   292,    -1,    -1,    -1,    -1,    -1,
     3225      -1,  1250,  1251,  1252,    -1,    -1,    -1,    -1,    -1,    -1,
     3226      -1,    -1,  1261,  1262,   870,   871,   872,   873,    -1,   875,
     3227      -1,    -1,    -1,    -1,    -1,    -1,  1275,    -1,    -1,    -1,
     3228      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,    -1,
     3229      -1,   339,    -1,    -1,    -1,  1294,   344,    -1,   904,    -1,
     3230      -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
     3231      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3232      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3233      30,    31,    32,    -1,    -1,    35,   942,    37,    -1,    -1,
     3234      -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    33013235      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3302       -1,    -1,    -1,   150,    -1,    -1,    -1,    -1,    -1,    -1,
    3303       -1,   790,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3304       -1,   800,    -1,    -1,    -1,    -1,   805,   806,    -1,    -1,
    3305       -1,    -1,    -1,    -1,    -1,    -1,    -1,   816,  1416,  1023,
    3306     1024,    -1,  1026,  1027,  1028,    -1,    -1,   333,    -1,    -1,
    3307       -1,    -1,    -1,    -1,    -1,    -1,    95,    -1,    97,    -1,
    3308       -1,    -1,    -1,  1047,    -1,   212,    -1,   353,    -1,    -1,
    3309     1082,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3310       -1,    -1,   121,  1461,    -1,    -1,    -1,    -1,    -1,    -1,
    3311     1468,    -1,    -1,    -1,   241,    -1,  1080,  1081,   877,    -1,
    3312       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1091,    -1,    -1,
    3313       -1,    -1,    -1,   399,    -1,    -1,    -1,    -1,    -1,    -1,
    3314       -1,    -1,   901,    -1,    -1,    -1,    -1,   413,    -1,    -1,
    3315       -1,    -1,   418,  1511,    -1,   174,    -1,    -1,    -1,    -1,
    3316      426,    -1,   181,    -1,   183,   184,    -1,    -1,    -1,   188,
    3317       -1,   190,   191,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3318       -1,    -1,    -1,    -1,    -1,    -1,  1150,   453,    -1,    -1,
    3319       -1,    -1,  1156,  1157,    -1,    -1,    -1,    -1,    -1,    -1,
    3320       -1,    -1,    -1,    -1,    -1,   471,   965,   473,    -1,    -1,
     3236      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
     3237      -1,   419,   420,   979,    -1,  1374,    -1,   425,    -1,    -1,
     3238     986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
     3239      -1,   997,    -1,    -1,    -1,  1001,  1002,  1003,   446,    -1,
     3240    1006,   449,    -1,   103,    -1,    -1,    -1,   455,    -1,  1015,
     3241      -1,   111,    -1,    96,    -1,    98,    -1,  1416,    -1,    -1,
     3242      -1,    -1,    -1,    -1,  1423,    -1,    -1,  1033,  1034,    10,
     3243      11,    12,    13,    14,   482,    -1,    -1,    -1,    -1,   122,
     3244      -1,    -1,    -1,    -1,    -1,    -1,   494,    -1,    -1,    -1,
     3245      -1,    -1,  1058,    -1,    -1,  1061,    37,    -1,    -1,   507,
     3246      -1,    -1,   510,  1462,   512,   513,    -1,    -1,    -1,    -1,
     3247      -1,    -1,    -1,    -1,    -1,    -1,    -1,   525,    -1,    60,
     3248      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3249      -1,    -1,    -1,  1099,   177,    76,    77,    -1,    -1,  1105,
     3250    1106,    -1,   185,    -1,   187,   188,    -1,    -1,  1114,   192,
     3251      -1,   194,   195,  1119,    -1,    -1,  1122,    -1,  1124,    -1,
     3252     101,  1127,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   577,
     3253     111,    -1,    -1,    -1,  1140,    -1,    -1,    -1,    -1,    -1,
     3254      -1,   589,    -1,   591,    -1,    -1,   594,  1153,    -1,  1155,
     3255    1156,  1157,  1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3256      -1,    -1,    -1,    -1,    -1,  1171,    -1,  1173,    -1,    -1,
     3257      -1,  1177,   620,    -1,    -1,    -1,    -1,   625,    -1,    -1,
     3258      -1,   264,    -1,    -1,    -1,    -1,   634,   635,   636,    -1,
     3259      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1205,
     3260    1206,    -1,    -1,   651,    -1,    -1,    -1,    63,    -1,    -1,
     3261      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    75,
     3262      -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,
     3263      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   686,    -1,
     3264      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1253,  1254,    -1,
     3265      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1263,   114,   707,
     3266     116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3267      -1,    -1,    -1,    -1,    -1,    -1,    -1,   725,    -1,   727,
     3268      -1,    -1,    -1,    -1,    -1,    -1,   142,    -1,    -1,    -1,
    33213269      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,    -1,  1216,    -1,   353,    -1,    -1,    -1,
    3323       -1,    -1,    -1,    -1,  1198,    -1,    -1,    -1,    -1,   258,
    3324       -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
    3325       -1,  1215,    -1,    -1,    -1,  1219,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,  1023,  1024,    -1,  1026,  1027,  1028,
    3327       -1,    -1,    -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,
    3328       -1,    -1,    -1,    -1,    -1,    -1,   413,    -1,  1047,    -1,
     3270      -1,   157,    -1,  1309,    -1,    -1,    -1,    -1,    -1,    -1,
     3271      -1,    -1,   760,    -1,    -1,  1321,    -1,  1323,  1324,  1325,
     3272      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,
     3273      -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1344,    -1,
    33293274      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3330       -1,    -1,    -1,  1267,    -1,    -1,    -1,   573,    -1,    -1,
    3331       -1,    -1,    -1,    -1,  1278,  1279,  1280,    -1,    -1,    -1,
    3332       -1,  1080,  1081,    -1,    -1,    -1,  1290,  1291,    -1,    -1,
    3333       -1,    -1,  1091,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3334     1304,    -1,    -1,    -1,    -1,    -1,   473,    -1,    -1,    -1,
    3335       -1,    -1,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,
    3336       -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
    3337      636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3338       -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,   654,    -1,
    3339       -1,  1150,    -1,    -1,    -1,    -1,    -1,  1156,  1157,    -1,
    3340       -1,   667,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   675,
    3341       -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    55,
    3342       56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,
    3343       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    74,  1198,
    3344       -1,    -1,    -1,    -1,    -1,   711,   573,    -1,   714,    85,
    3345       86,    -1,  1416,    -1,    -1,    -1,  1215,    -1,    -1,    -1,
    3346     1219,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3347       19,    20,    21,    22,    23,    24,    25,    26,    27,  1238,
    3348       -1,  1240,   748,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3349       -1,    -1,    -1,    -1,   621,   622,    -1,  1461,    -1,    -1,
    3350       -1,    -1,    -1,    -1,  1468,    -1,    -1,    -1,  1267,   636,
    3351       -1,    60,    -1,    -1,   150,    -1,    -1,    -1,    -1,  1278,
    3352     1279,  1280,    71,    -1,   790,    -1,    -1,    -1,    -1,    -1,
    3353       -1,  1290,  1291,    -1,   800,    -1,    -1,    -1,    -1,   805,
    3354      806,    -1,   561,   562,    -1,  1304,    -1,  1511,    -1,    -1,
    3355      816,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3356       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1328,
    3357      589,    -1,    -1,   592,   593,    -1,   595,    -1,   597,   598,
    3358       -1,    -1,    -1,   602,   603,    -1,    -1,   714,     4,     5,
    3359        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3360       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3361       26,   877,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3362       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3363       -1,    -1,    -1,    -1,    -1,   901,    -1,    -1,    -1,    -1,
    3364       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
    3365       -1,    67,    68,    69,    -1,    -1,    -1,  1416,    -1,    -1,
    3366       76,    77,    -1,   682,    -1,    -1,    -1,    -1,   687,   688,
    3367       -1,    -1,    -1,    -1,   693,    -1,    -1,    -1,    -1,   806,
    3368       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3369      326,    -1,   328,    -1,    -1,   111,    -1,    -1,    -1,   965,
    3370       -1,    -1,  1461,   339,   340,    -1,    -1,    -1,    -1,  1468,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,   353,    -1,     3,
    3372        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3373       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3374       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3375      877,    -1,  1511,    37,    -1,    -1,    -1,  1023,  1024,    -1,
    3376     1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3377       -1,    -1,    -1,    -1,   901,    -1,    60,   413,    62,    -1,
    3378       64,  1047,    -1,    67,    68,    -1,     4,     5,     6,     7,
     3275    1356,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3276      -1,   217,    -1,   219,   220,   221,   814,    -1,    -1,    -1,
     3277     818,    -1,    -1,   821,    -1,    -1,    -1,    -1,    -1,    -1,
     3278      -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3279      -1,    99,    -1,    -1,    -1,    -1,    -1,  1403,  1404,   255,
     3280      -1,    -1,    -1,   259,    -1,    -1,    -1,    -1,    -1,    -1,
     3281    1416,    -1,    -1,    -1,    -1,    -1,    -1,  1423,    -1,   275,
     3282      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3283      20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
     3284      30,    31,  1448,    -1,    -1,    -1,   154,    37,    -1,    -1,
     3285      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   167,
     3286      -1,    -1,    -1,    -1,    -1,   913,    -1,   323,  1474,    -1,
     3287      60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
     3288      -1,    71,   190,    -1,    -1,    -1,    76,    77,   344,    -1,
     3289     573,   574,  1498,   349,   350,    -1,   204,  1503,    -1,    -1,
     3290      -1,   357,    -1,    -1,    -1,   213,   954,    -1,    -1,    -1,
     3291      -1,   101,    -1,   103,    -1,   223,    -1,    -1,    -1,   967,
     3292     603,   111,    -1,   606,   607,    -1,   609,    -1,   611,   612,
     3293      -1,    -1,    -1,   616,   617,    -1,    -1,    -1,    -1,    -1,
     3294     248,    -1,    -1,   399,    -1,   253,    -1,    -1,    -1,    -1,
     3295      -1,    -1,    -1,  1001,    -1,    -1,    -1,    -1,   266,    -1,
     3296      -1,   417,    -1,    -1,   272,    -1,   274,   423,    -1,    -1,
     3297      -1,    -1,    -1,    -1,  1022,  1023,    -1,    -1,    -1,    -1,
     3298      -1,    -1,   290,    -1,   440,    -1,    -1,   443,   444,    -1,
     3299      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3300      -1,    -1,    -1,   459,    -1,    -1,    -1,    -1,    -1,    -1,
     3301     693,    -1,    -1,    -1,    -1,   698,   699,   473,    -1,    -1,
     3302      -1,   704,    -1,    -1,   480,   333,    -1,    -1,    -1,    -1,
     3303     338,    -1,  1080,     3,     4,     5,     6,     7,     8,     9,
     3304      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3305      20,    21,    22,    23,    24,    25,    26,    -1,   366,    29,
     3306      30,    31,   370,   371,    -1,   373,    -1,    37,    -1,    -1,
     3307      -1,   379,   380,    -1,   382,   383,    -1,   385,    -1,   387,
     3308      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1136,    -1,
     3309      60,    -1,    62,    -1,    64,    65,   404,    67,    68,    69,
     3310      -1,    -1,    -1,    -1,   412,    -1,    76,    77,    -1,    -1,
     3311      -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3312      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,    -1,
     3313    1178,   101,    -1,   103,    -1,    -1,    59,    -1,   594,   447,
     3314      -1,   111,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     3315      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3316      -1,    -1,   470,    -1,    87,    -1,   622,  1215,   476,    -1,
     3317      -1,   627,    -1,   481,    -1,    -1,    -1,    -1,   101,    -1,
     3318     103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
     3319     113,   114,   115,    -1,    -1,    -1,    -1,    -1,   152,   153,
     3320      -1,   124,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   517,
     3321      -1,    -1,    -1,  1261,  1262,    -1,    -1,    -1,    -1,    -1,
     3322      -1,    -1,  1270,    -1,    -1,   533,    -1,    -1,    -1,    -1,
     3323      -1,   185,    -1,    -1,    -1,    -1,    -1,    -1,   192,    10,
     3324      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3325      21,    22,    23,    24,    25,    26,    -1,   713,    29,    30,
     3326      31,   569,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3327     578,   727,    -1,    -1,    -1,    -1,    -1,   585,    -1,    -1,
     3328      -1,    -1,   590,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3329      -1,   747,    -1,   601,    65,    -1,    67,    68,    69,    -1,
     3330      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3331     264,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3332      -1,    -1,    -1,    -1,    -1,    -1,  1374,    -1,    -1,    -1,
     3333     101,    -1,   103,   641,    -1,   106,    -1,    -1,    -1,   110,
     3334     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   805,
     3335      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3336      -1,    -1,   818,    -1,   318,    -1,    -1,    -1,   676,    -1,
     3337      -1,    -1,   326,   327,    -1,   329,   330,  1425,    -1,    -1,
     3338      -1,   837,    -1,    -1,    -1,   339,    -1,    -1,    -1,   343,
     3339      -1,    -1,    -1,    -1,  1077,    -1,    -1,    -1,    -1,    -1,
     3340      -1,    -1,    -1,    -1,  1452,    -1,    -1,    -1,   362,    -1,
     3341      -1,   365,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3342      -1,    -1,    -1,   731,    -1,    -1,    -1,  1475,    -1,    -1,
     3343      -1,    -1,    -1,   741,   742,    -1,    -1,   391,    -1,    -1,
     3344      -1,   395,    -1,    -1,    -1,   753,    -1,    -1,    -1,    -1,
     3345      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3346      -1,    -1,   770,    -1,   772,    -1,   922,    -1,   776,    -1,
     3347      -1,   425,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3348      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,
     3349      -1,    -1,   948,    -1,   448,    -1,    -1,    -1,   153,    -1,
     3350      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3351     165,    -1,    -1,    -1,  1197,    -1,    -1,   973,    -1,    -1,
     3352      -1,    -1,    -1,    -1,    -1,   479,    -1,    -1,   482,    -1,
     3353      -1,    -1,    -1,   841,    -1,    -1,    -1,    -1,    -1,    -1,
     3354     848,    -1,    -1,    -1,    -1,    36,    -1,    38,  1004,    -1,
     3355      -1,    -1,    -1,   861,    -1,   863,    -1,    -1,    -1,  1015,
     3356      -1,    -1,    -1,    -1,    -1,    -1,    -1,   521,    59,   877,
     3357     524,   525,    -1,    -1,    65,   883,    -1,    -1,    69,    -1,
     3358     235,    72,    73,    74,    75,    76,    77,   895,    79,    80,
     3359     898,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3360      -1,    -1,    -1,    -1,    -1,   260,    -1,    -1,   916,    -1,
     3361     101,    -1,   103,    -1,    -1,   569,   570,    -1,   109,   110,
     3362     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
     3363      -1,    -1,    -1,    -1,   588,   589,    -1,   591,  1094,    -1,
     3364      -1,    -1,    -1,    -1,    -1,    -1,   600,    -1,   602,   603,
     3365      -1,    -1,    -1,    -1,    -1,   609,    -1,    -1,    -1,    -1,
     3366      -1,    -1,    -1,    -1,    -1,   619,   620,    -1,    -1,    -1,
     3367      -1,   625,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3368     634,   635,   636,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3369      -1,    -1,  1000,    -1,    -1,    -1,    -1,   651,    -1,    -1,
     3370      -1,    -1,   656,   657,    -1,    -1,   660,   661,    -1,    -1,
     3371      -1,    -1,    -1,   667,    -1,    -1,    -1,    -1,    -1,   374,
     3372      -1,    -1,  1178,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3373      -1,   685,   686,   687,    -1,   689,    -1,    -1,    -1,   693,
     3374      -1,    -1,    -1,    -1,    -1,    -1,    59,  1055,    -1,    -1,
     3375      -1,    -1,    65,  1061,    67,    68,    69,    -1,    -1,    72,
     3376      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3377      -1,   725,   726,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3378      -1,    -1,  1090,    -1,    -1,    -1,    -1,  1095,   101,    -1,
     3379     103,    -1,   105,   106,    -1,  1103,    -1,   110,   111,   112,
     3380     113,   114,   115,    -1,    -1,   759,   760,    -1,    -1,    -1,
     3381     764,   765,    -1,    -1,  1270,   276,   277,   278,   279,   474,
     3382      -1,    -1,    -1,  1131,    -1,   286,   287,    -1,    -1,    -1,
     3383     291,   292,    -1,    -1,    -1,  1143,    -1,    -1,  1146,    -1,
     3384    1148,    -1,   303,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3385      -1,   805,    -1,    -1,  1162,  1163,    -1,   512,    -1,    -1,
     3386     814,    -1,    -1,    -1,    -1,    -1,   820,   821,    -1,    -1,
     3387     525,   825,    -1,   827,    -1,    -1,  1184,   532,   339,    -1,
     3388      -1,    -1,    -1,   837,    -1,    -1,    -1,    -1,    -1,    -1,
     3389     545,   546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390      -1,    -1,  1210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3391      -1,    -1,   567,    -1,   375,    -1,    -1,    -1,    -1,    -1,
     3392      -1,    -1,   577,    -1,    -1,    -1,    -1,    -1,    -1,   584,
     3393      -1,    -1,    -1,    -1,   589,    -1,    -1,    -1,    10,    11,
     3394      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3395      22,    23,    24,    25,    26,   909,    -1,    29,    30,    31,
     3396      -1,    -1,    -1,   917,    -1,    37,    -1,    -1,   922,    -1,
     3397      -1,    -1,    -1,    -1,    -1,    -1,   930,    -1,    -1,    -1,
     3398      -1,    -1,    -1,    -1,   639,    -1,    -1,    -1,    60,   943,
     3399     944,   646,  1300,    -1,  1302,    67,    68,    -1,    -1,    -1,
     3400      -1,    -1,    -1,    -1,    -1,  1313,    -1,  1315,    -1,    -1,
     3401      -1,    -1,    -1,   967,    -1,    -1,    -1,    -1,    -1,   973,
     3402      -1,    -1,    -1,    -1,    -1,  1333,    -1,    -1,    -1,    -1,
     3403      -1,   686,  1488,    -1,    -1,    -1,    -1,   991,   992,   111,
     3404      -1,  1349,    -1,    -1,    -1,    -1,    -1,  1001,    -1,  1357,
     3405      -1,    -1,  1360,  1007,  1008,    -1,  1010,  1011,  1012,    -1,
     3406      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1022,  1023,
     3407      -1,    -1,  1380,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3408      -1,  1389,    -1,    -1,  1392,  1393,    -1,   548,   549,   550,
     3409     551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
     3410     561,   562,   563,   564,   565,   760,    -1,   762,    -1,    -1,
     3411      -1,    -1,    -1,   768,    -1,    -1,    -1,    -1,    -1,  1427,
     3412     775,  1429,    -1,    -1,    -1,    -1,    -1,  1081,  1082,  1083,
     3413     591,    -1,    -1,  1441,    -1,    -1,    -1,    -1,    -1,    -1,
     3414    1094,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3415      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3416      -1,    -1,    -1,   818,   819,    -1,   821,    -1,    -1,    -1,
     3417      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3418      -1,   836,  1136,     4,     5,     6,     7,     8,     9,    10,
     3419      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3420      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3421      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
     3422      -1,   876,    -1,    -1,    -1,   880,    -1,   688,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
     3424      -1,    62,  1196,    64,    65,    -1,    67,    68,    69,   710,
     3425      -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
     3426      -1,  1215,   723,    -1,    -1,    -1,    87,    -1,    -1,    -1,
     3427      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3428     101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,
     3429     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,   954,
     3430      -1,    -1,    -1,    -1,    -1,    -1,   767,  1261,  1262,    -1,
     3431      -1,    -1,   967,   968,    -1,    -1,    -1,    -1,    36,   974,
     3432      38,    -1,    -1,    -1,    -1,   980,    -1,    -1,   983,    -1,
     3433     985,    -1,    -1,    -1,    -1,    -1,    -1,   798,    -1,    -1,
     3434      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,  1004,
     3435      -1,    69,   813,    -1,    72,    73,    74,    75,    76,    77,
     3436    1015,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3437      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3438      -1,    -1,  1037,   101,  1039,   103,    -1,    -1,   106,    -1,
     3439      -1,    -1,   110,   111,   112,   113,   114,   115,    -1,  1054,
     3440      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3441      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1073,    -1,
     3442    1374,    -1,     0,    -1,    -1,     3,     4,     5,     6,     7,
    33793443       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    33803444      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3381       -1,    29,    30,    31,  1080,  1081,    -1,    -1,    36,    37,
    3382       38,    -1,   106,    -1,   951,  1091,    -1,    -1,    -1,    -1,
    3383       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,    -1,
    3384       -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,    67,
    3385       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3386       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3387       -1,    -1,    -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,
    3388       -1,    -1,    -1,   101,  1150,   103,   104,    -1,    -1,    -1,
    3389     1156,  1157,   110,   111,   112,   113,   114,   115,    -1,  1026,
    3390     1027,  1028,    10,    11,    12,    13,    14,    15,    16,    17,
    3391       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    3392     1047,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    3393       -1,    -1,  1198,    -1,    -1,    -1,    -1,   573,     7,    -1,
    3394       -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,  1215,
    3395       -1,    -1,    60,  1219,    -1,    -1,    -1,    -1,    -1,    -1,
    3396       -1,    -1,    -1,    71,  1091,    -1,    -1,    36,    37,    38,
    3397       -1,    -1,  1238,    -1,  1240,    -1,    -1,    -1,    -1,    -1,
    3398       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
    3399       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3400       69,  1267,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3401       79,    80,  1278,  1279,  1280,    -1,   652,    -1,    87,    -1,
    3402       -1,    -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,  1156,
    3403     1157,    -1,   101,    -1,   103,   671,   672,    -1,  1304,   675,
    3404       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3405       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3406       -1,    -1,  1328,  1082,    -1,    -1,    -1,   703,    -1,   705,
    3407     1197,  1198,    -1,    -1,    -1,    -1,   712,   713,    -1,    -1,
    3408       -1,   717,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,
    3409       -1,    -1,  1219,   729,    -1,    -1,    -1,    -1,   734,    -1,
    3410       -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3411       -1,    -1,   748,    -1,    -1,    -1,    -1,  1244,    -1,    -1,
    3412       -1,    -1,   758,    -1,    -1,    -1,    -1,    59,    -1,    -1,
    3413       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3414       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3415     1416,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3416       -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,   101,
    3417      806,   103,  1299,    -1,    -1,    -1,    -1,  1304,   110,   111,
    3418      112,   113,   114,   115,    63,    -1,    -1,    -1,    -1,   825,
    3419       -1,    -1,   124,    -1,    73,  1461,    75,  1216,    77,    -1,
    3420       -1,    -1,  1468,    -1,    -1,    84,    -1,    -1,    -1,    -1,
    3421       -1,     7,  1339,    -1,    10,    11,    12,    13,    14,    -1,
    3422       -1,    -1,   858,    -1,   860,   861,   862,    -1,    -1,   865,
    3423      866,    -1,    -1,    -1,   113,    -1,   115,   116,   117,    -1,
    3424       36,    37,    38,    -1,   880,  1511,    -1,    -1,    -1,    -1,
    3425       -1,    -1,    -1,    -1,    -1,    -1,   892,    -1,    -1,   895,
    3426       -1,   140,    -1,    59,    60,   901,    -1,    -1,    -1,    65,
    3427       -1,    -1,    -1,    69,    -1,   154,    72,    73,    74,    75,
    3428       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,  1416,
    3429       -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3430       -1,    -1,    -1,    -1,   940,   101,    -1,   103,    -1,    -1,
    3431       -1,    -1,    -1,  1440,   110,   111,   112,   113,   114,   115,
    3432       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   965,
    3433       -1,    -1,    -1,   212,  1461,   214,   215,   216,    -1,    -1,
    3434       -1,  1468,   978,    -1,    -1,    -1,    -1,   983,    -1,    -1,
    3435      986,    -1,    -1,    -1,   990,    -1,    -1,    -1,    -1,   995,
    3436       -1,    -1,    -1,   999,  1000,  1001,    -1,    -1,    -1,    -1,
    3437      249,    -1,    -1,  1009,   253,    -1,    -1,    -1,    -1,    -1,
    3438       -1,    -1,    -1,  1019,  1511,    -1,    -1,    -1,    -1,    -1,
    3439      269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3440       -1,    -1,  1038,  1039,    10,    11,    12,    13,    14,    15,
    3441       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3442       26,    -1,    -1,    29,    30,    31,    -1,  1063,    -1,    -1,
    3443     1066,    37,    38,    -1,    -1,    -1,    -1,    -1,   317,    -1,
    3444       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3445       -1,    -1,    -1,   332,    60,  1091,    -1,    -1,   337,   338,
    3446       -1,    67,    68,    -1,    -1,    -1,   345,    -1,    -1,    -1,
    3447       -1,    -1,    43,    -1,  1110,    -1,    -1,    -1,    -1,    -1,
    3448     1116,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1125,
    3449       -1,    -1,    -1,    -1,    -1,  1131,    -1,   103,  1134,    -1,
    3450     1136,   107,    -1,  1139,    -1,   111,    -1,    -1,   387,    -1,
    3451       -1,    -1,    -1,    -1,  1150,    -1,    -1,    88,  1154,    -1,
    3452       -1,    -1,    -1,    -1,    -1,    -1,   405,    98,    -1,    -1,
    3453       -1,    -1,   411,    -1,    36,  1171,    38,  1173,  1174,  1175,
    3454     1176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   428,
    3455       -1,    -1,   431,   432,  1190,    -1,  1192,    59,    -1,    -1,
    3456     1196,    -1,    -1,    65,    -1,    67,    -1,    69,    -1,   448,
    3457       72,    73,    74,    75,    76,    77,    -1,    79,    80,  1215,
    3458      151,    -1,    -1,   462,    -1,    87,    -1,    -1,  1224,  1225,
    3459      469,    -1,    -1,   164,    -1,    -1,    -1,    -1,    -1,   101,
    3460       -1,   103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,
    3461      112,   113,   114,   115,    -1,   186,    -1,    -1,    -1,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   200,
    3463       -1,    -1,    -1,    -1,    -1,    -1,    -1,   208,    -1,  1275,
    3464     1276,    -1,    -1,    -1,    -1,  1281,  1282,   218,    -1,    -1,
    3465       -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,    -1,   230,
    3466       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3467       -1,   242,    -1,    -1,    -1,    -1,   247,    -1,    -1,    -1,
    3468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   260,
    3469       -1,    -1,    -1,    -1,    -1,   266,    -1,   268,    -1,   578,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1343,    -1,    -1,
    3471       -1,    -1,    -1,   284,    -1,    -1,    -1,    -1,    -1,  1355,
    3472       -1,    -1,    -1,  1359,  1360,  1361,    -1,    -1,    -1,   608,
    3473       -1,    -1,    -1,    -1,   613,  1371,    -1,    -1,    -1,    -1,
    3474       -1,    36,    -1,    38,  1380,    -1,    -1,    -1,    -1,    -1,
    3475       -1,    -1,    -1,    -1,   325,    -1,    -1,    -1,    -1,    -1,
    3476     1396,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
    3477       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3478       75,    76,    77,   354,    79,    80,    -1,   358,   359,    -1,
    3479      361,    -1,    87,    -1,    -1,    -1,   367,   368,    -1,   370,
    3480      371,    -1,   373,    -1,   375,    -1,   101,    -1,   103,    -1,
    3481       -1,   106,  1448,  1449,    -1,   110,   111,   112,   113,   114,
    3482      115,   392,    -1,   702,    -1,  1461,    -1,    -1,    -1,   400,
    3483       -1,    36,  1468,    38,    39,    -1,    41,   716,    -1,    44,
    3484       45,    46,    47,    48,    49,    50,    51,    52,    53,    -1,
    3485       -1,    56,    57,   424,    59,    -1,    -1,   736,    -1,  1495,
    3486       65,    -1,    -1,    -1,    69,   436,    -1,    72,    73,    74,
    3487       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3488       -1,    -1,    87,    -1,    -1,    -1,    -1,  1523,   459,    -1,
    3489       -1,    -1,    -1,    -1,   465,    -1,   101,    -1,   103,   470,
    3490       -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3491      115,    -1,  1548,    -1,    -1,   794,    -1,  1553,    -1,   124,
    3492       -1,    -1,    -1,    -1,    -1,   804,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,   506,    -1,    -1,    -1,    -1,
    3494       -1,    -1,    -1,    -1,    -1,    -1,    -1,   826,    -1,    -1,
    3495      521,    -1,    -1,     0,    -1,    -1,     3,     4,     5,     6,
    3496        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3497       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3498       -1,    -1,    29,    30,    31,    32,   557,    -1,    35,    -1,
    3499       37,    38,    -1,    -1,    -1,   566,    -1,   568,    -1,    -1,
    3500       -1,    -1,    -1,   574,    -1,    -1,    -1,    -1,    -1,    36,
    3501       57,    38,    -1,    60,    -1,    62,   587,    64,    65,    -1,
    3502       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3503       77,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3504       -1,   920,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3505       77,    -1,    79,    80,   101,   626,   103,    -1,    -1,    -1,
    3506       87,    -1,    -1,    -1,   111,   150,    -1,   946,    -1,    -1,
    3507       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3508       -1,    -1,   109,   110,   111,   112,   113,   114,   115,    -1,
    3509       -1,   662,    -1,   972,    -1,    -1,   181,    -1,    -1,    -1,
    3510       -1,    -1,    -1,   188,    -1,    10,    11,    12,    13,    14,
    3511       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3512       25,    26,    27,  1002,    29,    30,    31,    -1,    -1,    -1,
    3513       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3514     1019,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   720,
    3515       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,   730,
    3516      731,    -1,    67,    68,    -1,    -1,    71,    -1,    -1,    -1,
    3517       -1,   742,    -1,   258,    -1,    -1,    -1,    -1,    36,    -1,
    3518       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   759,    -1,
    3519      761,    -1,    -1,    -1,   765,    -1,   101,    -1,   103,    -1,
    3520       -1,    59,    -1,    -1,    -1,    -1,   111,    65,    -1,  1088,
    3521       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3522       -1,    79,    80,    -1,    -1,    -1,  1105,   312,    -1,    87,
    3523       -1,    -1,    -1,    -1,    -1,   320,   321,    -1,   323,   324,
    3524       -1,   326,    -1,   101,    -1,   103,   331,    -1,    -1,    -1,
    3525      108,    -1,   110,   111,   112,   113,   114,   115,    -1,   830,
    3526       -1,    -1,    -1,    -1,    -1,   350,   837,    -1,   353,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   850,
    3528       -1,   852,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3529       -1,    -1,    -1,    -1,   379,    -1,   867,    -1,   383,    -1,
    3530       -1,    -1,   873,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3531       -1,    -1,    -1,    -1,   885,    65,    -1,   888,  1197,    69,
    3532       -1,    -1,    72,    73,    74,    75,    76,    77,   413,    79,
    3533       80,    -1,    -1,    -1,    -1,    -1,   907,    87,    -1,    -1,
    3534       -1,    -1,   913,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3535      141,   101,   437,   103,    -1,    -1,   106,    -1,    -1,   150,
    3536      110,   111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,
    3537       -1,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,   468,    -1,    -1,   471,    -1,    -1,    -1,
    3539       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3540       20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
    3541       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3542     1299,    -1,    -1,    -1,    -1,   510,    -1,   998,   513,    -1,
    3543       -1,    -1,    -1,  1004,  1005,    -1,    -1,    -1,    -1,    -1,
    3544       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3545       -1,    71,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3546       -1,    -1,    -1,   254,    -1,    -1,    -1,    -1,    -1,    -1,
    3547       -1,    -1,   557,   558,    -1,    -1,    -1,    -1,    -1,    -1,
    3548       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   573,  1060,
    3549      575,   111,    -1,    -1,    -1,  1066,    -1,    -1,   583,    -1,
    3550       -1,   586,    -1,   588,   589,    -1,    -1,    -1,    -1,    -1,
    3551      595,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3552      605,   606,    -1,    -1,    -1,    -1,   611,    -1,    -1,    -1,
    3553     1101,    -1,    -1,    -1,    -1,  1106,   621,   622,    -1,    -1,
    3554       -1,    -1,    -1,  1114,    -1,    -1,    -1,    -1,    -1,    -1,
    3555       -1,   636,    -1,    -1,    -1,    -1,   641,   642,    -1,    -1,
    3556      645,   646,   353,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3557       -1,   362,  1143,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3558       -1,    -1,    -1,    -1,    -1,   670,    -1,    -1,    -1,  1160,
    3559      675,   676,  1163,   678,  1165,    -1,    -1,   682,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       -1,  1182,  1183,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3562       -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   714,
    3563      715,    -1,  1203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3564       -1,    -1,   433,   434,    -1,    -1,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1538,
    3566       -1,    -1,    -1,   748,  1235,    -1,    -1,   752,   753,    -1,
    3567       -1,    -1,   463,    -1,    -1,    -1,    -1,    -1,    10,    11,
    3568       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3569       22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
    3570       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,   794,
    3571      501,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3572       -1,   806,   513,    -1,    -1,    -1,    -1,    -1,    60,   520,
    3573      815,    -1,   817,    65,    -1,    67,    68,    69,    -1,    71,
    3574       -1,   826,   533,   534,    76,    77,    10,    11,    12,    13,
    3575       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3576       24,    25,    26,  1334,   555,  1336,    -1,    -1,    -1,    -1,
    3577       -1,   103,   857,    37,   565,    -1,  1347,    -1,  1349,   111,
    3578       -1,    -1,   573,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3579       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,  1369,    -1,
    3580       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3581       -1,    -1,    -1,    -1,  1385,    -1,   901,    -1,    -1,    -1,
    3582       -1,    -1,   907,   908,    -1,    -1,  1397,    -1,    -1,  1400,
    3583      915,    -1,    -1,   624,    -1,   920,    -1,    -1,    -1,    -1,
    3584      631,    -1,    -1,   928,    -1,    -1,    -1,    -1,    -1,    -1,
    3585       -1,  1422,    -1,    -1,    -1,    -1,   941,   942,    -1,    -1,
    3586     1431,   652,    -1,  1434,  1435,    -1,    -1,    -1,    -1,    -1,
    3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3588      965,    -1,    -1,    -1,   675,    -1,    -1,   972,    -1,    -1,
    3589       -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
    3590       -1,  1472,    -1,    -1,    -1,  1476,   991,   992,    -1,    -1,
    3591       -1,    -1,   997,    -1,   999,    -1,    -1,  1488,    -1,    -1,
    3592       -1,    -1,    -1,    -1,    -1,  1010,  1011,    -1,  1013,  1014,
    3593     1015,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3594       -1,  1026,  1027,  1028,    -1,    -1,    -1,    -1,    -1,    -1,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,   748,    -1,   750,
    3596       -1,    -1,    -1,    -1,    -1,   756,    -1,    -1,    -1,    -1,
    3597       -1,    -1,    -1,   764,    -1,    10,    11,    12,    13,    14,
    3598       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3599       25,    26,    27,    -1,    29,    30,    31,    -1,  1083,    -1,
    3600       -1,    -1,    37,  1088,    -1,    -1,  1091,  1092,  1093,  1094,
    3601      801,    -1,    -1,   804,   805,   806,    -1,    -1,    -1,    -1,
    3602     1105,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3603       -1,    -1,    67,    68,   825,    -1,    71,    -1,    -1,    -1,
    3604       -1,    -1,  1127,    -1,    -1,    -1,    -1,   270,   271,   272,
    3605      273,    -1,    -1,    -1,    -1,    -1,    -1,   280,   281,    -1,
    3606       -1,    -1,   285,   286,    -1,  1150,   101,    -1,   103,    -1,
    3607     1155,  1156,  1157,    -1,   297,   866,   111,    -1,    -1,   870,
    3608       -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,
    3609       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3610       25,    26,    27,   326,    29,    30,    31,    -1,    -1,    -1,
    3611      901,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3613     1215,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3614      363,    -1,    67,    68,  1229,    -1,    71,    -1,    -1,    -1,
    3615       -1,    -1,    -1,    -1,    -1,  1240,    -1,    -1,    -1,    -1,
    3616       -1,   952,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,   965,   966,    -1,    -1,   103,    -1,
    3618       -1,    36,   973,    38,    -1,    -1,   111,    -1,    -1,   980,
    3619       -1,    -1,   983,    -1,   985,    -1,    -1,    -1,    -1,    -1,
    3620       -1,    -1,    -1,    -1,    59,  1290,  1291,    -1,    -1,    -1,
    3621       65,  1002,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3622       75,    76,    77,    -1,    79,    80,    -1,    -1,  1019,    -1,
    3623       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3624       -1,    -1,  1327,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3625       -1,  1042,    -1,  1044,    -1,   110,   111,   112,   113,   114,
    3626      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1059,    -1,
    3627       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3628       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,
    3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3630     1091,    -1,    -1,    -1,  1389,    -1,    -1,    -1,    -1,    -1,
    3631       -1,    -1,    -1,   536,   537,   538,   539,   540,   541,   542,
    3632      543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
    3633      553,  1416,    -1,    -1,    -1,    -1,    -1,    -1,  1129,    -1,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,   575,    -1,    -1,    -1,    -1,    -1,    -1,  1150,
    3636       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3637       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1168,    -1,  1170,
    3638       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    3639        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3640       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3641       -1,  1496,    29,    30,    31,    32,    -1,    -1,    35,    -1,
    3642       37,    38,    -1,    -1,  1215,    -1,    -1,    -1,    -1,    -1,
    3643       -1,    -1,  1517,  1518,    -1,    -1,    -1,    -1,    -1,  1230,
    3644       57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3645       67,    68,    69,  1538,   677,    -1,    -1,    -1,    -1,    76,
    3646       77,    -1,  1253,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3647       -1,    -1,    -1,    -1,    -1,    -1,   699,    -1,    -1,    -1,
    3648       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   712,
    3649      107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3445      -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
     3446      38,    -1,  1117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3447      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,
     3448      -1,  1136,    60,    -1,    62,    -1,    64,    65,    -1,    67,
     3449      68,    69,    -1,    -1,    -1,  1449,  1151,  1152,    76,    77,
     3450      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
     3451      -1,    38,    -1,    -1,  1468,  1469,    -1,    -1,    -1,    -1,
     3452      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   989,    -1,
     3453      -1,    -1,    59,   111,  1488,    -1,    -1,    -1,    65,    -1,
     3454    1001,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3455      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
     3456      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3457      -1,    -1,    -1,  1228,   101,    -1,   103,    -1,    -1,   106,
     3458      -1,  1042,    -1,   110,   111,   112,   113,   114,   115,    -1,
    36503459      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    36513460      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    36523461      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3653       32,    -1,   755,    35,    36,    37,    38,    39,    -1,    41,
     3462      32,    -1,    -1,    35,    36,    37,    38,    39,    -1,    41,
    36543463      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    3655       -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,    -1,
    3656       62,    -1,    64,    65,   787,    67,    68,    69,    -1,    -1,
    3657       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3659       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3660       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    3661      112,   113,   114,   115,  1405,    -1,    -1,    -1,    -1,    -1,
    3662       -1,    -1,   124,    -1,    -1,    -1,    -1,    -1,     3,     4,
    3663        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3664       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3665       25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3666       35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,   892,
    3667       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3668       36,    -1,    38,    -1,    59,    60,    -1,    62,  1479,    64,
    3669       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3670       75,    76,    77,    59,    79,    80,    -1,    -1,    -1,    65,
    3671       -1,    -1,    87,    69,    -1,    -1,    72,    73,    74,    75,
    3672       76,    77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,
    3673       -1,    87,    -1,    -1,  1525,   110,   111,   112,   113,   114,
    3674      115,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,   124,
    3675       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3676       -1,    -1,    -1,    -1,    -1,    -1,   989,    -1,    -1,    -1,
    3677       -1,    -1,    -1,    -1,    -1,    -1,   999,     3,     4,     5,
    3678        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3679       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3680       26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,
    3681       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3682       -1,    -1,    -1,    -1,  1047,    -1,    -1,    -1,    -1,    36,
    3683       -1,    38,    -1,    59,    60,    -1,    62,    -1,    64,    65,
    3684       -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
    3685       76,    77,    59,    79,    80,    -1,    -1,    -1,    65,    -1,
    3686       -1,    87,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3687       77,    -1,    79,    80,    -1,   101,    -1,   103,    -1,    -1,
    3688       87,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3689       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,  1121,    -1,
    3690       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3691        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3692       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3693       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3694       -1,    -1,    36,    37,    38,    -1,    -1,    -1,  1171,    -1,
    3695       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3696       -1,    -1,    -1,  1186,  1187,    59,    60,    -1,    62,    -1,
    3697       64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3698       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3699       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3701      104,    -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,
    3702      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3703       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3704       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3705       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3706       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
     3464      -1,    53,    -1,    -1,    56,    57,    -1,    59,    60,  1110,
    37083465      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    37093466      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    37103467      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    37113468      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3712       -1,   103,   104,    -1,    -1,    -1,   108,    -1,   110,   111,
    3713      112,   113,   114,   115,    -1,     4,     5,     6,     7,     8,
     3469      -1,   103,  1153,    -1,   106,    -1,    -1,    -1,   110,   111,
     3470     112,   113,   114,   115,    -1,    -1,  1167,  1168,    -1,    -1,
     3471    1365,    -1,   124,    -1,     3,     4,     5,     6,     7,     8,
    37143472       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37153473      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3716       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3474      29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
    37173475      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37183476      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3719       59,    60,    -1,    62,    -1,    64,    65,  1420,    67,    68,
     3477      59,    60,    -1,    62,    -1,    64,    65,  1432,    67,    68,
    37203478      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    37213479      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    37223480      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3723       -1,    -1,   101,    -1,   103,   104,    -1,    -1,    -1,   108,
    3724       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3725       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3726     1483,  1484,     4,     5,     6,     7,     8,     9,    10,    11,
     3481      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3482    1475,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
     3483      -1,    -1,    -1,    -1,    -1,   124,     3,     4,     5,     6,
     3484       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3485      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3486      -1,    -1,    29,    30,    31,    32,    -1,    -1,    35,    36,
     3487      37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
     3488      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3489      -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    37,
     3490      67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
     3491      77,    -1,    79,    80,    -1,    -1,    -1,  1378,    -1,    -1,
     3492      87,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    71,   101,    -1,   103,    -1,    -1,    -1,
     3494      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
     3495      -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
    37273496      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3728       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3729       -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3730       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    3732       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3497      22,    23,    24,    25,    26,  1436,  1437,    29,    30,    31,
     3498      -1,    -1,    -1,    -1,    36,    37,    38,    10,    11,    12,
     3499      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3500      23,    24,    25,    26,    27,    -1,    -1,    59,    60,    -1,
     3501      62,    -1,    64,    65,    37,    67,    68,    69,    -1,    -1,
    37333502      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3734       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3736       -1,   103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,
     3503      -1,    -1,    -1,    -1,    -1,    87,    -1,    60,    -1,    -1,
     3504      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,   101,
     3505      -1,   103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,
    37373506     112,   113,   114,   115,     4,     5,     6,     7,     8,     9,
    37383507      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    37393508      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3740       30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,
     3509      30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,    10,
     3510      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3511      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    59,
     3512      60,    -1,    62,    -1,    64,    65,    37,    67,    68,    69,
     3513      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3514      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    60,
    37413515      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
    3743       60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
    3744       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3745       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3746       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3747       -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
     3516      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,   108,    -1,
    37483517     110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
    37493518       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     
    37573526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37583527      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3759       -1,    -1,   110,   111,   112,   113,   114,   115,     3,     4,
    3760        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3761       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3762       25,    26,    -1,    -1,    29,    30,    31,    32,    -1,    -1,
    3763       35,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3528      -1,    -1,   110,   111,   112,   113,   114,   115,     4,     5,
     3529       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3530      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3531      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3532      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37643533      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3765       -1,    -1,    57,    -1,    -1,    60,    -1,    62,    -1,    64,
    3766       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    3767       -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3534      -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,
     3535      -1,    67,    68,    69,    -1,    -1,    72,    73,    74,    75,
     3536      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
     3537      -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3538      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3539      -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
     3540       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3541      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3542      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3543      -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
    37683544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3770       -1,    -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,
     3545      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
     3546      64,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
     3547      74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
     3548      -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     3549      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3550      -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
     3551     114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
     3552      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3553      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3554      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
     3555      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3556      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
     3557      62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
     3558      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     3559      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
     3561      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
     3562     112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3563       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3564      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3565      29,    30,    31,    32,    -1,    -1,    35,    -1,    37,    38,
     3566      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
     3568      -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
     3569      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3570      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3571      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3572      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,   107,    -1,
     3573      -1,    -1,   111,     3,     4,     5,     6,     7,     8,     9,
     3574      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3575      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3576      30,    31,    32,    -1,    -1,    35,    -1,    37,    38,    -1,
     3577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3578      -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
     3579      60,    -1,    62,    -1,    64,    65,    -1,    67,    68,    69,
     3580      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
     3581      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3582      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3583      -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
     3584      -1,   111,     3,     4,     5,     6,     7,     8,     9,    10,
     3585      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3586      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
     3587      31,    32,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,
     3588      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3590      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
     3591      71,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     3592      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3593      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3594      -1,    -1,   103,    -1,    -1,    37,    -1,    -1,    -1,    -1,
     3595     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3596      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3597      62,    -1,    64,    -1,    -1,    67,    68,     4,     5,     6,
     3598       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3599      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3600      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3601      37,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3602      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
     3604      67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
     3605      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3606      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3608      -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,     8,
     3609       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3610      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3611      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3612      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3613      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3614      -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
     3615      -1,    -1,     4,     5,     6,     7,     8,     9,    10,    11,
     3616      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3617      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3618      -1,    -1,    -1,   102,   103,    37,    -1,    -1,    -1,    -1,
     3619      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
     3621      62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,    -1,
     3622      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
     3624      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3625      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3626       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     3627      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3628      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3629      -1,    -1,    -1,    37,    10,    11,    12,    13,    14,    15,
     3630      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3631      26,    -1,    -1,    29,    30,    31,    60,    -1,    62,    -1,
     3632      64,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
     3633      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3634      -1,    -1,    -1,    -1,    60,    89,    -1,    -1,    -1,    65,
     3635      -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,   103,
     3636      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    37713637       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    37723638      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    37743640      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37753641      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3776       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    65,
    3777       -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3778       76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3779       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3780       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3781       -1,    -1,    -1,    -1,    -1,   111,     3,     4,     5,     6,
    3782        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3783       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3784       27,    -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,
    3785       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3786       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3787       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    3788       67,    68,    -1,    -1,    71,     3,     4,     5,     6,     7,
    3789        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3790       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3791       -1,    29,    30,    31,    32,    -1,   103,    35,    -1,    37,
    3792       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3794       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3795       68,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3642      -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
     3643      -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    37963644      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    37973645      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3798       31,    -1,    -1,    -1,    -1,   103,    37,    -1,    -1,    -1,
    3799       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3646      31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
     3647      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    38003648      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    38013649      -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
     
    38093657      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    38103658      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3811       31,    -1,    -1,    -1,    -1,    -1,    37,   103,   104,    -1,
     3659      31,    -1,    -1,    -1,    -1,    -1,    37,   103,    -1,    -1,
    38123660      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    38133661      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3814       -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    3815        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3816       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3817       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3818       -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3819      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3820       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3821       64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
    3822       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3823       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
    3824       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    3825       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    3826        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3827       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3828       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3829       -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
    3830       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3831       -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
    3832       -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3833       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3834       -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
    3835       68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3836       -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
    3837        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3838       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3839       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3840       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3842       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3843       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3844       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3845       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3846       -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
    3847       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3848       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3849       -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
    3850        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3851       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3852       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3853      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3854       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3855       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3856       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3857       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3858       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3859       -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
    3860       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3861       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3862       -1,    64,    -1,    -1,    67,    68,    10,    11,    12,    13,
    3863       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3864       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
    3865       34,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
    3866      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3867       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
    3868       -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,    73,
    3869       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3870       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3871       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3872       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3873      114,   115,    10,    11,    12,    13,    14,    15,    16,    17,
    3874       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3875       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,
    3876       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3877       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3878       -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3879       68,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3880       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3881       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
    3883       -1,    -1,   110,   111,   112,   113,   114,   115,    10,    11,
     3662      -1,    62,    -1,    64,    -1,    -1,    67,    68,    10,    11,
    38843663      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    38853664      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    38863665      -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,
    3887       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3888       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
     3666      -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3667     111,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,
    38893668      -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    38903669      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
     
    39453724      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    39463725      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3947      112,   113,   114,   115,    10,    11,    12,    13,    14,    15,
    3948       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3949       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3950       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3951       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3952       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    3953       -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
    3954       76,    77,    10,    11,    12,    13,    14,    15,    16,    17,
    3955       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3956       -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,    37,
    3957       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     3726     112,   113,   114,   115,     3,     4,     5,     6,     7,     8,
     3727       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3728      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3729      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    10,
     3730      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3731      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
     3732      31,    60,    -1,    62,    -1,    64,    37,    -1,    67,    68,
     3733      -1,    -1,    10,    11,    12,    13,    14,    15,    16,    17,
     3734      18,    19,    20,    21,    22,    23,    24,    25,    26,    60,
     3735      -1,    29,    30,    31,    65,    -1,    67,    68,    69,    37,
     3736      71,    -1,    -1,    -1,    -1,    76,    77,   106,    -1,    -1,
    39583737      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39593738      -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,
    3960       68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
    3961       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3962       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3963       30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,
     3739      68,    69,   103,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3740     111,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3741      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3742      29,    30,    31,   101,    -1,   103,    -1,    -1,    37,    -1,
    39643743      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    39653744      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3966       60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,
    3967       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,
    3968       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3969       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3970       -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,
    3971       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3972       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3973       -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,
    3974       -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,    13,
    3975       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3976       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,   101,
    3977       -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3979       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3980       -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
    3981       -1,    -1,    76,    77,    10,    11,    12,    13,    14,    15,
    3982       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3983       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,   103,
    3984       -1,    37,    38,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3985       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3986       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3987       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3988       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3989       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3990       37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3991       -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3993       67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    3994       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3995       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3996       38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    3997      107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3998       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3999       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4000       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4001       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
    4002       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,
    4003       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    4004       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    4005       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4006       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    4007       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
    4008       -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,
    4009       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4010       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
     3745      -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
     3746      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,
    40113747      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    40123748      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4013       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4014       -1,    -1,    -1,   103,    -1,    -1,    -1,   107,    -1,    -1,
    4015       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4016       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    10,    11,
    4017       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4018       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4019       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
    4020       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4021      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4022       -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
     3749      31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,
     3750      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
     3752      -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
     3753      -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,
    40233754      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    40243755      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    4025       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    4026       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
     3756     101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3757     111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
     3759      -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
     3760      -1,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
     3761      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3762      25,    26,    -1,    -1,    29,    30,    31,    -1,   101,    -1,
     3763     103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3766      65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
     3767      -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
     3768      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3769      27,    -1,    29,    30,    31,    -1,    -1,    -1,   103,    -1,
     3770      37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3771      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3772      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3773      67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
     3774      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3775      25,    26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,
     3776      -1,    -1,    37,    -1,   101,    -1,   103,    -1,    -1,    -1,
     3777      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3778      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     3779      -1,    -1,    67,    68,    -1,    -1,    71,    10,    11,    12,
     3780      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3781      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3782      -1,    -1,    -1,    -1,    37,    38,   101,    -1,   103,    -1,
     3783      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    40273784      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    40283785      -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    40293786      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    40303787      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4031       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,
    4032      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3788      -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3789     103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,    -1,
    40333790      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    4034       -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
     3791      -1,    65,    -1,    67,    68,    10,    11,    12,    13,    14,
    40353792      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    40363793      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    4037       -1,    -1,    37,    -1,    -1,    -1,    -1,   101,    -1,   103,
     3794      -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,
    40383795      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    40393796      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     
    40473804      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    40483805      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    4049       37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
     3806      37,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    40503807      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    40513808      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     
    40533810      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    40543811      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    4055       -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3812      -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    40563813      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    40573814      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     
    41003857      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    41013858      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4102       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3859      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    41033860      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    41043861      -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    4105       -1,    67,    68,     4,     5,     6,     7,     8,     9,    10,
    4106       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4107       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4108       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     3862      -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
     3863      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3864      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3865      37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    41093866      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    4110       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4111       -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    36,
    4112       -1,    38,    39,    -1,    41,    -1,    -1,    44,    45,    46,
    4113       47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,
    4114       57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    4115       -1,   102,    69,    -1,    -1,    72,    73,    74,    75,    76,
    4116       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    4117       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4118       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,
    4119       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    4120       -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,
    4121        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    4122       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4123       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4124       -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
     3867      -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
     3868      67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    41253869      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    4126       -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
    4127       -1,    67,    68,    -1,    36,    -1,    38,    39,    -1,    41,
    4128       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    4129       52,    53,    60,    89,    56,    57,    -1,    59,    -1,    67,
    4130       68,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4131       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4132       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4133       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    4134       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    4135      112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
    4136       42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
    4137       -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
    4138       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    4139       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    4140       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    4141       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    4142       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
    4143      112,   113,   114,   115,    36,    -1,    38,    39,    -1,    41,
    4144       -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
    4145       -1,    53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
     3870      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3871      -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
     3872      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3873      -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
     3874      68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3875      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3876      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3877      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3878      -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3879      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3880      -1,    64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,
     3881      39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
     3882      49,    50,    51,    52,    53,    -1,    -1,    56,    57,    -1,
     3883      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,
     3884      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3885      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887      -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
     3888      -1,   110,   111,   112,   113,   114,   115,    -1,    36,    -1,
     3889      38,    39,    -1,    41,    -1,   124,    44,    45,    46,    47,
     3890      48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    57,
     3891      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     3892      -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
     3893      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
     3894      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3895      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,
     3896      -1,    -1,   110,   111,   112,   113,   114,   115,    -1,    -1,
     3897      -1,    -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,
     3898       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3899      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3900      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3901      37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3902      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3903      29,    30,    31,    60,    -1,    62,    -1,    64,    37,    -1,
     3904      67,    68,    -1,    36,    -1,    38,    39,    -1,    41,    42,
     3905      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
     3906      53,    60,    89,    56,    57,    -1,    59,    -1,    67,    68,
     3907      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     3908      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3909      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3911     103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     3912     113,   114,   115,    36,    -1,    38,    39,    -1,    41,    42,
     3913      43,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
     3914      53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     3915      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     3916      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3917      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3918      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3919     103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     3920     113,   114,   115,    36,    -1,    38,    39,    -1,    41,    -1,
     3921      -1,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
     3922      53,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
     3923      -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
     3924      73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
     3925      -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
     3926      36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
     3927     103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,
     3928     113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
     3929      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
     3930      76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
     3931      -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
     3932      -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
     3933      -1,    -1,   108,    -1,   110,   111,   112,   113,   114,   115,
     3934      59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3935      69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
     3936      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
     3937      -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
     3938      -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
     3939      -1,   110,   111,   112,   113,   114,   115,    59,    -1,    -1,
    41463940      -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    41473941      72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    41483942      -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    41493943      -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
    4150       -1,   103,    -1,    -1,   106,    -1,    -1,    -1,   110,   111,
     3944      -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    41513945     112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
    41523946      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
     
    41593953      -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    41603954      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    4161       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
     3955      -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    41623956      -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    41633957      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
     
    41753969      -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    41763970      77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    4177       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3971      87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    41783972      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
    4179       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
    4180        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    4181       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    4182       25,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4183       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3973      -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    59,
     3974      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
     3975      -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
     3976      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    41843977      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4185       -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,
    4186       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    4187       -1,    76,    77,     3,     4,     5,     6,     7,     8,     9,
    4188       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4189       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    4190       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
     3978      -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3979     110,   111,   112,   113,   114,   115,     4,     5,     6,     7,
     3980       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3981      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3982      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
    41913983      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    41923984      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4193       60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,     3,
    4194        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4195       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    4196       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    4197       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
     3985      -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,
     3986      68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
     3987       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3988      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3989      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3990      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    41983991      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4199       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    4200       64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    4201        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4202       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4203       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3992      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
     3993      -1,    64,    -1,    -1,    67,    68,     3,     4,     5,     6,
     3994       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3995      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3996      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3997      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    42043998      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4205       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4206       -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,
    4207       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    4208       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    4209       30,    31,    32,    33,    34,    -1,    -1,    37,    10,    11,
     3999      -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
     4000      67,    68,     4,     5,     6,     7,     8,     9,    10,    11,
    42104001      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    42114002      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    4212       60,    -1,    -1,    -1,    -1,    37,    -1,    67,    68,    -1,
     4003      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    42134004      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    42144005      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    4215       -1,    -1,    -1,    -1,    -1,    67,    68
     4006      62,    -1,    64,    -1,    -1,    67,    68,    10,    11,    12,
     4007      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     4008      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
     4009      33,    34,    -1,    -1,    37,    10,    11,    12,    13,    14,
     4010      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     4011      25,    26,    -1,    -1,    29,    30,    31,    60,    -1,    -1,
     4012      -1,    -1,    37,    -1,    67,    68,    -1,    -1,    -1,    -1,
     4013      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4014      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
     4015      -1,    -1,    67,    68
    42164016};
    42174017
     
    42284028     213,   214,   215,   216,   217,   218,   220,   221,   222,   223,
    42294029     224,   225,   226,   227,   229,   230,   231,   232,   233,   234,
    4230      235,   243,   244,   270,   271,   279,   282,   288,   289,   291,
    4231      293,   294,   300,   305,   309,   310,   311,   312,   313,   314,
    4232      315,   316,   336,   353,   354,   355,   356,    65,   111,   131,
    4233      204,   206,   214,   216,   226,   230,   232,   271,    75,   101,
    4234      298,   299,   300,   298,   298,    65,    67,    68,    69,   130,
    4235      131,   260,   261,   280,   281,    67,   261,   101,   291,   215,
    4236      216,   101,   111,   305,   310,   311,   312,   314,   315,   316,
    4237      126,   103,   207,   214,   216,   309,   313,   352,   353,   356,
    4238      357,   127,   123,   264,   106,   127,   164,    67,    68,   129,
    4239      259,   127,   127,   127,   108,   127,    67,   101,   111,   295,
    4240      304,   305,   306,   307,   308,   309,   313,   317,   318,   319,
    4241      320,   321,     3,    27,    71,   228,     3,     5,    67,    68,
    4242      103,   111,   206,   217,   221,   224,   233,   309,   313,   356,
    4243      204,   206,   216,   226,   230,   232,   271,   309,   313,    32,
    4244      222,   222,   217,   224,   127,   222,   217,   222,   217,    68,
    4245      101,   106,   261,   106,   261,   222,   217,   108,   127,   127,
    4246        0,   126,   101,   164,   298,   298,   126,   103,   214,   216,
    4247      354,   259,   259,   216,   123,   101,   111,   295,   305,   309,
    4248      103,   111,   356,   292,   219,   300,   101,   276,   101,   101,
    4249      101,    36,    38,    59,    65,    69,    72,    73,    74,    75,
    4250       79,    80,    87,   101,   103,   110,   111,   112,   113,   114,
    4251      115,   128,   132,   133,   134,   135,   140,   141,   142,   143,
    4252      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
    4253      155,   157,   214,   263,   278,   352,   357,   216,   102,   102,
    4254      102,   102,   102,   102,   102,   103,   111,   127,   155,   206,
    4255      207,   213,   216,   220,   221,   226,   229,   230,   232,   249,
    4256      250,   254,   255,   256,   257,   271,   336,   348,   349,   350,
    4257      351,   356,   357,   126,   101,   309,   313,   356,   101,   108,
    4258      124,   103,   106,   111,   155,   265,   107,   126,   108,   124,
    4259      101,   108,   124,   108,   124,   108,   124,   298,   124,   305,
    4260      306,   307,   308,   318,   319,   320,   321,   216,   304,   317,
    4261       57,   297,   103,   298,   335,   336,   298,   298,   164,   126,
    4262      101,   298,   335,   298,   298,   216,   295,   101,   101,   215,
    4263      214,   216,   101,   126,   214,   352,   357,   164,   126,   259,
    4264      264,   206,   221,   309,   313,   164,   126,   280,   216,   226,
    4265      124,   216,   216,   101,   126,    38,   103,   214,   236,   237,
    4266      238,   239,   352,   356,   106,   245,   261,   106,   216,   280,
    4267      124,   124,   291,   126,   131,   258,     3,   127,   196,   197,
    4268      211,   213,   216,   126,   297,   101,   297,   155,   305,   216,
    4269      101,   126,   259,   106,    32,    33,    34,   214,   272,   273,
    4270      275,   126,   121,   123,   277,   126,   217,   223,   224,   259,
    4271      301,   302,   303,   140,   153,   154,   101,   140,   142,   101,
    4272      140,   101,   101,   140,   140,   131,   103,   155,   160,   164,
    4273      214,   262,   352,   126,   142,   142,    75,    78,    79,    80,
    4274      101,   103,   105,    90,    91,    92,    93,    94,    95,    96,
    4275       97,    98,    99,   123,   159,   142,   111,   116,   117,   113,
    4276      114,    81,    82,    83,    84,   118,   119,    85,    86,   112,
    4277      120,   121,    87,    88,   122,   123,   359,   101,   111,   331,
    4278      332,   333,   334,   335,   102,   108,   101,   335,   103,   336,
    4279      101,   335,   336,   126,   103,   111,   127,   214,   216,   347,
    4280      348,   356,   357,   104,   127,    67,   101,   103,   111,   305,
    4281      322,   323,   324,   325,   326,   327,   328,   329,   330,   336,
    4282      337,   338,   339,   340,   341,   342,   111,   356,   216,   127,
    4283      127,   111,   214,   216,   349,   259,   214,   336,   349,   259,
    4284      127,   126,   126,   126,   126,    65,   103,   105,   261,   265,
    4285      266,   267,   268,   269,   126,   126,   126,   126,   126,   126,
    4286      295,   102,   102,   102,   102,   102,   102,   102,   304,   317,
    4287      101,   264,   126,   196,   126,   295,   160,   263,   160,   263,
    4288      295,   278,   103,   127,   196,   297,   164,   126,   196,   278,
    4289      214,   272,   278,   238,   239,   126,   101,   109,   111,   240,
    4290      242,   304,   305,   317,   335,   343,   344,   345,   346,   107,
    4291      237,   108,   124,   108,   124,   261,   236,   108,   358,   123,
    4292      246,   245,   216,   251,   252,   253,   256,   257,   102,   108,
    4293      164,   126,   111,   155,   126,   213,   216,   250,   348,   356,
    4294      289,   290,   101,   111,   322,   102,   108,   359,   261,   272,
    4295      101,   106,   261,   263,   272,   102,   108,   101,   102,   109,
    4296      262,   262,   103,   131,   137,   155,   263,   262,   126,   102,
    4297      108,   102,   101,   111,   343,   102,   108,   127,   155,   103,
    4298      131,   103,   136,   137,   126,   103,   131,   155,   155,   142,
    4299      142,   142,   143,   143,   144,   144,   145,   145,   145,   145,
    4300      146,   146,   147,   148,   149,   150,   151,   109,   160,   155,
    4301      126,   332,   333,   334,   216,   331,   298,   298,   155,   263,
    4302      126,   126,   258,   127,   216,   220,   126,   104,   356,    67,
    4303      129,   214,   336,   354,   104,   101,   126,   305,   323,   324,
    4304      325,   328,   338,   339,   340,   126,   216,   322,   326,   337,
    4305      101,   298,   341,   359,   298,   298,   359,   101,   298,   341,
    4306      298,   298,   298,   298,   336,   214,   347,   357,   259,   104,
    4307      108,   104,   108,   359,   214,   349,   359,   104,   247,   248,
    4308      249,   250,   247,   259,   127,   155,   126,   103,   261,   109,
    4309      108,   358,   265,   103,   109,   269,    28,   198,   199,   259,
    4310      247,   131,   295,   131,   297,   101,   335,   336,   101,   335,
    4311      336,   133,   111,   127,   164,   251,   102,   102,   102,   102,
    4312      102,   126,   104,   164,   196,   164,   102,   101,   111,   127,
    4313      127,   124,   124,   103,   127,   305,   344,   345,   346,   154,
    4314      216,   343,   241,   242,   241,   298,   298,   261,   298,   107,
    4315      261,   107,   154,   358,   127,   127,   131,   211,   127,   127,
    4316      247,   101,   111,   356,   127,   107,   216,   273,   274,   127,
    4317      126,   126,   101,   127,   102,   302,   160,   161,   124,    75,
    4318      190,   191,   192,   102,   102,   126,   109,   102,   102,   102,
    4319      127,   155,   216,   106,   142,   157,   155,   156,   158,   104,
     4030     235,   243,   244,   270,   271,   272,   280,   283,   289,   290,
     4031     292,   294,   295,   301,   306,   310,   311,   312,   313,   314,
     4032     315,   316,   317,   337,   354,   355,   356,   357,    65,   111,
     4033     131,   204,   206,   214,   216,   226,   230,   232,   271,    75,
     4034     101,   299,   300,   301,   299,   299,    65,    67,    68,    69,
     4035     130,   131,   260,   261,   281,   282,    67,    68,   261,   101,
     4036     292,   215,   216,   101,   111,   306,   311,   312,   313,   315,
     4037     316,   317,   104,   126,   103,   207,   214,   216,   310,   314,
     4038     353,   354,   357,   358,   127,   123,   264,   106,   127,   164,
     4039      67,    68,   129,   259,   127,   127,   127,   108,   127,    67,
     4040      68,   101,   111,   296,   305,   306,   307,   308,   309,   310,
     4041     314,   318,   319,   320,   321,   322,   328,     3,    27,    71,
     4042     228,     3,     5,    67,   103,   111,   206,   217,   221,   224,
     4043     233,   272,   310,   314,   357,   204,   206,   216,   226,   230,
     4044     232,   271,   310,   314,    32,   222,   222,   217,   224,   127,
     4045     222,   217,   222,   217,    68,   101,   106,   261,   272,   106,
     4046     261,   222,   217,   108,   127,   127,     0,   126,   101,   164,
     4047     299,   299,   126,   103,   214,   216,   355,   259,   259,   216,
     4048     123,   101,   111,   296,   306,   310,   103,   111,   357,   293,
     4049     219,   301,   101,   277,   101,   101,   101,    36,    38,    59,
     4050      65,    69,    72,    73,    74,    75,    79,    80,    87,   101,
     4051     103,   110,   111,   112,   113,   114,   115,   128,   132,   133,
     4052     134,   135,   140,   141,   142,   143,   144,   145,   146,   147,
     4053     148,   149,   150,   151,   152,   153,   155,   157,   214,   263,
     4054     279,   353,   358,   216,   102,   102,   102,   102,   102,   102,
     4055     102,    67,    68,   103,   214,   259,   337,   355,   103,   111,
     4056     155,   206,   207,   213,   216,   220,   221,   226,   229,   230,
     4057     232,   249,   250,   254,   255,   256,   257,   271,   337,   349,
     4058     350,   351,   352,   357,   358,   104,   101,   310,   314,   357,
     4059     101,   108,   124,   103,   106,   111,   155,   265,   107,   126,
     4060     108,   124,   101,   108,   124,   108,   124,   108,   124,   299,
     4061     124,   306,   307,   308,   309,   319,   320,   321,   322,   216,
     4062     305,   318,    57,   298,   103,   299,   336,   337,   299,   299,
     4063     164,   126,   101,   299,   336,   299,   299,   216,   296,   101,
     4064     101,   215,   214,   216,   104,   126,   214,   353,   358,   164,
     4065     126,   259,   264,   206,   221,   310,   314,   164,   126,   281,
     4066     216,   226,   124,   216,   216,   279,    38,   103,   214,   236,
     4067     237,   238,   239,   353,   357,   106,   245,   261,   106,   216,
     4068     281,   124,   124,   292,   126,   131,   258,     3,   127,   196,
     4069     197,   211,   213,   216,   126,   298,   101,   298,   155,   306,
     4070     216,   101,   126,   259,   106,    32,    33,    34,   214,   273,
     4071     274,   276,   126,   121,   123,   278,   126,   217,   223,   224,
     4072     259,   302,   303,   304,   140,   153,   154,   101,   140,   142,
     4073     101,   140,   101,   101,   140,   140,   131,   103,   155,   160,
     4074     164,   214,   262,   353,   104,   126,   142,   142,    75,    78,
     4075      79,    80,   101,   103,   105,    90,    91,    92,    93,    94,
     4076      95,    96,    97,    98,    99,   123,   159,   142,   111,   116,
     4077     117,   113,   114,    81,    82,    83,    84,   118,   119,    85,
     4078      86,   112,   120,   121,    87,    88,   122,   123,   360,   101,
     4079     111,   332,   333,   334,   335,   336,   102,   108,   101,   336,
     4080     337,   101,   336,   337,   126,   101,   214,   355,   104,   126,
     4081     103,   111,   127,   214,   216,   348,   349,   357,   358,   127,
     4082     101,   103,   111,   306,   323,   324,   325,   326,   327,   328,
     4083     329,   330,   331,   337,   338,   339,   340,   341,   342,   343,
     4084     111,   357,   216,   127,   127,   111,   214,   216,   350,   259,
     4085     214,   337,   350,   259,   101,   126,   126,   126,   104,   126,
     4086      65,   103,   105,   261,   265,   266,   267,   268,   269,   126,
     4087     126,   126,   126,   126,   126,   296,   102,   102,   102,   102,
     4088     102,   102,   102,   305,   318,   101,   264,   104,   196,   126,
     4089     296,   160,   263,   160,   263,   296,   103,   196,   298,   164,
     4090     126,   196,   102,   238,   239,   104,   126,   101,   109,   111,
     4091     240,   242,   305,   306,   318,   336,   344,   345,   346,   347,
     4092     107,   237,   108,   124,   108,   124,   261,   236,   108,   359,
     4093     123,   246,   245,   216,   251,   252,   253,   256,   257,   102,
     4094     108,   164,   126,   111,   155,   126,   213,   216,   250,   349,
     4095     357,   290,   291,   101,   111,   323,   102,   108,   360,   261,
     4096     273,   101,   106,   261,   263,   273,   102,   108,   101,   102,
     4097     109,   262,   262,   103,   131,   137,   155,   263,   262,   104,
     4098     126,   102,   108,   102,   101,   111,   344,   102,   108,   155,
     4099     103,   131,   103,   136,   137,   126,   103,   131,   155,   155,
     4100     142,   142,   142,   143,   143,   144,   144,   145,   145,   145,
     4101     145,   146,   146,   147,   148,   149,   150,   151,   109,   160,
     4102     155,   126,   333,   334,   335,   216,   332,   299,   299,   155,
     4103     263,   126,   258,   111,   126,   214,   337,   350,   216,   220,
     4104     104,   126,   104,   357,   104,   101,   126,   306,   324,   325,
     4105     326,   329,   339,   340,   341,   104,   126,   216,   323,   327,
     4106     338,   101,   299,   342,   360,   299,   299,   360,   101,   299,
     4107     342,   299,   299,   299,   299,   337,   214,   348,   358,   259,
     4108     104,   108,   104,   108,   360,   214,   350,   360,   247,   248,
     4109     249,   250,   247,   247,   259,   155,   126,   103,   261,   109,
     4110     108,   359,   265,   103,   109,   269,    28,   198,   199,   259,
     4111     247,   131,   296,   131,   298,   101,   336,   337,   101,   336,
     4112     337,   133,   337,   164,   251,   102,   102,   102,   102,   104,
     4113     164,   196,   164,   106,   124,   124,   103,   306,   345,   346,
     4114     347,   154,   216,   344,   241,   242,   241,   299,   299,   261,
     4115     299,   107,   261,   107,   154,   359,   127,   127,   131,   211,
     4116     127,   127,   247,   101,   111,   357,   127,   107,   216,   274,
     4117     275,   127,   126,   126,   101,   127,   102,   303,   160,   161,
     4118     124,    75,   190,   191,   192,   102,   102,   126,   109,   102,
     4119     102,   102,   155,   216,   106,   142,   157,   155,   156,   158,
    43204120     108,   127,   126,   126,   102,   108,   155,   126,   153,   109,
    4321      251,   102,   102,   102,   331,   251,   102,   104,   103,   111,
    4322      155,   155,   216,   127,   101,   101,   214,   354,   328,   251,
    4323      102,   102,   102,   102,   102,   102,   102,     7,   127,   216,
    4324      322,   326,   337,   126,   126,   359,   126,   126,   101,   127,
    4325      127,   127,   127,   264,   104,   127,   153,   154,   155,   296,
    4326      126,   265,   267,   107,   126,   200,   261,    38,    39,    41,
    4327       44,    45,    46,    47,    48,    49,    50,    51,    53,    56,
    4328      103,   131,   161,   162,   163,   164,   165,   166,   168,   169,
    4329      181,   183,   184,   189,   201,   294,    28,   127,   123,   264,
    4330      126,   126,   102,   104,   127,   127,    67,   164,   216,   102,
    4331      102,   126,   104,   102,   102,   102,   343,   240,   246,   107,
    4332      102,   108,   104,   104,   127,   216,   108,   359,   276,   102,
    4333      272,   204,   206,   214,   284,   285,   286,   287,   278,   102,
    4334      102,   101,   102,   109,   108,   155,   155,   104,   266,   108,
    4335      127,   158,   104,   131,   138,   139,   155,   137,   127,   138,
    4336      153,   157,   127,   101,   335,   336,   127,   214,   336,   349,
    4337      126,   127,   127,   127,   155,   104,   126,   126,   102,   127,
    4338      101,   335,   336,   101,   341,   101,   341,   336,   215,   104,
    4339        7,   111,   127,   155,   251,   251,   250,   254,   254,   255,
    4340      247,   102,   108,   108,   102,   104,    89,   115,   127,   127,
    4341      138,   265,   155,   108,   124,   201,   205,   216,   220,   101,
    4342      101,   162,   101,   101,   124,   131,   124,   131,   111,   131,
    4343      161,   101,   164,   124,   155,   126,   109,   124,   127,   126,
    4344      127,   200,   102,   155,   251,   251,   298,   336,   102,   104,
    4345      101,   106,   261,   261,   127,   101,   335,   336,   126,   102,
    4346      126,   127,   295,   107,   126,   127,   127,   102,   106,   154,
    4347      124,   190,   192,   108,   127,   358,   156,   104,   127,    78,
    4348      105,   108,   127,   127,   104,   127,   102,   126,   102,   214,
    4349      349,   104,   104,   104,   127,   247,   247,   102,   126,   126,
    4350      126,   155,   155,   127,   104,   127,   127,   127,   127,   102,
    4351      126,   126,   154,   154,   104,   104,   127,   127,   261,   216,
    4352      160,   160,    45,   160,   126,   124,   124,   160,   124,   124,
    4353      160,    54,    55,   185,   186,   187,   124,   127,   298,   166,
    4354      107,   124,   127,   127,   278,   236,   106,   104,   126,    89,
    4355      256,   257,   102,   285,   108,   124,   108,   124,   107,   283,
    4356      102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
    4357      139,   139,   104,   104,   104,   251,   104,   127,   127,   251,
    4358      251,   251,   127,   127,   104,   104,   102,   102,   104,   108,
    4359       89,   250,    89,   127,   104,   104,   102,   102,   101,   102,
    4360      161,   182,   201,   124,   102,   101,   164,   187,    54,   104,
    4361      162,   102,   102,   102,   107,   236,   251,   106,   126,   126,
    4362      284,   124,    75,   193,   127,   109,   126,   126,   127,   102,
    4363      102,   127,   127,   127,   104,   104,   126,   127,   104,   162,
    4364       42,    43,   106,   172,   173,   174,   160,   162,   127,   102,
    4365      161,   106,   174,    89,   126,   101,   106,   261,   107,   127,
    4366      126,   259,   295,   107,   102,   108,   104,   155,   138,   138,
    4367      102,   102,   102,   102,   254,    40,   154,   170,   171,   296,
    4368      109,   126,   162,   172,   102,   124,   162,   124,   126,   102,
    4369      126,    89,   126,   236,   106,   102,   284,   124,    75,   109,
    4370      127,   127,   162,    89,   108,   109,   127,   194,   195,   201,
    4371      124,   161,   161,   194,   164,   188,   214,   352,   102,   126,
    4372      107,   236,   107,   155,   104,   104,   154,   170,   173,   175,
    4373      176,   126,   124,   173,   177,   178,   127,   101,   111,   295,
    4374      343,   131,   164,   188,   107,   101,   162,   167,   107,   173,
     4121     251,   102,   102,   102,   332,   251,   102,   247,   214,   350,
     4122     103,   111,   155,   155,   216,   329,   251,   102,   102,   102,
     4123     102,   102,   102,   102,     7,   216,   323,   327,   338,   126,
     4124     126,   360,   126,   126,   102,   127,   127,   127,   127,   264,
     4125     127,   153,   154,   155,   297,   126,   265,   267,   107,   126,
     4126     200,   261,    38,    39,    41,    44,    45,    46,    47,    48,
     4127      49,    50,    51,    53,    56,   103,   131,   161,   162,   163,
     4128     164,   165,   166,   168,   169,   181,   183,   184,   189,   201,
     4129     295,    28,   127,   123,   264,   126,   126,   102,   127,   164,
     4130     236,   104,   102,   102,   102,   344,   240,   246,   107,   102,
     4131     108,   104,   104,   127,   216,   108,   360,   277,   102,   273,
     4132     204,   206,   214,   285,   286,   287,   288,   279,   102,   102,
     4133     101,   102,   109,   108,   155,   155,   266,   108,   127,   158,
     4134     104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
     4135     127,   101,   336,   337,   127,   127,   126,   127,   127,   127,
     4136     155,   102,   127,   101,   336,   337,   101,   342,   101,   342,
     4137     337,   215,     7,   111,   127,   155,   251,   251,   250,   254,
     4138     254,   255,   108,   108,   102,   102,   104,    89,   115,   127,
     4139     127,   138,   265,   155,   108,   124,   201,   205,   216,   220,
     4140     101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
     4141     131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
     4142     126,   127,   200,   102,   155,   251,   251,   299,   102,   107,
     4143     101,   336,   337,   126,   102,   126,   127,   296,   107,   126,
     4144     127,   127,   102,   106,   154,   124,   190,   192,   108,   127,
     4145     359,   156,   104,   127,    78,   105,   108,   127,   127,   104,
     4146     127,   102,   126,   102,   102,   104,   104,   104,   127,   102,
     4147     126,   126,   126,   155,   155,   127,   104,   127,   127,   127,
     4148     127,   126,   126,   154,   154,   104,   104,   127,   127,   261,
     4149     216,   160,   160,    45,   160,   126,   124,   124,   160,   124,
     4150     124,   160,    54,    55,   185,   186,   187,   124,   299,   166,
     4151     107,   124,   127,   127,   126,    89,   256,   257,   102,   286,
     4152     108,   124,   108,   124,   107,   284,   102,   102,   109,   158,
     4153     104,   107,   104,   103,   139,   103,   139,   139,   104,   104,
     4154     104,   251,   104,   251,   251,   251,   127,   127,   104,   104,
     4155     102,   102,   104,   108,    89,   250,    89,   127,   104,   104,
     4156     102,   102,   101,   102,   161,   182,   201,   124,   102,   101,
     4157     164,   187,    54,   162,   102,   102,   251,   106,   126,   126,
     4158     285,   124,    75,   193,   127,   109,   126,   126,   127,   127,
     4159     127,   127,   104,   104,   126,   127,   104,   162,    42,    43,
     4160     106,   172,   173,   174,   160,   162,   127,   102,   161,   106,
     4161     174,    89,   126,   101,   127,   126,   259,   296,   107,   102,
     4162     108,   104,   155,   138,   138,   102,   102,   102,   102,   254,
     4163      40,   154,   170,   171,   297,   109,   126,   162,   172,   102,
     4164     124,   162,   124,   126,   102,   126,    89,   126,   102,   285,
     4165     124,    75,   109,   127,   127,   162,    89,   108,   109,   127,
     4166     194,   195,   201,   124,   161,   161,   194,   164,   188,   214,
     4167     353,   102,   126,   107,   155,   104,   104,   154,   170,   173,
     4168     175,   176,   126,   124,   173,   177,   178,   127,   101,   111,
     4169     296,   344,   131,   164,   188,   101,   162,   167,   107,   173,
    43754170     201,   161,    52,   167,   180,   107,   173,   102,   216,   127,
    4376      278,   162,   167,   124,   179,   180,   167,   180,   164,   102,
     4171     279,   162,   167,   124,   179,   180,   167,   180,   164,   102,
    43774172     102,   179,   127,   164,   127
    43784173};
     
    64886283#line 1024 "parser.yy"
    64896284    {
    6490                         typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
    6491                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
     6285                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
    64926286                }
    64936287    break;
     
    64966290
    64976291/* Line 1806 of yacc.c  */
    6498 #line 1029 "parser.yy"
    6499     {
    6500                         typedefTable.setNextIdentifier( *( (yyvsp[(5) - (10)].tok) ) );
    6501                         (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(5) - (10)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(8) - (10)].decl), 0, true );
    6502                 }
    6503     break;
    6504 
    6505   case 251:
    6506 
    6507 /* Line 1806 of yacc.c  */
    6508 #line 1042 "parser.yy"
     6292#line 1047 "parser.yy"
    65096293    {
    65106294                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65126296    break;
    65136297
    6514   case 252:
    6515 
    6516 /* Line 1806 of yacc.c  */
    6517 #line 1046 "parser.yy"
     6298  case 251:
     6299
     6300/* Line 1806 of yacc.c  */
     6301#line 1051 "parser.yy"
    65186302    {
    65196303                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    65216305    break;
    65226306
     6307  case 252:
     6308
     6309/* Line 1806 of yacc.c  */
     6310#line 1058 "parser.yy"
     6311    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6312    break;
     6313
    65236314  case 253:
    65246315
    65256316/* Line 1806 of yacc.c  */
    6526 #line 1053 "parser.yy"
    6527     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     6317#line 1062 "parser.yy"
     6318    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    65286319    break;
    65296320
    65306321  case 254:
    6531 
    6532 /* Line 1806 of yacc.c  */
    6533 #line 1057 "parser.yy"
    6534     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    6535     break;
    6536 
    6537   case 255:
    6538 
    6539 /* Line 1806 of yacc.c  */
    6540 #line 1062 "parser.yy"
    6541     {
    6542                         typedefTable.addToEnclosingScope( TypedefTable::TD );
    6543                         (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
    6544                 }
    6545     break;
    6546 
    6547   case 256:
    65486322
    65496323/* Line 1806 of yacc.c  */
     
    65556329    break;
    65566330
    6557   case 257:
     6331  case 255:
    65586332
    65596333/* Line 1806 of yacc.c  */
    65606334#line 1072 "parser.yy"
     6335    {
     6336                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     6337                        (yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
     6338                }
     6339    break;
     6340
     6341  case 256:
     6342
     6343/* Line 1806 of yacc.c  */
     6344#line 1077 "parser.yy"
    65616345    {
    65626346                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    65656349    break;
    65666350
    6567   case 258:
    6568 
    6569 /* Line 1806 of yacc.c  */
    6570 #line 1083 "parser.yy"
     6351  case 257:
     6352
     6353/* Line 1806 of yacc.c  */
     6354#line 1088 "parser.yy"
    65716355    {
    65726356                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65756359    break;
    65766360
    6577   case 259:
    6578 
    6579 /* Line 1806 of yacc.c  */
    6580 #line 1088 "parser.yy"
     6361  case 258:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 1093 "parser.yy"
    65816365    {
    65826366                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65856369    break;
    65866370
    6587   case 260:
    6588 
    6589 /* Line 1806 of yacc.c  */
    6590 #line 1093 "parser.yy"
     6371  case 259:
     6372
     6373/* Line 1806 of yacc.c  */
     6374#line 1098 "parser.yy"
    65916375    {
    65926376                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65956379    break;
    65966380
    6597   case 261:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1098 "parser.yy"
     6381  case 260:
     6382
     6383/* Line 1806 of yacc.c  */
     6384#line 1103 "parser.yy"
    66016385    {
    66026386                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66056389    break;
    66066390
    6607   case 262:
    6608 
    6609 /* Line 1806 of yacc.c  */
    6610 #line 1103 "parser.yy"
     6391  case 261:
     6392
     6393/* Line 1806 of yacc.c  */
     6394#line 1108 "parser.yy"
    66116395    {
    66126396                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    66156399    break;
    66166400
    6617   case 263:
    6618 
    6619 /* Line 1806 of yacc.c  */
    6620 #line 1111 "parser.yy"
     6401  case 262:
     6402
     6403/* Line 1806 of yacc.c  */
     6404#line 1117 "parser.yy"
    66216405    {
    66226406                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    66256409    break;
    66266410
    6627   case 264:
    6628 
    6629 /* Line 1806 of yacc.c  */
    6630 #line 1116 "parser.yy"
     6411  case 263:
     6412
     6413/* Line 1806 of yacc.c  */
     6414#line 1122 "parser.yy"
    66316415    {
    66326416                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    66356419    break;
    66366420
    6637   case 269:
    6638 
    6639 /* Line 1806 of yacc.c  */
    6640 #line 1133 "parser.yy"
     6421  case 268:
     6422
     6423/* Line 1806 of yacc.c  */
     6424#line 1139 "parser.yy"
    66416425    {
    66426426                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66456429    break;
    66466430
    6647   case 270:
    6648 
    6649 /* Line 1806 of yacc.c  */
    6650 #line 1138 "parser.yy"
     6431  case 269:
     6432
     6433/* Line 1806 of yacc.c  */
     6434#line 1144 "parser.yy"
    66516435    {
    66526436                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66556439    break;
    66566440
    6657   case 279:
    6658 
    6659 /* Line 1806 of yacc.c  */
    6660 #line 1160 "parser.yy"
     6441  case 278:
     6442
     6443/* Line 1806 of yacc.c  */
     6444#line 1166 "parser.yy"
    66616445    { (yyval.decl) = 0; }
    66626446    break;
    66636447
    6664   case 282:
    6665 
    6666 /* Line 1806 of yacc.c  */
    6667 #line 1172 "parser.yy"
     6448  case 281:
     6449
     6450/* Line 1806 of yacc.c  */
     6451#line 1178 "parser.yy"
    66686452    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66696453    break;
    66706454
     6455  case 283:
     6456
     6457/* Line 1806 of yacc.c  */
     6458#line 1184 "parser.yy"
     6459    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     6460    break;
     6461
    66716462  case 284:
    66726463
    66736464/* Line 1806 of yacc.c  */
    6674 #line 1178 "parser.yy"
    6675     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     6465#line 1189 "parser.yy"
     6466    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    66766467    break;
    66776468
     
    66796470
    66806471/* Line 1806 of yacc.c  */
    6681 #line 1183 "parser.yy"
    6682     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6472#line 1191 "parser.yy"
     6473    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66836474    break;
    66846475
     
    66866477
    66876478/* Line 1806 of yacc.c  */
    6688 #line 1185 "parser.yy"
    6689     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6479#line 1193 "parser.yy"
     6480    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66906481    break;
    66916482
     
    66936484
    66946485/* Line 1806 of yacc.c  */
    6695 #line 1187 "parser.yy"
    6696     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6486#line 1195 "parser.yy"
     6487    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66976488    break;
    66986489
     
    67006491
    67016492/* Line 1806 of yacc.c  */
    6702 #line 1189 "parser.yy"
    6703     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6493#line 1197 "parser.yy"
     6494    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    67046495    break;
    67056496
     
    67076498
    67086499/* Line 1806 of yacc.c  */
    6709 #line 1191 "parser.yy"
    6710     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    6711     break;
    6712 
    6713   case 290:
    6714 
    6715 /* Line 1806 of yacc.c  */
    6716 #line 1193 "parser.yy"
     6500#line 1199 "parser.yy"
    67176501    {
    67186502                        typedefTable.enterScope();
     
    67206504    break;
    67216505
    6722   case 291:
    6723 
    6724 /* Line 1806 of yacc.c  */
    6725 #line 1197 "parser.yy"
     6506  case 290:
     6507
     6508/* Line 1806 of yacc.c  */
     6509#line 1203 "parser.yy"
    67266510    {
    67276511                        typedefTable.leaveScope();
     
    67306514    break;
    67316515
     6516  case 292:
     6517
     6518/* Line 1806 of yacc.c  */
     6519#line 1212 "parser.yy"
     6520    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6521    break;
     6522
    67326523  case 293:
    67336524
    67346525/* Line 1806 of yacc.c  */
    6735 #line 1206 "parser.yy"
     6526#line 1214 "parser.yy"
     6527    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6528    break;
     6529
     6530  case 295:
     6531
     6532/* Line 1806 of yacc.c  */
     6533#line 1225 "parser.yy"
    67366534    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67376535    break;
    67386536
    6739   case 294:
    6740 
    6741 /* Line 1806 of yacc.c  */
    6742 #line 1208 "parser.yy"
     6537  case 297:
     6538
     6539/* Line 1806 of yacc.c  */
     6540#line 1234 "parser.yy"
     6541    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6542    break;
     6543
     6544  case 298:
     6545
     6546/* Line 1806 of yacc.c  */
     6547#line 1236 "parser.yy"
     6548    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6549    break;
     6550
     6551  case 299:
     6552
     6553/* Line 1806 of yacc.c  */
     6554#line 1238 "parser.yy"
     6555    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6556    break;
     6557
     6558  case 300:
     6559
     6560/* Line 1806 of yacc.c  */
     6561#line 1240 "parser.yy"
     6562    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6563    break;
     6564
     6565  case 301:
     6566
     6567/* Line 1806 of yacc.c  */
     6568#line 1242 "parser.yy"
     6569    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6570    break;
     6571
     6572  case 302:
     6573
     6574/* Line 1806 of yacc.c  */
     6575#line 1244 "parser.yy"
     6576    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6577    break;
     6578
     6579  case 303:
     6580
     6581/* Line 1806 of yacc.c  */
     6582#line 1246 "parser.yy"
     6583    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6584    break;
     6585
     6586  case 304:
     6587
     6588/* Line 1806 of yacc.c  */
     6589#line 1248 "parser.yy"
     6590    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6591    break;
     6592
     6593  case 305:
     6594
     6595/* Line 1806 of yacc.c  */
     6596#line 1253 "parser.yy"
     6597    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6598    break;
     6599
     6600  case 306:
     6601
     6602/* Line 1806 of yacc.c  */
     6603#line 1255 "parser.yy"
     6604    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6605    break;
     6606
     6607  case 307:
     6608
     6609/* Line 1806 of yacc.c  */
     6610#line 1257 "parser.yy"
     6611    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6612    break;
     6613
     6614  case 308:
     6615
     6616/* Line 1806 of yacc.c  */
     6617#line 1259 "parser.yy"
     6618    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6619    break;
     6620
     6621  case 309:
     6622
     6623/* Line 1806 of yacc.c  */
     6624#line 1261 "parser.yy"
     6625    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6626    break;
     6627
     6628  case 310:
     6629
     6630/* Line 1806 of yacc.c  */
     6631#line 1263 "parser.yy"
     6632    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6633    break;
     6634
     6635  case 311:
     6636
     6637/* Line 1806 of yacc.c  */
     6638#line 1265 "parser.yy"
     6639    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6640    break;
     6641
     6642  case 312:
     6643
     6644/* Line 1806 of yacc.c  */
     6645#line 1267 "parser.yy"
     6646    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6647    break;
     6648
     6649  case 313:
     6650
     6651/* Line 1806 of yacc.c  */
     6652#line 1269 "parser.yy"
     6653    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6654    break;
     6655
     6656  case 314:
     6657
     6658/* Line 1806 of yacc.c  */
     6659#line 1271 "parser.yy"
     6660    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6661    break;
     6662
     6663  case 315:
     6664
     6665/* Line 1806 of yacc.c  */
     6666#line 1273 "parser.yy"
     6667    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6668    break;
     6669
     6670  case 316:
     6671
     6672/* Line 1806 of yacc.c  */
     6673#line 1275 "parser.yy"
     6674    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6675    break;
     6676
     6677  case 318:
     6678
     6679/* Line 1806 of yacc.c  */
     6680#line 1282 "parser.yy"
     6681    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6682    break;
     6683
     6684  case 319:
     6685
     6686/* Line 1806 of yacc.c  */
     6687#line 1284 "parser.yy"
     6688    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6689    break;
     6690
     6691  case 320:
     6692
     6693/* Line 1806 of yacc.c  */
     6694#line 1286 "parser.yy"
    67436695    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67446696    break;
    67456697
    6746   case 296:
    6747 
    6748 /* Line 1806 of yacc.c  */
    6749 #line 1219 "parser.yy"
     6698  case 321:
     6699
     6700/* Line 1806 of yacc.c  */
     6701#line 1288 "parser.yy"
     6702    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6703    break;
     6704
     6705  case 323:
     6706
     6707/* Line 1806 of yacc.c  */
     6708#line 1294 "parser.yy"
     6709    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6710    break;
     6711
     6712  case 325:
     6713
     6714/* Line 1806 of yacc.c  */
     6715#line 1301 "parser.yy"
     6716    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6717    break;
     6718
     6719  case 326:
     6720
     6721/* Line 1806 of yacc.c  */
     6722#line 1303 "parser.yy"
    67506723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67516724    break;
    67526725
    6753   case 298:
    6754 
    6755 /* Line 1806 of yacc.c  */
    6756 #line 1228 "parser.yy"
    6757     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6758     break;
    6759 
    6760   case 299:
    6761 
    6762 /* Line 1806 of yacc.c  */
    6763 #line 1230 "parser.yy"
    6764     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6765     break;
    6766 
    6767   case 300:
    6768 
    6769 /* Line 1806 of yacc.c  */
    6770 #line 1232 "parser.yy"
    6771     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6772     break;
    6773 
    6774   case 301:
    6775 
    6776 /* Line 1806 of yacc.c  */
    6777 #line 1234 "parser.yy"
    6778     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6779     break;
    6780 
    6781   case 302:
    6782 
    6783 /* Line 1806 of yacc.c  */
    6784 #line 1236 "parser.yy"
    6785     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6786     break;
    6787 
    6788   case 303:
    6789 
    6790 /* Line 1806 of yacc.c  */
    6791 #line 1238 "parser.yy"
    6792     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6793     break;
    6794 
    6795   case 304:
    6796 
    6797 /* Line 1806 of yacc.c  */
    6798 #line 1240 "parser.yy"
    6799     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6800     break;
    6801 
    6802   case 305:
    6803 
    6804 /* Line 1806 of yacc.c  */
    6805 #line 1242 "parser.yy"
    6806     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6807     break;
    6808 
    6809   case 306:
    6810 
    6811 /* Line 1806 of yacc.c  */
    6812 #line 1247 "parser.yy"
    6813     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6814     break;
    6815 
    6816   case 307:
    6817 
    6818 /* Line 1806 of yacc.c  */
    6819 #line 1249 "parser.yy"
    6820     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6821     break;
    6822 
    6823   case 308:
    6824 
    6825 /* Line 1806 of yacc.c  */
    6826 #line 1251 "parser.yy"
    6827     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6828     break;
    6829 
    6830   case 309:
    6831 
    6832 /* Line 1806 of yacc.c  */
    6833 #line 1253 "parser.yy"
    6834     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6835     break;
    6836 
    6837   case 310:
    6838 
    6839 /* Line 1806 of yacc.c  */
    6840 #line 1255 "parser.yy"
    6841     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6842     break;
    6843 
    6844   case 311:
    6845 
    6846 /* Line 1806 of yacc.c  */
    6847 #line 1257 "parser.yy"
    6848     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    6849     break;
    6850 
    6851   case 312:
    6852 
    6853 /* Line 1806 of yacc.c  */
    6854 #line 1259 "parser.yy"
    6855     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    6856     break;
    6857 
    6858   case 313:
    6859 
    6860 /* Line 1806 of yacc.c  */
    6861 #line 1261 "parser.yy"
    6862     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    6863     break;
    6864 
    6865   case 314:
    6866 
    6867 /* Line 1806 of yacc.c  */
    6868 #line 1263 "parser.yy"
    6869     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6870     break;
    6871 
    6872   case 315:
    6873 
    6874 /* Line 1806 of yacc.c  */
    6875 #line 1265 "parser.yy"
    6876     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6877     break;
    6878 
    6879   case 316:
    6880 
    6881 /* Line 1806 of yacc.c  */
    6882 #line 1267 "parser.yy"
    6883     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    6884     break;
    6885 
    6886   case 317:
    6887 
    6888 /* Line 1806 of yacc.c  */
    6889 #line 1269 "parser.yy"
    6890     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    6891     break;
    6892 
    6893   case 319:
    6894 
    6895 /* Line 1806 of yacc.c  */
    6896 #line 1276 "parser.yy"
     6726  case 327:
     6727
     6728/* Line 1806 of yacc.c  */
     6729#line 1305 "parser.yy"
     6730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6731    break;
     6732
     6733  case 328:
     6734
     6735/* Line 1806 of yacc.c  */
     6736#line 1310 "parser.yy"
     6737    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6738    break;
     6739
     6740  case 329:
     6741
     6742/* Line 1806 of yacc.c  */
     6743#line 1312 "parser.yy"
     6744    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6745    break;
     6746
     6747  case 330:
     6748
     6749/* Line 1806 of yacc.c  */
     6750#line 1314 "parser.yy"
     6751    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6752    break;
     6753
     6754  case 331:
     6755
     6756/* Line 1806 of yacc.c  */
     6757#line 1316 "parser.yy"
     6758    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6759    break;
     6760
     6761  case 333:
     6762
     6763/* Line 1806 of yacc.c  */
     6764#line 1322 "parser.yy"
    68976765    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68986766    break;
    68996767
    6900   case 320:
    6901 
    6902 /* Line 1806 of yacc.c  */
    6903 #line 1278 "parser.yy"
     6768  case 334:
     6769
     6770/* Line 1806 of yacc.c  */
     6771#line 1324 "parser.yy"
    69046772    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69056773    break;
    69066774
    6907   case 321:
    6908 
    6909 /* Line 1806 of yacc.c  */
    6910 #line 1280 "parser.yy"
     6775  case 335:
     6776
     6777/* Line 1806 of yacc.c  */
     6778#line 1326 "parser.yy"
    69116779    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69126780    break;
    69136781
    6914   case 322:
    6915 
    6916 /* Line 1806 of yacc.c  */
    6917 #line 1282 "parser.yy"
    6918     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    6919     break;
    6920 
    6921   case 324:
    6922 
    6923 /* Line 1806 of yacc.c  */
    6924 #line 1288 "parser.yy"
    6925     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    6926     break;
    6927 
    6928   case 326:
    6929 
    6930 /* Line 1806 of yacc.c  */
    6931 #line 1295 "parser.yy"
     6782  case 337:
     6783
     6784/* Line 1806 of yacc.c  */
     6785#line 1332 "parser.yy"
    69326786    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69336787    break;
    69346788
    6935   case 327:
    6936 
    6937 /* Line 1806 of yacc.c  */
    6938 #line 1297 "parser.yy"
     6789  case 338:
     6790
     6791/* Line 1806 of yacc.c  */
     6792#line 1334 "parser.yy"
    69396793    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69406794    break;
    69416795
    6942   case 328:
    6943 
    6944 /* Line 1806 of yacc.c  */
    6945 #line 1299 "parser.yy"
    6946     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    6947     break;
    6948 
    6949   case 329:
    6950 
    6951 /* Line 1806 of yacc.c  */
    6952 #line 1304 "parser.yy"
    6953     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    6954     break;
    6955 
    6956   case 330:
    6957 
    6958 /* Line 1806 of yacc.c  */
    6959 #line 1306 "parser.yy"
    6960     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    6961     break;
    6962 
    6963   case 331:
    6964 
    6965 /* Line 1806 of yacc.c  */
    6966 #line 1308 "parser.yy"
    6967     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    6968     break;
    6969 
    6970   case 332:
    6971 
    6972 /* Line 1806 of yacc.c  */
    6973 #line 1310 "parser.yy"
    6974     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    6975     break;
    6976 
    6977   case 334:
    6978 
    6979 /* Line 1806 of yacc.c  */
    6980 #line 1316 "parser.yy"
     6796  case 340:
     6797
     6798/* Line 1806 of yacc.c  */
     6799#line 1340 "parser.yy"
    69816800    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69826801    break;
    69836802
    6984   case 335:
    6985 
    6986 /* Line 1806 of yacc.c  */
    6987 #line 1318 "parser.yy"
     6803  case 341:
     6804
     6805/* Line 1806 of yacc.c  */
     6806#line 1342 "parser.yy"
    69886807    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69896808    break;
    69906809
    6991   case 336:
    6992 
    6993 /* Line 1806 of yacc.c  */
    6994 #line 1320 "parser.yy"
     6810  case 342:
     6811
     6812/* Line 1806 of yacc.c  */
     6813#line 1344 "parser.yy"
    69956814    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69966815    break;
    69976816
    6998   case 338:
    6999 
    7000 /* Line 1806 of yacc.c  */
    7001 #line 1326 "parser.yy"
     6817  case 343:
     6818
     6819/* Line 1806 of yacc.c  */
     6820#line 1349 "parser.yy"
     6821    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6822    break;
     6823
     6824  case 344:
     6825
     6826/* Line 1806 of yacc.c  */
     6827#line 1351 "parser.yy"
     6828    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6829    break;
     6830
     6831  case 345:
     6832
     6833/* Line 1806 of yacc.c  */
     6834#line 1353 "parser.yy"
     6835    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6836    break;
     6837
     6838  case 348:
     6839
     6840/* Line 1806 of yacc.c  */
     6841#line 1363 "parser.yy"
     6842    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
     6843    break;
     6844
     6845  case 349:
     6846
     6847/* Line 1806 of yacc.c  */
     6848#line 1365 "parser.yy"
     6849    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
     6850    break;
     6851
     6852  case 350:
     6853
     6854/* Line 1806 of yacc.c  */
     6855#line 1367 "parser.yy"
     6856    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
     6857    break;
     6858
     6859  case 351:
     6860
     6861/* Line 1806 of yacc.c  */
     6862#line 1369 "parser.yy"
     6863    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
     6864    break;
     6865
     6866  case 352:
     6867
     6868/* Line 1806 of yacc.c  */
     6869#line 1371 "parser.yy"
     6870    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6871    break;
     6872
     6873  case 353:
     6874
     6875/* Line 1806 of yacc.c  */
     6876#line 1376 "parser.yy"
     6877    { (yyval.aggKey) = DeclarationNode::Struct; }
     6878    break;
     6879
     6880  case 354:
     6881
     6882/* Line 1806 of yacc.c  */
     6883#line 1378 "parser.yy"
     6884    { (yyval.aggKey) = DeclarationNode::Union; }
     6885    break;
     6886
     6887  case 355:
     6888
     6889/* Line 1806 of yacc.c  */
     6890#line 1383 "parser.yy"
     6891    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
     6892    break;
     6893
     6894  case 356:
     6895
     6896/* Line 1806 of yacc.c  */
     6897#line 1385 "parser.yy"
     6898    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     6899    break;
     6900
     6901  case 358:
     6902
     6903/* Line 1806 of yacc.c  */
     6904#line 1391 "parser.yy"
     6905    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     6906    break;
     6907
     6908  case 360:
     6909
     6910/* Line 1806 of yacc.c  */
     6911#line 1394 "parser.yy"
     6912    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     6913    break;
     6914
     6915  case 362:
     6916
     6917/* Line 1806 of yacc.c  */
     6918#line 1400 "parser.yy"
     6919    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     6920    break;
     6921
     6922  case 363:
     6923
     6924/* Line 1806 of yacc.c  */
     6925#line 1402 "parser.yy"
     6926    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     6927    break;
     6928
     6929  case 364:
     6930
     6931/* Line 1806 of yacc.c  */
     6932#line 1404 "parser.yy"
     6933    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     6934    break;
     6935
     6936  case 365:
     6937
     6938/* Line 1806 of yacc.c  */
     6939#line 1409 "parser.yy"
     6940    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     6941    break;
     6942
     6943  case 366:
     6944
     6945/* Line 1806 of yacc.c  */
     6946#line 1411 "parser.yy"
     6947    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     6948    break;
     6949
     6950  case 367:
     6951
     6952/* Line 1806 of yacc.c  */
     6953#line 1416 "parser.yy"
     6954    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     6955    break;
     6956
     6957  case 368:
     6958
     6959/* Line 1806 of yacc.c  */
     6960#line 1418 "parser.yy"
     6961    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     6962    break;
     6963
     6964  case 369:
     6965
     6966/* Line 1806 of yacc.c  */
     6967#line 1421 "parser.yy"
     6968    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     6969    break;
     6970
     6971  case 370:
     6972
     6973/* Line 1806 of yacc.c  */
     6974#line 1424 "parser.yy"
     6975    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     6976    break;
     6977
     6978  case 372:
     6979
     6980/* Line 1806 of yacc.c  */
     6981#line 1430 "parser.yy"
     6982    { (yyval.en) = 0; }
     6983    break;
     6984
     6985  case 373:
     6986
     6987/* Line 1806 of yacc.c  */
     6988#line 1432 "parser.yy"
     6989    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     6990    break;
     6991
     6992  case 374:
     6993
     6994/* Line 1806 of yacc.c  */
     6995#line 1437 "parser.yy"
     6996    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     6997    break;
     6998
     6999  case 376:
     7000
     7001/* Line 1806 of yacc.c  */
     7002#line 1446 "parser.yy"
     7003    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7004    break;
     7005
     7006  case 377:
     7007
     7008/* Line 1806 of yacc.c  */
     7009#line 1448 "parser.yy"
     7010    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     7011    break;
     7012
     7013  case 378:
     7014
     7015/* Line 1806 of yacc.c  */
     7016#line 1450 "parser.yy"
     7017    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
     7018    break;
     7019
     7020  case 379:
     7021
     7022/* Line 1806 of yacc.c  */
     7023#line 1455 "parser.yy"
     7024    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7025    break;
     7026
     7027  case 380:
     7028
     7029/* Line 1806 of yacc.c  */
     7030#line 1457 "parser.yy"
     7031    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7032    break;
     7033
     7034  case 381:
     7035
     7036/* Line 1806 of yacc.c  */
     7037#line 1462 "parser.yy"
     7038    { (yyval.en) = 0; }
     7039    break;
     7040
     7041  case 382:
     7042
     7043/* Line 1806 of yacc.c  */
     7044#line 1464 "parser.yy"
     7045    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7046    break;
     7047
     7048  case 383:
     7049
     7050/* Line 1806 of yacc.c  */
     7051#line 1471 "parser.yy"
     7052    { (yyval.decl) = 0; }
     7053    break;
     7054
     7055  case 387:
     7056
     7057/* Line 1806 of yacc.c  */
     7058#line 1479 "parser.yy"
     7059    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7060    break;
     7061
     7062  case 388:
     7063
     7064/* Line 1806 of yacc.c  */
     7065#line 1481 "parser.yy"
     7066    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7067    break;
     7068
     7069  case 389:
     7070
     7071/* Line 1806 of yacc.c  */
     7072#line 1483 "parser.yy"
     7073    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7074    break;
     7075
     7076  case 391:
     7077
     7078/* Line 1806 of yacc.c  */
     7079#line 1491 "parser.yy"
     7080    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7081    break;
     7082
     7083  case 392:
     7084
     7085/* Line 1806 of yacc.c  */
     7086#line 1493 "parser.yy"
     7087    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7088    break;
     7089
     7090  case 393:
     7091
     7092/* Line 1806 of yacc.c  */
     7093#line 1495 "parser.yy"
     7094    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7095    break;
     7096
     7097  case 395:
     7098
     7099/* Line 1806 of yacc.c  */
     7100#line 1501 "parser.yy"
     7101    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7102    break;
     7103
     7104  case 396:
     7105
     7106/* Line 1806 of yacc.c  */
     7107#line 1506 "parser.yy"
     7108    { (yyval.decl) = 0; }
     7109    break;
     7110
     7111  case 399:
     7112
     7113/* Line 1806 of yacc.c  */
     7114#line 1513 "parser.yy"
     7115    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7116    break;
     7117
     7118  case 402:
     7119
     7120/* Line 1806 of yacc.c  */
     7121#line 1520 "parser.yy"
     7122    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7123    break;
     7124
     7125  case 403:
     7126
     7127/* Line 1806 of yacc.c  */
     7128#line 1522 "parser.yy"
     7129    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7130    break;
     7131
     7132  case 405:
     7133
     7134/* Line 1806 of yacc.c  */
     7135#line 1531 "parser.yy"
     7136    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7137    break;
     7138
     7139  case 406:
     7140
     7141/* Line 1806 of yacc.c  */
     7142#line 1534 "parser.yy"
     7143    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7144    break;
     7145
     7146  case 407:
     7147
     7148/* Line 1806 of yacc.c  */
     7149#line 1536 "parser.yy"
     7150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     7151    break;
     7152
     7153  case 412:
     7154
     7155/* Line 1806 of yacc.c  */
     7156#line 1546 "parser.yy"
    70027157    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70037158    break;
    70047159
    7005   case 339:
    7006 
    7007 /* Line 1806 of yacc.c  */
    7008 #line 1328 "parser.yy"
    7009     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7010     break;
    7011 
    7012   case 341:
    7013 
    7014 /* Line 1806 of yacc.c  */
    7015 #line 1334 "parser.yy"
    7016     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7017     break;
    7018 
    7019   case 342:
    7020 
    7021 /* Line 1806 of yacc.c  */
    7022 #line 1336 "parser.yy"
    7023     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7024     break;
    7025 
    7026   case 343:
    7027 
    7028 /* Line 1806 of yacc.c  */
    7029 #line 1338 "parser.yy"
    7030     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7031     break;
    7032 
    7033   case 344:
    7034 
    7035 /* Line 1806 of yacc.c  */
    7036 #line 1343 "parser.yy"
    7037     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    7038     break;
    7039 
    7040   case 345:
    7041 
    7042 /* Line 1806 of yacc.c  */
    7043 #line 1345 "parser.yy"
    7044     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7045     break;
    7046 
    7047   case 346:
    7048 
    7049 /* Line 1806 of yacc.c  */
    7050 #line 1347 "parser.yy"
    7051     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7052     break;
    7053 
    7054   case 349:
    7055 
    7056 /* Line 1806 of yacc.c  */
    7057 #line 1357 "parser.yy"
    7058     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
    7059     break;
    7060 
    7061   case 350:
    7062 
    7063 /* Line 1806 of yacc.c  */
    7064 #line 1359 "parser.yy"
    7065     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
    7066     break;
    7067 
    7068   case 351:
    7069 
    7070 /* Line 1806 of yacc.c  */
    7071 #line 1361 "parser.yy"
    7072     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
    7073     break;
    7074 
    7075   case 352:
    7076 
    7077 /* Line 1806 of yacc.c  */
    7078 #line 1363 "parser.yy"
    7079     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
    7080     break;
    7081 
    7082   case 353:
    7083 
    7084 /* Line 1806 of yacc.c  */
    7085 #line 1365 "parser.yy"
    7086     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
    7087     break;
    7088 
    7089   case 354:
    7090 
    7091 /* Line 1806 of yacc.c  */
    7092 #line 1367 "parser.yy"
    7093     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
    7094     break;
    7095 
    7096   case 355:
    7097 
    7098 /* Line 1806 of yacc.c  */
    7099 #line 1369 "parser.yy"
    7100     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
    7101     break;
    7102 
    7103   case 356:
    7104 
    7105 /* Line 1806 of yacc.c  */
    7106 #line 1371 "parser.yy"
    7107     {}
    7108     break;
    7109 
    7110   case 357:
    7111 
    7112 /* Line 1806 of yacc.c  */
    7113 #line 1374 "parser.yy"
    7114     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
    7115     break;
    7116 
    7117   case 358:
    7118 
    7119 /* Line 1806 of yacc.c  */
    7120 #line 1376 "parser.yy"
    7121     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
    7122     break;
    7123 
    7124   case 359:
    7125 
    7126 /* Line 1806 of yacc.c  */
    7127 #line 1381 "parser.yy"
    7128     { (yyval.aggKey) = DeclarationNode::Struct; }
    7129     break;
    7130 
    7131   case 360:
    7132 
    7133 /* Line 1806 of yacc.c  */
    7134 #line 1383 "parser.yy"
    7135     { (yyval.aggKey) = DeclarationNode::Union; }
    7136     break;
    7137 
    7138   case 361:
    7139 
    7140 /* Line 1806 of yacc.c  */
    7141 #line 1388 "parser.yy"
    7142     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    7143     break;
    7144 
    7145   case 362:
    7146 
    7147 /* Line 1806 of yacc.c  */
    7148 #line 1390 "parser.yy"
    7149     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7150     break;
    7151 
    7152   case 364:
    7153 
    7154 /* Line 1806 of yacc.c  */
    7155 #line 1396 "parser.yy"
    7156     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7157     break;
    7158 
    7159   case 366:
    7160 
    7161 /* Line 1806 of yacc.c  */
    7162 #line 1399 "parser.yy"
    7163     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    7164     break;
    7165 
    7166   case 368:
    7167 
    7168 /* Line 1806 of yacc.c  */
    7169 #line 1405 "parser.yy"
    7170     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    7171     break;
    7172 
    7173   case 369:
    7174 
    7175 /* Line 1806 of yacc.c  */
    7176 #line 1407 "parser.yy"
    7177     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    7178     break;
    7179 
    7180   case 370:
    7181 
    7182 /* Line 1806 of yacc.c  */
    7183 #line 1409 "parser.yy"
    7184     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7185     break;
    7186 
    7187   case 371:
    7188 
    7189 /* Line 1806 of yacc.c  */
    7190 #line 1414 "parser.yy"
    7191     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7192     break;
    7193 
    7194   case 372:
    7195 
    7196 /* Line 1806 of yacc.c  */
    7197 #line 1416 "parser.yy"
    7198     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7199     break;
    7200 
    7201   case 373:
    7202 
    7203 /* Line 1806 of yacc.c  */
    7204 #line 1421 "parser.yy"
    7205     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7206     break;
    7207 
    7208   case 374:
    7209 
    7210 /* Line 1806 of yacc.c  */
    7211 #line 1423 "parser.yy"
    7212     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7213     break;
    7214 
    7215   case 375:
    7216 
    7217 /* Line 1806 of yacc.c  */
    7218 #line 1426 "parser.yy"
    7219     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7220     break;
    7221 
    7222   case 376:
    7223 
    7224 /* Line 1806 of yacc.c  */
    7225 #line 1429 "parser.yy"
    7226     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7227     break;
    7228 
    7229   case 378:
    7230 
    7231 /* Line 1806 of yacc.c  */
    7232 #line 1435 "parser.yy"
    7233     { (yyval.en) = 0; }
    7234     break;
    7235 
    7236   case 379:
    7237 
    7238 /* Line 1806 of yacc.c  */
    7239 #line 1437 "parser.yy"
    7240     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7241     break;
    7242 
    7243   case 380:
    7244 
    7245 /* Line 1806 of yacc.c  */
    7246 #line 1442 "parser.yy"
    7247     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7248     break;
    7249 
    7250   case 382:
    7251 
    7252 /* Line 1806 of yacc.c  */
    7253 #line 1451 "parser.yy"
    7254     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7255     break;
    7256 
    7257   case 383:
    7258 
    7259 /* Line 1806 of yacc.c  */
    7260 #line 1453 "parser.yy"
    7261     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    7262     break;
    7263 
    7264   case 384:
    7265 
    7266 /* Line 1806 of yacc.c  */
    7267 #line 1455 "parser.yy"
    7268     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    7269     break;
    7270 
    7271   case 385:
    7272 
    7273 /* Line 1806 of yacc.c  */
    7274 #line 1460 "parser.yy"
    7275     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7276     break;
    7277 
    7278   case 386:
    7279 
    7280 /* Line 1806 of yacc.c  */
    7281 #line 1462 "parser.yy"
    7282     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7283     break;
    7284 
    7285   case 387:
    7286 
    7287 /* Line 1806 of yacc.c  */
    7288 #line 1467 "parser.yy"
    7289     { (yyval.en) = 0; }
    7290     break;
    7291 
    7292   case 388:
    7293 
    7294 /* Line 1806 of yacc.c  */
    7295 #line 1469 "parser.yy"
    7296     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7297     break;
    7298 
    7299   case 389:
    7300 
    7301 /* Line 1806 of yacc.c  */
    7302 #line 1476 "parser.yy"
    7303     { (yyval.decl) = 0; }
    7304     break;
    7305 
    7306   case 393:
    7307 
    7308 /* Line 1806 of yacc.c  */
    7309 #line 1484 "parser.yy"
    7310     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7311     break;
    7312 
    7313   case 394:
    7314 
    7315 /* Line 1806 of yacc.c  */
    7316 #line 1486 "parser.yy"
    7317     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7318     break;
    7319 
    7320   case 395:
    7321 
    7322 /* Line 1806 of yacc.c  */
    7323 #line 1488 "parser.yy"
    7324     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7325     break;
    7326 
    7327   case 397:
    7328 
    7329 /* Line 1806 of yacc.c  */
    7330 #line 1496 "parser.yy"
    7331     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7332     break;
    7333 
    7334   case 398:
    7335 
    7336 /* Line 1806 of yacc.c  */
    7337 #line 1498 "parser.yy"
    7338     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7339     break;
    7340 
    7341   case 399:
    7342 
    7343 /* Line 1806 of yacc.c  */
    7344 #line 1500 "parser.yy"
    7345     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7346     break;
    7347 
    7348   case 401:
    7349 
    7350 /* Line 1806 of yacc.c  */
    7351 #line 1506 "parser.yy"
    7352     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7353     break;
    7354 
    7355   case 402:
    7356 
    7357 /* Line 1806 of yacc.c  */
    7358 #line 1511 "parser.yy"
    7359     { (yyval.decl) = 0; }
    7360     break;
    7361 
    7362   case 405:
    7363 
    7364 /* Line 1806 of yacc.c  */
    7365 #line 1518 "parser.yy"
    7366     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7367     break;
    7368 
    7369   case 408:
    7370 
    7371 /* Line 1806 of yacc.c  */
    7372 #line 1525 "parser.yy"
    7373     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7374     break;
    7375 
    7376   case 409:
    7377 
    7378 /* Line 1806 of yacc.c  */
    7379 #line 1527 "parser.yy"
    7380     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7381     break;
    7382 
    7383   case 411:
    7384 
    7385 /* Line 1806 of yacc.c  */
    7386 #line 1536 "parser.yy"
    7387     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7388     break;
    7389 
    7390   case 412:
    7391 
    7392 /* Line 1806 of yacc.c  */
    7393 #line 1539 "parser.yy"
    7394     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7395     break;
    7396 
    7397   case 413:
    7398 
    7399 /* Line 1806 of yacc.c  */
    7400 #line 1541 "parser.yy"
    7401     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7402     break;
    7403 
    7404   case 418:
    7405 
    7406 /* Line 1806 of yacc.c  */
    7407 #line 1551 "parser.yy"
    7408     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7409     break;
    7410 
    7411   case 420:
     7160  case 414:
     7161
     7162/* Line 1806 of yacc.c  */
     7163#line 1552 "parser.yy"
     7164    {
     7165                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7166                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7167                }
     7168    break;
     7169
     7170  case 415:
    74127171
    74137172/* Line 1806 of yacc.c  */
     
    74197178    break;
    74207179
    7421   case 421:
    7422 
    7423 /* Line 1806 of yacc.c  */
    7424 #line 1562 "parser.yy"
     7180  case 417:
     7181
     7182/* Line 1806 of yacc.c  */
     7183#line 1566 "parser.yy"
     7184    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7185    break;
     7186
     7187  case 418:
     7188
     7189/* Line 1806 of yacc.c  */
     7190#line 1575 "parser.yy"
     7191    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7192    break;
     7193
     7194  case 419:
     7195
     7196/* Line 1806 of yacc.c  */
     7197#line 1577 "parser.yy"
     7198    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7199    break;
     7200
     7201  case 431:
     7202
     7203/* Line 1806 of yacc.c  */
     7204#line 1602 "parser.yy"
     7205    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7206    break;
     7207
     7208  case 435:
     7209
     7210/* Line 1806 of yacc.c  */
     7211#line 1610 "parser.yy"
     7212    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7213    break;
     7214
     7215  case 436:
     7216
     7217/* Line 1806 of yacc.c  */
     7218#line 1615 "parser.yy"
     7219    { (yyval.in) = 0; }
     7220    break;
     7221
     7222  case 437:
     7223
     7224/* Line 1806 of yacc.c  */
     7225#line 1617 "parser.yy"
     7226    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7227    break;
     7228
     7229  case 438:
     7230
     7231/* Line 1806 of yacc.c  */
     7232#line 1621 "parser.yy"
     7233    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7234    break;
     7235
     7236  case 439:
     7237
     7238/* Line 1806 of yacc.c  */
     7239#line 1622 "parser.yy"
     7240    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7241    break;
     7242
     7243  case 441:
     7244
     7245/* Line 1806 of yacc.c  */
     7246#line 1627 "parser.yy"
     7247    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7248    break;
     7249
     7250  case 442:
     7251
     7252/* Line 1806 of yacc.c  */
     7253#line 1628 "parser.yy"
     7254    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7255    break;
     7256
     7257  case 443:
     7258
     7259/* Line 1806 of yacc.c  */
     7260#line 1630 "parser.yy"
     7261    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7262    break;
     7263
     7264  case 445:
     7265
     7266/* Line 1806 of yacc.c  */
     7267#line 1646 "parser.yy"
     7268    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     7269    break;
     7270
     7271  case 447:
     7272
     7273/* Line 1806 of yacc.c  */
     7274#line 1652 "parser.yy"
     7275    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7276    break;
     7277
     7278  case 448:
     7279
     7280/* Line 1806 of yacc.c  */
     7281#line 1658 "parser.yy"
     7282    { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
     7283    break;
     7284
     7285  case 449:
     7286
     7287/* Line 1806 of yacc.c  */
     7288#line 1661 "parser.yy"
     7289    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7290    break;
     7291
     7292  case 450:
     7293
     7294/* Line 1806 of yacc.c  */
     7295#line 1663 "parser.yy"
     7296    { (yyval.en) = (yyvsp[(3) - (5)].en); }
     7297    break;
     7298
     7299  case 451:
     7300
     7301/* Line 1806 of yacc.c  */
     7302#line 1665 "parser.yy"
     7303    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
     7304    break;
     7305
     7306  case 452:
     7307
     7308/* Line 1806 of yacc.c  */
     7309#line 1667 "parser.yy"
     7310    { (yyval.en) = (yyvsp[(4) - (6)].en); }
     7311    break;
     7312
     7313  case 454:
     7314
     7315/* Line 1806 of yacc.c  */
     7316#line 1691 "parser.yy"
     7317    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7318    break;
     7319
     7320  case 455:
     7321
     7322/* Line 1806 of yacc.c  */
     7323#line 1693 "parser.yy"
     7324    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7325    break;
     7326
     7327  case 456:
     7328
     7329/* Line 1806 of yacc.c  */
     7330#line 1695 "parser.yy"
     7331    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7332    break;
     7333
     7334  case 458:
     7335
     7336/* Line 1806 of yacc.c  */
     7337#line 1701 "parser.yy"
     7338    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7339    break;
     7340
     7341  case 459:
     7342
     7343/* Line 1806 of yacc.c  */
     7344#line 1703 "parser.yy"
     7345    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7346    break;
     7347
     7348  case 460:
     7349
     7350/* Line 1806 of yacc.c  */
     7351#line 1708 "parser.yy"
     7352    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     7353    break;
     7354
     7355  case 462:
     7356
     7357/* Line 1806 of yacc.c  */
     7358#line 1714 "parser.yy"
     7359    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     7360    break;
     7361
     7362  case 463:
     7363
     7364/* Line 1806 of yacc.c  */
     7365#line 1719 "parser.yy"
     7366    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7367    break;
     7368
     7369  case 464:
     7370
     7371/* Line 1806 of yacc.c  */
     7372#line 1721 "parser.yy"
     7373    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7374    break;
     7375
     7376  case 466:
     7377
     7378/* Line 1806 of yacc.c  */
     7379#line 1727 "parser.yy"
     7380    { (yyval.tclass) = DeclarationNode::Type; }
     7381    break;
     7382
     7383  case 467:
     7384
     7385/* Line 1806 of yacc.c  */
     7386#line 1729 "parser.yy"
     7387    { (yyval.tclass) = DeclarationNode::Ftype; }
     7388    break;
     7389
     7390  case 468:
     7391
     7392/* Line 1806 of yacc.c  */
     7393#line 1731 "parser.yy"
     7394    { (yyval.tclass) = DeclarationNode::Dtype; }
     7395    break;
     7396
     7397  case 469:
     7398
     7399/* Line 1806 of yacc.c  */
     7400#line 1736 "parser.yy"
     7401    { (yyval.decl) = 0; }
     7402    break;
     7403
     7404  case 470:
     7405
     7406/* Line 1806 of yacc.c  */
     7407#line 1738 "parser.yy"
     7408    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     7409    break;
     7410
     7411  case 471:
     7412
     7413/* Line 1806 of yacc.c  */
     7414#line 1743 "parser.yy"
    74257415    {
    7426                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7427                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
    7428                 }
    7429     break;
    7430 
    7431   case 423:
    7432 
    7433 /* Line 1806 of yacc.c  */
    7434 #line 1571 "parser.yy"
    7435     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7436     break;
    7437 
    7438   case 424:
    7439 
    7440 /* Line 1806 of yacc.c  */
    7441 #line 1580 "parser.yy"
    7442     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7443     break;
    7444 
    7445   case 425:
    7446 
    7447 /* Line 1806 of yacc.c  */
    7448 #line 1582 "parser.yy"
    7449     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7450     break;
    7451 
    7452   case 436:
    7453 
    7454 /* Line 1806 of yacc.c  */
    7455 #line 1607 "parser.yy"
    7456     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7457     break;
    7458 
    7459   case 440:
    7460 
    7461 /* Line 1806 of yacc.c  */
    7462 #line 1615 "parser.yy"
    7463     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7464     break;
    7465 
    7466   case 441:
    7467 
    7468 /* Line 1806 of yacc.c  */
    7469 #line 1620 "parser.yy"
    7470     { (yyval.in) = 0; }
    7471     break;
    7472 
    7473   case 442:
    7474 
    7475 /* Line 1806 of yacc.c  */
    7476 #line 1621 "parser.yy"
    7477     { (yyval.in) = (yyvsp[(2) - (2)].in); }
    7478     break;
    7479 
    7480   case 443:
    7481 
    7482 /* Line 1806 of yacc.c  */
    7483 #line 1625 "parser.yy"
    7484     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7485     break;
    7486 
    7487   case 444:
    7488 
    7489 /* Line 1806 of yacc.c  */
    7490 #line 1626 "parser.yy"
    7491     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7492     break;
    7493 
    7494   case 446:
    7495 
    7496 /* Line 1806 of yacc.c  */
    7497 #line 1631 "parser.yy"
    7498     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7499     break;
    7500 
    7501   case 447:
    7502 
    7503 /* Line 1806 of yacc.c  */
    7504 #line 1632 "parser.yy"
    7505     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7506     break;
    7507 
    7508   case 448:
    7509 
    7510 /* Line 1806 of yacc.c  */
    7511 #line 1634 "parser.yy"
    7512     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    7513     break;
    7514 
    7515   case 450:
    7516 
    7517 /* Line 1806 of yacc.c  */
    7518 #line 1650 "parser.yy"
    7519     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    7520     break;
    7521 
    7522   case 452:
    7523 
    7524 /* Line 1806 of yacc.c  */
    7525 #line 1655 "parser.yy"
    7526     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    7527     break;
    7528 
    7529   case 453:
    7530 
    7531 /* Line 1806 of yacc.c  */
    7532 #line 1661 "parser.yy"
    7533     { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
    7534     break;
    7535 
    7536   case 454:
    7537 
    7538 /* Line 1806 of yacc.c  */
    7539 #line 1664 "parser.yy"
    7540     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7541     break;
    7542 
    7543   case 455:
    7544 
    7545 /* Line 1806 of yacc.c  */
    7546 #line 1666 "parser.yy"
    7547     { (yyval.en) = (yyvsp[(3) - (5)].en); }
    7548     break;
    7549 
    7550   case 456:
    7551 
    7552 /* Line 1806 of yacc.c  */
    7553 #line 1668 "parser.yy"
    7554     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ); }
    7555     break;
    7556 
    7557   case 457:
    7558 
    7559 /* Line 1806 of yacc.c  */
    7560 #line 1670 "parser.yy"
    7561     { (yyval.en) = (yyvsp[(4) - (6)].en); }
    7562     break;
    7563 
    7564   case 459:
    7565 
    7566 /* Line 1806 of yacc.c  */
    7567 #line 1694 "parser.yy"
    7568     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7569     break;
    7570 
    7571   case 460:
    7572 
    7573 /* Line 1806 of yacc.c  */
    7574 #line 1696 "parser.yy"
    7575     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7576     break;
    7577 
    7578   case 461:
    7579 
    7580 /* Line 1806 of yacc.c  */
    7581 #line 1698 "parser.yy"
    7582     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7583     break;
    7584 
    7585   case 462:
    7586 
    7587 /* Line 1806 of yacc.c  */
    7588 #line 1703 "parser.yy"
    7589     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7590     break;
    7591 
    7592   case 463:
    7593 
    7594 /* Line 1806 of yacc.c  */
    7595 #line 1705 "parser.yy"
    7596     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
    7597     break;
    7598 
    7599   case 464:
    7600 
    7601 /* Line 1806 of yacc.c  */
    7602 #line 1707 "parser.yy"
    7603     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7604     break;
    7605 
    7606   case 466:
    7607 
    7608 /* Line 1806 of yacc.c  */
    7609 #line 1713 "parser.yy"
    7610     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7611     break;
    7612 
    7613   case 467:
    7614 
    7615 /* Line 1806 of yacc.c  */
    7616 #line 1718 "parser.yy"
    7617     { typedefTable.addToEnclosingScope(*( (yyvsp[(2) - (2)].tok) ), TypedefTable::TD ); }
    7618     break;
    7619 
    7620   case 468:
    7621 
    7622 /* Line 1806 of yacc.c  */
    7623 #line 1720 "parser.yy"
    7624     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7625     break;
    7626 
    7627   case 470:
    7628 
    7629 /* Line 1806 of yacc.c  */
    7630 #line 1726 "parser.yy"
    7631     { (yyval.tclass) = DeclarationNode::Type; }
    7632     break;
    7633 
    7634   case 471:
    7635 
    7636 /* Line 1806 of yacc.c  */
    7637 #line 1728 "parser.yy"
    7638     { (yyval.tclass) = DeclarationNode::Ftype; }
    7639     break;
    7640 
    7641   case 472:
    7642 
    7643 /* Line 1806 of yacc.c  */
    7644 #line 1730 "parser.yy"
    7645     { (yyval.tclass) = DeclarationNode::Dtype; }
    7646     break;
    7647 
    7648   case 473:
    7649 
    7650 /* Line 1806 of yacc.c  */
    7651 #line 1735 "parser.yy"
    7652     { (yyval.decl) = 0; }
    7653     break;
    7654 
    7655   case 474:
    7656 
    7657 /* Line 1806 of yacc.c  */
    7658 #line 1737 "parser.yy"
    7659     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7660     break;
    7661 
    7662   case 475:
    7663 
    7664 /* Line 1806 of yacc.c  */
    7665 #line 1742 "parser.yy"
    7666     {
    7667                         typedefTable.openContext( *( (yyvsp[(2) - (5)].tok) ) );
     7416                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
    76687417                        (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    76697418                }
    76707419    break;
    76717420
     7421  case 472:
     7422
     7423/* Line 1806 of yacc.c  */
     7424#line 1748 "parser.yy"
     7425    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7426    break;
     7427
     7428  case 473:
     7429
     7430/* Line 1806 of yacc.c  */
     7431#line 1750 "parser.yy"
     7432    { (yyval.decl) = 0; }
     7433    break;
     7434
     7435  case 474:
     7436
     7437/* Line 1806 of yacc.c  */
     7438#line 1755 "parser.yy"
     7439    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7440    break;
     7441
    76727442  case 476:
    76737443
    76747444/* Line 1806 of yacc.c  */
    7675 #line 1747 "parser.yy"
    7676     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7445#line 1758 "parser.yy"
     7446    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    76777447    break;
    76787448
     
    76807450
    76817451/* Line 1806 of yacc.c  */
    7682 #line 1749 "parser.yy"
    7683     { (yyval.decl) = 0; }
     7452#line 1760 "parser.yy"
     7453    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    76847454    break;
    76857455
     
    76877457
    76887458/* Line 1806 of yacc.c  */
    7689 #line 1754 "parser.yy"
    7690     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7459#line 1765 "parser.yy"
     7460    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7461    break;
     7462
     7463  case 479:
     7464
     7465/* Line 1806 of yacc.c  */
     7466#line 1767 "parser.yy"
     7467    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76917468    break;
    76927469
     
    76947471
    76957472/* Line 1806 of yacc.c  */
    7696 #line 1757 "parser.yy"
    7697     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7473#line 1769 "parser.yy"
     7474    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76987475    break;
    76997476
     
    77017478
    77027479/* Line 1806 of yacc.c  */
    7703 #line 1759 "parser.yy"
    7704     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7480#line 1774 "parser.yy"
     7481    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    77057482    break;
    77067483
     
    77087485
    77097486/* Line 1806 of yacc.c  */
    7710 #line 1764 "parser.yy"
    7711     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7487#line 1776 "parser.yy"
     7488    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    77127489    break;
    77137490
     
    77157492
    77167493/* Line 1806 of yacc.c  */
    7717 #line 1766 "parser.yy"
    7718     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7719     break;
    7720 
    7721   case 484:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1768 "parser.yy"
    7725     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7726     break;
    7727 
    7728   case 485:
    7729 
    7730 /* Line 1806 of yacc.c  */
    7731 #line 1773 "parser.yy"
    7732     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7733     break;
    7734 
    7735   case 486:
    7736 
    7737 /* Line 1806 of yacc.c  */
    7738 #line 1775 "parser.yy"
    7739     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7740     break;
    7741 
    7742   case 487:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1780 "parser.yy"
     7494#line 1781 "parser.yy"
    77467495    {
    77477496                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    77507499    break;
    77517500
    7752   case 488:
    7753 
    7754 /* Line 1806 of yacc.c  */
    7755 #line 1785 "parser.yy"
     7501  case 484:
     7502
     7503/* Line 1806 of yacc.c  */
     7504#line 1786 "parser.yy"
    77567505    {
    77577506                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    77607509    break;
    77617510
    7762   case 489:
    7763 
    7764 /* Line 1806 of yacc.c  */
    7765 #line 1793 "parser.yy"
     7511  case 485:
     7512
     7513/* Line 1806 of yacc.c  */
     7514#line 1794 "parser.yy"
    77667515    {
    77677516                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77707519    break;
    77717520
    7772   case 490:
    7773 
    7774 /* Line 1806 of yacc.c  */
    7775 #line 1798 "parser.yy"
     7521  case 486:
     7522
     7523/* Line 1806 of yacc.c  */
     7524#line 1799 "parser.yy"
    77767525    {
    77777526                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    77807529    break;
    77817530
    7782   case 491:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 1803 "parser.yy"
     7531  case 487:
     7532
     7533/* Line 1806 of yacc.c  */
     7534#line 1804 "parser.yy"
    77867535    {
    77877536                        typedefTable.leaveContext();
     
    77917540    break;
    77927541
    7793   case 493:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 1813 "parser.yy"
     7542  case 489:
     7543
     7544/* Line 1806 of yacc.c  */
     7545#line 1814 "parser.yy"
    77977546    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77987547    break;
    77997548
    7800   case 496:
    7801 
    7802 /* Line 1806 of yacc.c  */
    7803 #line 1823 "parser.yy"
     7549  case 492:
     7550
     7551/* Line 1806 of yacc.c  */
     7552#line 1824 "parser.yy"
    78047553    {
    78057554                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78087557    break;
    78097558
    7810   case 497:
    7811 
    7812 /* Line 1806 of yacc.c  */
    7813 #line 1828 "parser.yy"
     7559  case 493:
     7560
     7561/* Line 1806 of yacc.c  */
     7562#line 1829 "parser.yy"
    78147563    {
    78157564                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78187567    break;
    78197568
    7820   case 498:
    7821 
    7822 /* Line 1806 of yacc.c  */
    7823 #line 1833 "parser.yy"
     7569  case 494:
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1834 "parser.yy"
    78247573    {
    78257574                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    78287577    break;
    78297578
    7830   case 499:
    7831 
    7832 /* Line 1806 of yacc.c  */
    7833 #line 1841 "parser.yy"
     7579  case 495:
     7580
     7581/* Line 1806 of yacc.c  */
     7582#line 1842 "parser.yy"
    78347583    {
    78357584                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78387587    break;
    78397588
    7840   case 500:
    7841 
    7842 /* Line 1806 of yacc.c  */
    7843 #line 1846 "parser.yy"
     7589  case 496:
     7590
     7591/* Line 1806 of yacc.c  */
     7592#line 1847 "parser.yy"
    78447593    {
    78457594                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78487597    break;
    78497598
    7850   case 501:
    7851 
    7852 /* Line 1806 of yacc.c  */
    7853 #line 1856 "parser.yy"
     7599  case 497:
     7600
     7601/* Line 1806 of yacc.c  */
     7602#line 1857 "parser.yy"
    78547603    {}
    78557604    break;
    78567605
    7857   case 502:
    7858 
    7859 /* Line 1806 of yacc.c  */
    7860 #line 1858 "parser.yy"
     7606  case 498:
     7607
     7608/* Line 1806 of yacc.c  */
     7609#line 1859 "parser.yy"
    78617610    {
    78627611                        if ( theTree ) {
     
    78687617    break;
    78697618
    7870   case 504:
    7871 
    7872 /* Line 1806 of yacc.c  */
    7873 #line 1870 "parser.yy"
     7619  case 500:
     7620
     7621/* Line 1806 of yacc.c  */
     7622#line 1871 "parser.yy"
    78747623    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    78757624    break;
    78767625
     7626  case 501:
     7627
     7628/* Line 1806 of yacc.c  */
     7629#line 1876 "parser.yy"
     7630    { (yyval.decl) = 0; }
     7631    break;
     7632
    78777633  case 505:
    78787634
    78797635/* Line 1806 of yacc.c  */
    7880 #line 1875 "parser.yy"
    7881     { (yyval.decl) = 0; }
    7882     break;
    7883 
    7884   case 509:
    7885 
    7886 /* Line 1806 of yacc.c  */
    7887 #line 1883 "parser.yy"
     7636#line 1884 "parser.yy"
    78887637    {}
    78897638    break;
    78907639
    7891   case 510:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 1885 "parser.yy"
     7640  case 506:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1886 "parser.yy"
    78957644    {
    78967645                        linkageStack.push( linkage );
     
    78997648    break;
    79007649
    7901   case 511:
    7902 
    7903 /* Line 1806 of yacc.c  */
    7904 #line 1890 "parser.yy"
     7650  case 507:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1891 "parser.yy"
    79057654    {
    79067655                        linkage = linkageStack.top();
     
    79107659    break;
    79117660
    7912   case 512:
    7913 
    7914 /* Line 1806 of yacc.c  */
    7915 #line 1896 "parser.yy"
     7661  case 508:
     7662
     7663/* Line 1806 of yacc.c  */
     7664#line 1897 "parser.yy"
    79167665    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    79177666    break;
    79187667
    7919   case 514:
     7668  case 510:
    79207669
    79217670/* Line 1806 of yacc.c  */
     
    79287677    break;
    79297678
    7930   case 515:
     7679  case 511:
    79317680
    79327681/* Line 1806 of yacc.c  */
     
    79397688    break;
    79407689
    7941   case 516:
     7690  case 512:
    79427691
    79437692/* Line 1806 of yacc.c  */
     
    79507699    break;
    79517700
    7952   case 517:
     7701  case 513:
    79537702
    79547703/* Line 1806 of yacc.c  */
     
    79617710    break;
    79627711
    7963   case 518:
     7712  case 514:
    79647713
    79657714/* Line 1806 of yacc.c  */
     
    79727721    break;
    79737722
    7974   case 519:
     7723  case 515:
    79757724
    79767725/* Line 1806 of yacc.c  */
     
    79837732    break;
    79847733
    7985   case 520:
     7734  case 516:
    79867735
    79877736/* Line 1806 of yacc.c  */
     
    79947743    break;
    79957744
    7996   case 521:
     7745  case 517:
    79977746
    79987747/* Line 1806 of yacc.c  */
     
    80057754    break;
    80067755
    8007   case 522:
     7756  case 518:
    80087757
    80097758/* Line 1806 of yacc.c  */
     
    80167765    break;
    80177766
    8018   case 523:
     7767  case 519:
    80197768
    80207769/* Line 1806 of yacc.c  */
     
    80277776    break;
    80287777
    8029   case 524:
     7778  case 520:
    80307779
    80317780/* Line 1806 of yacc.c  */
     
    80387787    break;
    80397788
    8040   case 528:
     7789  case 524:
    80417790
    80427791/* Line 1806 of yacc.c  */
     
    80457794    break;
    80467795
    8047   case 541:
     7796  case 537:
    80487797
    80497798/* Line 1806 of yacc.c  */
     
    80527801    break;
    80537802
    8054   case 542:
     7803  case 538:
    80557804
    80567805/* Line 1806 of yacc.c  */
     
    80597808    break;
    80607809
    8061   case 543:
     7810  case 539:
    80627811
    80637812/* Line 1806 of yacc.c  */
     
    80667815    break;
    80677816
    8068   case 544:
     7817  case 540:
    80697818
    80707819/* Line 1806 of yacc.c  */
     
    80737822    break;
    80747823
    8075   case 549:
     7824  case 545:
    80767825
    80777826/* Line 1806 of yacc.c  */
     
    80837832    break;
    80847833
    8085   case 550:
     7834  case 546:
    80867835
    80877836/* Line 1806 of yacc.c  */
     
    80907839    break;
    80917840
    8092   case 551:
     7841  case 547:
    80937842
    80947843/* Line 1806 of yacc.c  */
     
    80977846    break;
    80987847
    8099   case 552:
     7848  case 548:
    81007849
    81017850/* Line 1806 of yacc.c  */
     
    81047853    break;
    81057854
    8106   case 553:
     7855  case 549:
    81077856
    81087857/* Line 1806 of yacc.c  */
     
    81117860    break;
    81127861
    8113   case 554:
     7862  case 550:
    81147863
    81157864/* Line 1806 of yacc.c  */
     
    81187867    break;
    81197868
    8120   case 555:
     7869  case 551:
    81217870
    81227871/* Line 1806 of yacc.c  */
     
    81257874    break;
    81267875
    8127   case 556:
     7876  case 552:
    81287877
    81297878/* Line 1806 of yacc.c  */
     
    81327881    break;
    81337882
    8134   case 557:
     7883  case 553:
    81357884
    81367885/* Line 1806 of yacc.c  */
     
    81397888    break;
    81407889
    8141   case 558:
     7890  case 554:
    81427891
    81437892/* Line 1806 of yacc.c  */
     
    81467895    break;
    81477896
    8148   case 559:
     7897  case 555:
    81497898
    81507899/* Line 1806 of yacc.c  */
     
    81537902    break;
    81547903
    8155   case 563:
     7904  case 559:
    81567905
    81577906/* Line 1806 of yacc.c  */
     
    81607909    break;
    81617910
    8162   case 564:
     7911  case 560:
    81637912
    81647913/* Line 1806 of yacc.c  */
     
    81677916    break;
    81687917
    8169   case 565:
     7918  case 561:
    81707919
    81717920/* Line 1806 of yacc.c  */
     
    81747923    break;
    81757924
    8176   case 566:
     7925  case 562:
    81777926
    81787927/* Line 1806 of yacc.c  */
     
    81817930    break;
    81827931
    8183   case 567:
     7932  case 563:
    81847933
    81857934/* Line 1806 of yacc.c  */
     
    81887937    break;
    81897938
    8190   case 568:
     7939  case 564:
    81917940
    81927941/* Line 1806 of yacc.c  */
     
    81957944    break;
    81967945
    8197   case 569:
     7946  case 565:
    81987947
    81997948/* Line 1806 of yacc.c  */
     
    82027951    break;
    82037952
    8204   case 570:
     7953  case 566:
    82057954
    82067955/* Line 1806 of yacc.c  */
     
    82097958    break;
    82107959
    8211   case 571:
     7960  case 567:
    82127961
    82137962/* Line 1806 of yacc.c  */
     
    82167965    break;
    82177966
    8218   case 575:
     7967  case 571:
    82197968
    82207969/* Line 1806 of yacc.c  */
     
    82237972    break;
    82247973
    8225   case 576:
     7974  case 572:
    82267975
    82277976/* Line 1806 of yacc.c  */
     
    82307979    break;
    82317980
    8232   case 577:
     7981  case 573:
    82337982
    82347983/* Line 1806 of yacc.c  */
     
    82377986    break;
    82387987
    8239   case 578:
     7988  case 574:
    82407989
    82417990/* Line 1806 of yacc.c  */
     
    82447993    break;
    82457994
    8246   case 579:
     7995  case 575:
    82477996
    82487997/* Line 1806 of yacc.c  */
     
    82518000    break;
    82528001
    8253   case 580:
     8002  case 576:
    82548003
    82558004/* Line 1806 of yacc.c  */
     
    82588007    break;
    82598008
    8260   case 581:
     8009  case 577:
    82618010
    82628011/* Line 1806 of yacc.c  */
     
    82658014    break;
    82668015
    8267   case 582:
     8016  case 578:
    82688017
    82698018/* Line 1806 of yacc.c  */
     
    82728021    break;
    82738022
    8274   case 583:
     8023  case 579:
    82758024
    82768025/* Line 1806 of yacc.c  */
     
    82798028    break;
    82808029
     8030  case 585:
     8031
     8032/* Line 1806 of yacc.c  */
     8033#line 2198 "parser.yy"
     8034    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8035    break;
     8036
     8037  case 586:
     8038
     8039/* Line 1806 of yacc.c  */
     8040#line 2203 "parser.yy"
     8041    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8042    break;
     8043
     8044  case 587:
     8045
     8046/* Line 1806 of yacc.c  */
     8047#line 2205 "parser.yy"
     8048    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8049    break;
     8050
    82818051  case 588:
    82828052
    82838053/* Line 1806 of yacc.c  */
    8284 #line 2197 "parser.yy"
    8285     {
    8286                         typedefTable.setNextIdentifier( *( (yyvsp[(1) - (1)].tok) ) );
    8287                         (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
    8288                 }
     8054#line 2207 "parser.yy"
     8055    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82898056    break;
    82908057
     
    82928059
    82938060/* Line 1806 of yacc.c  */
    8294 #line 2202 "parser.yy"
     8061#line 2212 "parser.yy"
     8062    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8063    break;
     8064
     8065  case 590:
     8066
     8067/* Line 1806 of yacc.c  */
     8068#line 2214 "parser.yy"
     8069    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8070    break;
     8071
     8072  case 591:
     8073
     8074/* Line 1806 of yacc.c  */
     8075#line 2216 "parser.yy"
     8076    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8077    break;
     8078
     8079  case 592:
     8080
     8081/* Line 1806 of yacc.c  */
     8082#line 2218 "parser.yy"
    82958083    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82968084    break;
    82978085
    8298   case 590:
    8299 
    8300 /* Line 1806 of yacc.c  */
    8301 #line 2207 "parser.yy"
     8086  case 593:
     8087
     8088/* Line 1806 of yacc.c  */
     8089#line 2223 "parser.yy"
     8090    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8091    break;
     8092
     8093  case 594:
     8094
     8095/* Line 1806 of yacc.c  */
     8096#line 2225 "parser.yy"
     8097    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8098    break;
     8099
     8100  case 595:
     8101
     8102/* Line 1806 of yacc.c  */
     8103#line 2227 "parser.yy"
     8104    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8105    break;
     8106
     8107  case 600:
     8108
     8109/* Line 1806 of yacc.c  */
     8110#line 2244 "parser.yy"
    83028111    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83038112    break;
    83048113
    8305   case 591:
    8306 
    8307 /* Line 1806 of yacc.c  */
    8308 #line 2209 "parser.yy"
     8114  case 601:
     8115
     8116/* Line 1806 of yacc.c  */
     8117#line 2246 "parser.yy"
    83098118    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83108119    break;
    83118120
    8312   case 592:
    8313 
    8314 /* Line 1806 of yacc.c  */
    8315 #line 2211 "parser.yy"
     8121  case 602:
     8122
     8123/* Line 1806 of yacc.c  */
     8124#line 2248 "parser.yy"
    83168125    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83178126    break;
    83188127
    8319   case 593:
    8320 
    8321 /* Line 1806 of yacc.c  */
    8322 #line 2216 "parser.yy"
     8128  case 603:
     8129
     8130/* Line 1806 of yacc.c  */
     8131#line 2253 "parser.yy"
    83238132    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83248133    break;
    83258134
    8326   case 594:
    8327 
    8328 /* Line 1806 of yacc.c  */
    8329 #line 2218 "parser.yy"
     8135  case 604:
     8136
     8137/* Line 1806 of yacc.c  */
     8138#line 2255 "parser.yy"
    83308139    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83318140    break;
    83328141
    8333   case 595:
    8334 
    8335 /* Line 1806 of yacc.c  */
    8336 #line 2220 "parser.yy"
     8142  case 605:
     8143
     8144/* Line 1806 of yacc.c  */
     8145#line 2257 "parser.yy"
    83378146    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83388147    break;
    83398148
    8340   case 596:
    8341 
    8342 /* Line 1806 of yacc.c  */
    8343 #line 2222 "parser.yy"
     8149  case 606:
     8150
     8151/* Line 1806 of yacc.c  */
     8152#line 2259 "parser.yy"
    83448153    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83458154    break;
    83468155
    8347   case 597:
    8348 
    8349 /* Line 1806 of yacc.c  */
    8350 #line 2227 "parser.yy"
     8156  case 607:
     8157
     8158/* Line 1806 of yacc.c  */
     8159#line 2264 "parser.yy"
    83518160    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83528161    break;
    83538162
    8354   case 598:
    8355 
    8356 /* Line 1806 of yacc.c  */
    8357 #line 2229 "parser.yy"
     8163  case 608:
     8164
     8165/* Line 1806 of yacc.c  */
     8166#line 2266 "parser.yy"
    83588167    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83598168    break;
    83608169
    8361   case 599:
    8362 
    8363 /* Line 1806 of yacc.c  */
    8364 #line 2231 "parser.yy"
     8170  case 609:
     8171
     8172/* Line 1806 of yacc.c  */
     8173#line 2268 "parser.yy"
    83658174    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83668175    break;
    83678176
    8368   case 604:
    8369 
    8370 /* Line 1806 of yacc.c  */
    8371 #line 2248 "parser.yy"
    8372     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8373     break;
    8374 
    8375   case 605:
    8376 
    8377 /* Line 1806 of yacc.c  */
    8378 #line 2250 "parser.yy"
    8379     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8380     break;
    8381 
    8382   case 606:
    8383 
    8384 /* Line 1806 of yacc.c  */
    8385 #line 2252 "parser.yy"
    8386     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8387     break;
    8388 
    8389   case 607:
    8390 
    8391 /* Line 1806 of yacc.c  */
    8392 #line 2257 "parser.yy"
    8393     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8394     break;
    8395 
    8396   case 608:
    8397 
    8398 /* Line 1806 of yacc.c  */
    8399 #line 2259 "parser.yy"
    8400     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8401     break;
    8402 
    8403   case 609:
    8404 
    8405 /* Line 1806 of yacc.c  */
    8406 #line 2261 "parser.yy"
    8407     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8408     break;
    8409 
    8410   case 610:
    8411 
    8412 /* Line 1806 of yacc.c  */
    8413 #line 2263 "parser.yy"
    8414     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8415     break;
    8416 
    8417   case 611:
    8418 
    8419 /* Line 1806 of yacc.c  */
    8420 #line 2268 "parser.yy"
    8421     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8422     break;
    8423 
    8424   case 612:
    8425 
    8426 /* Line 1806 of yacc.c  */
    8427 #line 2270 "parser.yy"
    8428     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8429     break;
    8430 
    8431   case 613:
    8432 
    8433 /* Line 1806 of yacc.c  */
    8434 #line 2272 "parser.yy"
    8435     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8436     break;
    8437 
    8438   case 618:
    8439 
    8440 /* Line 1806 of yacc.c  */
    8441 #line 2310 "parser.yy"
     8177  case 614:
     8178
     8179/* Line 1806 of yacc.c  */
     8180#line 2306 "parser.yy"
    84428181    {
    84438182                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84468185    break;
    84478186
     8187  case 615:
     8188
     8189/* Line 1806 of yacc.c  */
     8190#line 2311 "parser.yy"
     8191    {
     8192                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     8193                        (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
     8194                }
     8195    break;
     8196
     8197  case 616:
     8198
     8199/* Line 1806 of yacc.c  */
     8200#line 2319 "parser.yy"
     8201    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8202    break;
     8203
     8204  case 617:
     8205
     8206/* Line 1806 of yacc.c  */
     8207#line 2321 "parser.yy"
     8208    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8209    break;
     8210
     8211  case 618:
     8212
     8213/* Line 1806 of yacc.c  */
     8214#line 2323 "parser.yy"
     8215    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8216    break;
     8217
    84488218  case 619:
    84498219
    84508220/* Line 1806 of yacc.c  */
    8451 #line 2318 "parser.yy"
     8221#line 2328 "parser.yy"
     8222    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8223    break;
     8224
     8225  case 620:
     8226
     8227/* Line 1806 of yacc.c  */
     8228#line 2330 "parser.yy"
     8229    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8230    break;
     8231
     8232  case 621:
     8233
     8234/* Line 1806 of yacc.c  */
     8235#line 2335 "parser.yy"
     8236    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8237    break;
     8238
     8239  case 622:
     8240
     8241/* Line 1806 of yacc.c  */
     8242#line 2337 "parser.yy"
     8243    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8244    break;
     8245
     8246  case 626:
     8247
     8248/* Line 1806 of yacc.c  */
     8249#line 2357 "parser.yy"
     8250    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8251    break;
     8252
     8253  case 627:
     8254
     8255/* Line 1806 of yacc.c  */
     8256#line 2359 "parser.yy"
     8257    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8258    break;
     8259
     8260  case 628:
     8261
     8262/* Line 1806 of yacc.c  */
     8263#line 2361 "parser.yy"
    84528264    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84538265    break;
    84548266
    8455   case 620:
    8456 
    8457 /* Line 1806 of yacc.c  */
    8458 #line 2320 "parser.yy"
     8267  case 629:
     8268
     8269/* Line 1806 of yacc.c  */
     8270#line 2363 "parser.yy"
    84598271    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84608272    break;
    84618273
    8462   case 621:
    8463 
    8464 /* Line 1806 of yacc.c  */
    8465 #line 2322 "parser.yy"
     8274  case 630:
     8275
     8276/* Line 1806 of yacc.c  */
     8277#line 2365 "parser.yy"
    84668278    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84678279    break;
    84688280
    8469   case 622:
    8470 
    8471 /* Line 1806 of yacc.c  */
    8472 #line 2327 "parser.yy"
     8281  case 632:
     8282
     8283/* Line 1806 of yacc.c  */
     8284#line 2371 "parser.yy"
     8285    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8286    break;
     8287
     8288  case 633:
     8289
     8290/* Line 1806 of yacc.c  */
     8291#line 2373 "parser.yy"
     8292    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8293    break;
     8294
     8295  case 634:
     8296
     8297/* Line 1806 of yacc.c  */
     8298#line 2375 "parser.yy"
     8299    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8300    break;
     8301
     8302  case 635:
     8303
     8304/* Line 1806 of yacc.c  */
     8305#line 2380 "parser.yy"
     8306    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8307    break;
     8308
     8309  case 636:
     8310
     8311/* Line 1806 of yacc.c  */
     8312#line 2382 "parser.yy"
     8313    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8314    break;
     8315
     8316  case 637:
     8317
     8318/* Line 1806 of yacc.c  */
     8319#line 2384 "parser.yy"
     8320    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8321    break;
     8322
     8323  case 638:
     8324
     8325/* Line 1806 of yacc.c  */
     8326#line 2390 "parser.yy"
     8327    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8328    break;
     8329
     8330  case 639:
     8331
     8332/* Line 1806 of yacc.c  */
     8333#line 2392 "parser.yy"
     8334    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8335    break;
     8336
     8337  case 641:
     8338
     8339/* Line 1806 of yacc.c  */
     8340#line 2398 "parser.yy"
     8341    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8342    break;
     8343
     8344  case 642:
     8345
     8346/* Line 1806 of yacc.c  */
     8347#line 2400 "parser.yy"
     8348    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8349    break;
     8350
     8351  case 643:
     8352
     8353/* Line 1806 of yacc.c  */
     8354#line 2402 "parser.yy"
     8355    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8356    break;
     8357
     8358  case 644:
     8359
     8360/* Line 1806 of yacc.c  */
     8361#line 2404 "parser.yy"
     8362    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8363    break;
     8364
     8365  case 648:
     8366
     8367/* Line 1806 of yacc.c  */
     8368#line 2424 "parser.yy"
     8369    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8370    break;
     8371
     8372  case 649:
     8373
     8374/* Line 1806 of yacc.c  */
     8375#line 2426 "parser.yy"
     8376    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8377    break;
     8378
     8379  case 650:
     8380
     8381/* Line 1806 of yacc.c  */
     8382#line 2428 "parser.yy"
     8383    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8384    break;
     8385
     8386  case 651:
     8387
     8388/* Line 1806 of yacc.c  */
     8389#line 2430 "parser.yy"
     8390    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8391    break;
     8392
     8393  case 652:
     8394
     8395/* Line 1806 of yacc.c  */
     8396#line 2432 "parser.yy"
     8397    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8398    break;
     8399
     8400  case 654:
     8401
     8402/* Line 1806 of yacc.c  */
     8403#line 2438 "parser.yy"
     8404    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8405    break;
     8406
     8407  case 655:
     8408
     8409/* Line 1806 of yacc.c  */
     8410#line 2440 "parser.yy"
     8411    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8412    break;
     8413
     8414  case 656:
     8415
     8416/* Line 1806 of yacc.c  */
     8417#line 2442 "parser.yy"
     8418    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8419    break;
     8420
     8421  case 657:
     8422
     8423/* Line 1806 of yacc.c  */
     8424#line 2447 "parser.yy"
     8425    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8426    break;
     8427
     8428  case 658:
     8429
     8430/* Line 1806 of yacc.c  */
     8431#line 2449 "parser.yy"
     8432    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8433    break;
     8434
     8435  case 659:
     8436
     8437/* Line 1806 of yacc.c  */
     8438#line 2451 "parser.yy"
     8439    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8440    break;
     8441
     8442  case 661:
     8443
     8444/* Line 1806 of yacc.c  */
     8445#line 2458 "parser.yy"
    84738446    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84748447    break;
    84758448
    8476   case 623:
    8477 
    8478 /* Line 1806 of yacc.c  */
    8479 #line 2329 "parser.yy"
     8449  case 663:
     8450
     8451/* Line 1806 of yacc.c  */
     8452#line 2469 "parser.yy"
     8453    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8454    break;
     8455
     8456  case 664:
     8457
     8458/* Line 1806 of yacc.c  */
     8459#line 2472 "parser.yy"
     8460    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8461    break;
     8462
     8463  case 665:
     8464
     8465/* Line 1806 of yacc.c  */
     8466#line 2474 "parser.yy"
     8467    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8468    break;
     8469
     8470  case 666:
     8471
     8472/* Line 1806 of yacc.c  */
     8473#line 2477 "parser.yy"
     8474    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8475    break;
     8476
     8477  case 667:
     8478
     8479/* Line 1806 of yacc.c  */
     8480#line 2479 "parser.yy"
     8481    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8482    break;
     8483
     8484  case 668:
     8485
     8486/* Line 1806 of yacc.c  */
     8487#line 2481 "parser.yy"
     8488    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8489    break;
     8490
     8491  case 672:
     8492
     8493/* Line 1806 of yacc.c  */
     8494#line 2500 "parser.yy"
     8495    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8496    break;
     8497
     8498  case 673:
     8499
     8500/* Line 1806 of yacc.c  */
     8501#line 2502 "parser.yy"
     8502    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8503    break;
     8504
     8505  case 674:
     8506
     8507/* Line 1806 of yacc.c  */
     8508#line 2504 "parser.yy"
     8509    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8510    break;
     8511
     8512  case 675:
     8513
     8514/* Line 1806 of yacc.c  */
     8515#line 2506 "parser.yy"
     8516    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8517    break;
     8518
     8519  case 676:
     8520
     8521/* Line 1806 of yacc.c  */
     8522#line 2508 "parser.yy"
     8523    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8524    break;
     8525
     8526  case 678:
     8527
     8528/* Line 1806 of yacc.c  */
     8529#line 2514 "parser.yy"
    84808530    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84818531    break;
    84828532
    8483   case 624:
    8484 
    8485 /* Line 1806 of yacc.c  */
    8486 #line 2334 "parser.yy"
    8487     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8488     break;
    8489 
    8490   case 625:
    8491 
    8492 /* Line 1806 of yacc.c  */
    8493 #line 2336 "parser.yy"
     8533  case 679:
     8534
     8535/* Line 1806 of yacc.c  */
     8536#line 2516 "parser.yy"
     8537    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8538    break;
     8539
     8540  case 680:
     8541
     8542/* Line 1806 of yacc.c  */
     8543#line 2518 "parser.yy"
     8544    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8545    break;
     8546
     8547  case 681:
     8548
     8549/* Line 1806 of yacc.c  */
     8550#line 2523 "parser.yy"
    84948551    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84958552    break;
    84968553
    8497   case 629:
    8498 
    8499 /* Line 1806 of yacc.c  */
    8500 #line 2356 "parser.yy"
    8501     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8502     break;
    8503 
    8504   case 630:
    8505 
    8506 /* Line 1806 of yacc.c  */
    8507 #line 2358 "parser.yy"
    8508     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8509     break;
    8510 
    8511   case 631:
    8512 
    8513 /* Line 1806 of yacc.c  */
    8514 #line 2360 "parser.yy"
    8515     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8516     break;
    8517 
    8518   case 632:
    8519 
    8520 /* Line 1806 of yacc.c  */
    8521 #line 2362 "parser.yy"
    8522     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8523     break;
    8524 
    8525   case 633:
    8526 
    8527 /* Line 1806 of yacc.c  */
    8528 #line 2364 "parser.yy"
     8554  case 682:
     8555
     8556/* Line 1806 of yacc.c  */
     8557#line 2525 "parser.yy"
    85298558    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85308559    break;
    85318560
    8532   case 635:
    8533 
    8534 /* Line 1806 of yacc.c  */
    8535 #line 2370 "parser.yy"
    8536     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8537     break;
    8538 
    8539   case 636:
    8540 
    8541 /* Line 1806 of yacc.c  */
    8542 #line 2372 "parser.yy"
    8543     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8544     break;
    8545 
    8546   case 637:
    8547 
    8548 /* Line 1806 of yacc.c  */
    8549 #line 2374 "parser.yy"
    8550     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8551     break;
    8552 
    8553   case 638:
    8554 
    8555 /* Line 1806 of yacc.c  */
    8556 #line 2379 "parser.yy"
    8557     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8558     break;
    8559 
    8560   case 639:
    8561 
    8562 /* Line 1806 of yacc.c  */
    8563 #line 2381 "parser.yy"
    8564     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8565     break;
    8566 
    8567   case 640:
    8568 
    8569 /* Line 1806 of yacc.c  */
    8570 #line 2383 "parser.yy"
    8571     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8572     break;
    8573 
    8574   case 641:
    8575 
    8576 /* Line 1806 of yacc.c  */
    8577 #line 2389 "parser.yy"
    8578     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8579     break;
    8580 
    8581   case 642:
    8582 
    8583 /* Line 1806 of yacc.c  */
    8584 #line 2391 "parser.yy"
    8585     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
    8586     break;
    8587 
    8588   case 644:
    8589 
    8590 /* Line 1806 of yacc.c  */
    8591 #line 2397 "parser.yy"
    8592     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8593     break;
    8594 
    8595   case 645:
    8596 
    8597 /* Line 1806 of yacc.c  */
    8598 #line 2399 "parser.yy"
    8599     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8600     break;
    8601 
    8602   case 646:
    8603 
    8604 /* Line 1806 of yacc.c  */
    8605 #line 2401 "parser.yy"
    8606     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8607     break;
    8608 
    8609   case 647:
    8610 
    8611 /* Line 1806 of yacc.c  */
    8612 #line 2403 "parser.yy"
    8613     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8614     break;
    8615 
    8616   case 651:
    8617 
    8618 /* Line 1806 of yacc.c  */
    8619 #line 2423 "parser.yy"
    8620     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8621     break;
    8622 
    8623   case 652:
    8624 
    8625 /* Line 1806 of yacc.c  */
    8626 #line 2425 "parser.yy"
    8627     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8628     break;
    8629 
    8630   case 653:
    8631 
    8632 /* Line 1806 of yacc.c  */
    8633 #line 2427 "parser.yy"
    8634     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8635     break;
    8636 
    8637   case 654:
    8638 
    8639 /* Line 1806 of yacc.c  */
    8640 #line 2429 "parser.yy"
    8641     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8642     break;
    8643 
    8644   case 655:
    8645 
    8646 /* Line 1806 of yacc.c  */
    8647 #line 2431 "parser.yy"
    8648     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8649     break;
    8650 
    8651   case 657:
    8652 
    8653 /* Line 1806 of yacc.c  */
    8654 #line 2437 "parser.yy"
    8655     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8656     break;
    8657 
    8658   case 658:
    8659 
    8660 /* Line 1806 of yacc.c  */
    8661 #line 2439 "parser.yy"
    8662     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8663     break;
    8664 
    8665   case 659:
    8666 
    8667 /* Line 1806 of yacc.c  */
    8668 #line 2441 "parser.yy"
    8669     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8670     break;
    8671 
    8672   case 660:
    8673 
    8674 /* Line 1806 of yacc.c  */
    8675 #line 2446 "parser.yy"
    8676     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8677     break;
    8678 
    8679   case 661:
    8680 
    8681 /* Line 1806 of yacc.c  */
    8682 #line 2448 "parser.yy"
    8683     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8684     break;
    8685 
    8686   case 662:
    8687 
    8688 /* Line 1806 of yacc.c  */
    8689 #line 2450 "parser.yy"
    8690     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8691     break;
    8692 
    8693   case 664:
    8694 
    8695 /* Line 1806 of yacc.c  */
    8696 #line 2457 "parser.yy"
    8697     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8698     break;
    8699 
    8700   case 666:
    8701 
    8702 /* Line 1806 of yacc.c  */
    8703 #line 2468 "parser.yy"
    8704     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8705     break;
    8706 
    8707   case 667:
    8708 
    8709 /* Line 1806 of yacc.c  */
    8710 #line 2471 "parser.yy"
     8561  case 685:
     8562
     8563/* Line 1806 of yacc.c  */
     8564#line 2535 "parser.yy"
     8565    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8566    break;
     8567
     8568  case 688:
     8569
     8570/* Line 1806 of yacc.c  */
     8571#line 2545 "parser.yy"
     8572    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8573    break;
     8574
     8575  case 689:
     8576
     8577/* Line 1806 of yacc.c  */
     8578#line 2547 "parser.yy"
     8579    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8580    break;
     8581
     8582  case 690:
     8583
     8584/* Line 1806 of yacc.c  */
     8585#line 2549 "parser.yy"
     8586    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8587    break;
     8588
     8589  case 691:
     8590
     8591/* Line 1806 of yacc.c  */
     8592#line 2551 "parser.yy"
     8593    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8594    break;
     8595
     8596  case 692:
     8597
     8598/* Line 1806 of yacc.c  */
     8599#line 2553 "parser.yy"
     8600    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8601    break;
     8602
     8603  case 693:
     8604
     8605/* Line 1806 of yacc.c  */
     8606#line 2555 "parser.yy"
     8607    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8608    break;
     8609
     8610  case 694:
     8611
     8612/* Line 1806 of yacc.c  */
     8613#line 2562 "parser.yy"
     8614    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8615    break;
     8616
     8617  case 695:
     8618
     8619/* Line 1806 of yacc.c  */
     8620#line 2564 "parser.yy"
     8621    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8622    break;
     8623
     8624  case 696:
     8625
     8626/* Line 1806 of yacc.c  */
     8627#line 2566 "parser.yy"
     8628    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8629    break;
     8630
     8631  case 697:
     8632
     8633/* Line 1806 of yacc.c  */
     8634#line 2568 "parser.yy"
     8635    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8636    break;
     8637
     8638  case 698:
     8639
     8640/* Line 1806 of yacc.c  */
     8641#line 2570 "parser.yy"
     8642    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8643    break;
     8644
     8645  case 699:
     8646
     8647/* Line 1806 of yacc.c  */
     8648#line 2572 "parser.yy"
     8649    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8650    break;
     8651
     8652  case 700:
     8653
     8654/* Line 1806 of yacc.c  */
     8655#line 2574 "parser.yy"
     8656    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8657    break;
     8658
     8659  case 701:
     8660
     8661/* Line 1806 of yacc.c  */
     8662#line 2576 "parser.yy"
     8663    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8664    break;
     8665
     8666  case 702:
     8667
     8668/* Line 1806 of yacc.c  */
     8669#line 2578 "parser.yy"
     8670    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8671    break;
     8672
     8673  case 703:
     8674
     8675/* Line 1806 of yacc.c  */
     8676#line 2580 "parser.yy"
     8677    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8678    break;
     8679
     8680  case 704:
     8681
     8682/* Line 1806 of yacc.c  */
     8683#line 2585 "parser.yy"
    87118684    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87128685    break;
    87138686
    8714   case 668:
    8715 
    8716 /* Line 1806 of yacc.c  */
    8717 #line 2473 "parser.yy"
    8718     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    8719     break;
    8720 
    8721   case 669:
    8722 
    8723 /* Line 1806 of yacc.c  */
    8724 #line 2476 "parser.yy"
     8687  case 705:
     8688
     8689/* Line 1806 of yacc.c  */
     8690#line 2587 "parser.yy"
    87258691    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87268692    break;
    87278693
    8728   case 670:
    8729 
    8730 /* Line 1806 of yacc.c  */
    8731 #line 2478 "parser.yy"
    8732     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    8733     break;
    8734 
    8735   case 671:
    8736 
    8737 /* Line 1806 of yacc.c  */
    8738 #line 2480 "parser.yy"
    8739     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    8740     break;
    8741 
    8742   case 675:
    8743 
    8744 /* Line 1806 of yacc.c  */
    8745 #line 2499 "parser.yy"
    8746     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8747     break;
    8748 
    8749   case 676:
    8750 
    8751 /* Line 1806 of yacc.c  */
    8752 #line 2501 "parser.yy"
    8753     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8754     break;
    8755 
    8756   case 677:
    8757 
    8758 /* Line 1806 of yacc.c  */
    8759 #line 2503 "parser.yy"
    8760     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8761     break;
    8762 
    8763   case 678:
    8764 
    8765 /* Line 1806 of yacc.c  */
    8766 #line 2505 "parser.yy"
    8767     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8768     break;
    8769 
    8770   case 679:
    8771 
    8772 /* Line 1806 of yacc.c  */
    8773 #line 2507 "parser.yy"
    8774     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8775     break;
    8776 
    8777   case 681:
    8778 
    8779 /* Line 1806 of yacc.c  */
    8780 #line 2513 "parser.yy"
    8781     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8782     break;
    8783 
    8784   case 682:
    8785 
    8786 /* Line 1806 of yacc.c  */
    8787 #line 2515 "parser.yy"
    8788     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8789     break;
    8790 
    8791   case 683:
    8792 
    8793 /* Line 1806 of yacc.c  */
    8794 #line 2517 "parser.yy"
    8795     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8796     break;
    8797 
    8798   case 684:
    8799 
    8800 /* Line 1806 of yacc.c  */
    8801 #line 2522 "parser.yy"
    8802     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8803     break;
    8804 
    8805   case 685:
    8806 
    8807 /* Line 1806 of yacc.c  */
    8808 #line 2524 "parser.yy"
    8809     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8810     break;
    8811 
    8812   case 688:
    8813 
    8814 /* Line 1806 of yacc.c  */
    8815 #line 2534 "parser.yy"
     8694  case 706:
     8695
     8696/* Line 1806 of yacc.c  */
     8697#line 2592 "parser.yy"
     8698    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     8699    break;
     8700
     8701  case 707:
     8702
     8703/* Line 1806 of yacc.c  */
     8704#line 2594 "parser.yy"
     8705    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8706    break;
     8707
     8708  case 709:
     8709
     8710/* Line 1806 of yacc.c  */
     8711#line 2621 "parser.yy"
    88168712    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88178713    break;
    88188714
    8819   case 691:
    8820 
    8821 /* Line 1806 of yacc.c  */
    8822 #line 2544 "parser.yy"
     8715  case 713:
     8716
     8717/* Line 1806 of yacc.c  */
     8718#line 2632 "parser.yy"
    88238719    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88248720    break;
    88258721
    8826   case 692:
    8827 
    8828 /* Line 1806 of yacc.c  */
    8829 #line 2546 "parser.yy"
     8722  case 714:
     8723
     8724/* Line 1806 of yacc.c  */
     8725#line 2634 "parser.yy"
    88308726    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88318727    break;
    88328728
    8833   case 693:
    8834 
    8835 /* Line 1806 of yacc.c  */
    8836 #line 2548 "parser.yy"
     8729  case 715:
     8730
     8731/* Line 1806 of yacc.c  */
     8732#line 2636 "parser.yy"
    88378733    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88388734    break;
    88398735
    8840   case 694:
    8841 
    8842 /* Line 1806 of yacc.c  */
    8843 #line 2550 "parser.yy"
     8736  case 716:
     8737
     8738/* Line 1806 of yacc.c  */
     8739#line 2638 "parser.yy"
    88448740    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88458741    break;
    88468742
    8847   case 695:
    8848 
    8849 /* Line 1806 of yacc.c  */
    8850 #line 2552 "parser.yy"
     8743  case 717:
     8744
     8745/* Line 1806 of yacc.c  */
     8746#line 2640 "parser.yy"
    88518747    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88528748    break;
    88538749
    8854   case 696:
    8855 
    8856 /* Line 1806 of yacc.c  */
    8857 #line 2554 "parser.yy"
     8750  case 718:
     8751
     8752/* Line 1806 of yacc.c  */
     8753#line 2642 "parser.yy"
    88588754    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88598755    break;
    88608756
    8861   case 697:
    8862 
    8863 /* Line 1806 of yacc.c  */
    8864 #line 2561 "parser.yy"
    8865     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8866     break;
    8867 
    8868   case 698:
    8869 
    8870 /* Line 1806 of yacc.c  */
    8871 #line 2563 "parser.yy"
     8757  case 719:
     8758
     8759/* Line 1806 of yacc.c  */
     8760#line 2649 "parser.yy"
     8761    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8762    break;
     8763
     8764  case 720:
     8765
     8766/* Line 1806 of yacc.c  */
     8767#line 2651 "parser.yy"
     8768    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8769    break;
     8770
     8771  case 721:
     8772
     8773/* Line 1806 of yacc.c  */
     8774#line 2653 "parser.yy"
    88728775    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88738776    break;
    88748777
    8875   case 699:
    8876 
    8877 /* Line 1806 of yacc.c  */
    8878 #line 2565 "parser.yy"
    8879     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8880     break;
    8881 
    8882   case 700:
    8883 
    8884 /* Line 1806 of yacc.c  */
    8885 #line 2567 "parser.yy"
    8886     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8887     break;
    8888 
    8889   case 701:
    8890 
    8891 /* Line 1806 of yacc.c  */
    8892 #line 2569 "parser.yy"
     8778  case 722:
     8779
     8780/* Line 1806 of yacc.c  */
     8781#line 2655 "parser.yy"
     8782    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8783    break;
     8784
     8785  case 723:
     8786
     8787/* Line 1806 of yacc.c  */
     8788#line 2657 "parser.yy"
     8789    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8790    break;
     8791
     8792  case 724:
     8793
     8794/* Line 1806 of yacc.c  */
     8795#line 2659 "parser.yy"
    88938796    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88948797    break;
    88958798
    8896   case 702:
    8897 
    8898 /* Line 1806 of yacc.c  */
    8899 #line 2571 "parser.yy"
    8900     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8901     break;
    8902 
    8903   case 703:
    8904 
    8905 /* Line 1806 of yacc.c  */
    8906 #line 2573 "parser.yy"
    8907     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8908     break;
    8909 
    8910   case 704:
    8911 
    8912 /* Line 1806 of yacc.c  */
    8913 #line 2575 "parser.yy"
    8914     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8915     break;
    8916 
    8917   case 705:
    8918 
    8919 /* Line 1806 of yacc.c  */
    8920 #line 2577 "parser.yy"
    8921     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8922     break;
    8923 
    8924   case 706:
    8925 
    8926 /* Line 1806 of yacc.c  */
    8927 #line 2579 "parser.yy"
    8928     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8929     break;
    8930 
    8931   case 707:
    8932 
    8933 /* Line 1806 of yacc.c  */
    8934 #line 2584 "parser.yy"
    8935     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    8936     break;
    8937 
    8938   case 708:
    8939 
    8940 /* Line 1806 of yacc.c  */
    8941 #line 2586 "parser.yy"
    8942     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    8943     break;
    8944 
    8945   case 709:
    8946 
    8947 /* Line 1806 of yacc.c  */
    8948 #line 2591 "parser.yy"
    8949     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    8950     break;
    8951 
    8952   case 710:
    8953 
    8954 /* Line 1806 of yacc.c  */
    8955 #line 2593 "parser.yy"
    8956     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    8957     break;
    8958 
    8959   case 712:
    8960 
    8961 /* Line 1806 of yacc.c  */
    8962 #line 2620 "parser.yy"
    8963     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8964     break;
    8965 
    8966   case 716:
    8967 
    8968 /* Line 1806 of yacc.c  */
    8969 #line 2631 "parser.yy"
    8970     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8971     break;
    8972 
    8973   case 717:
    8974 
    8975 /* Line 1806 of yacc.c  */
    8976 #line 2633 "parser.yy"
    8977     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8978     break;
    8979 
    8980   case 718:
    8981 
    8982 /* Line 1806 of yacc.c  */
    8983 #line 2635 "parser.yy"
    8984     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8985     break;
    8986 
    8987   case 719:
    8988 
    8989 /* Line 1806 of yacc.c  */
    8990 #line 2637 "parser.yy"
    8991     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    8992     break;
    8993 
    8994   case 720:
    8995 
    8996 /* Line 1806 of yacc.c  */
    8997 #line 2639 "parser.yy"
    8998     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8999     break;
    9000 
    9001   case 721:
    9002 
    9003 /* Line 1806 of yacc.c  */
    9004 #line 2641 "parser.yy"
    9005     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9006     break;
    9007 
    9008   case 722:
    9009 
    9010 /* Line 1806 of yacc.c  */
    9011 #line 2648 "parser.yy"
    9012     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9013     break;
    9014 
    9015   case 723:
    9016 
    9017 /* Line 1806 of yacc.c  */
    9018 #line 2650 "parser.yy"
    9019     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9020     break;
    9021 
    9022   case 724:
    9023 
    9024 /* Line 1806 of yacc.c  */
    9025 #line 2652 "parser.yy"
    9026     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9027     break;
    9028 
    90298799  case 725:
    90308800
    90318801/* Line 1806 of yacc.c  */
    9032 #line 2654 "parser.yy"
    9033     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8802#line 2664 "parser.yy"
     8803    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90348804    break;
    90358805
     
    90378807
    90388808/* Line 1806 of yacc.c  */
    9039 #line 2656 "parser.yy"
    9040     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8809#line 2669 "parser.yy"
     8810    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    90418811    break;
    90428812
     
    90448814
    90458815/* Line 1806 of yacc.c  */
    9046 #line 2658 "parser.yy"
    9047     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8816#line 2671 "parser.yy"
     8817    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90488818    break;
    90498819
     
    90518821
    90528822/* Line 1806 of yacc.c  */
    9053 #line 2663 "parser.yy"
    9054     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9055     break;
    9056 
    9057   case 729:
    9058 
    9059 /* Line 1806 of yacc.c  */
    9060 #line 2668 "parser.yy"
    9061     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
    9062     break;
    9063 
    9064   case 730:
    9065 
    9066 /* Line 1806 of yacc.c  */
    9067 #line 2670 "parser.yy"
     8823#line 2673 "parser.yy"
    90688824    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90698825    break;
     
    90728828
    90738829/* Line 1806 of yacc.c  */
    9074 #line 2672 "parser.yy"
    9075     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9076     break;
    9077 
    9078   case 734:
    9079 
    9080 /* Line 1806 of yacc.c  */
    9081 #line 2696 "parser.yy"
     8830#line 2697 "parser.yy"
    90828831    { (yyval.en) = 0; }
    90838832    break;
    90848833
    9085   case 735:
    9086 
    9087 /* Line 1806 of yacc.c  */
    9088 #line 2698 "parser.yy"
     8834  case 732:
     8835
     8836/* Line 1806 of yacc.c  */
     8837#line 2699 "parser.yy"
    90898838    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90908839    break;
     
    90938842
    90948843/* Line 1806 of yacc.c  */
    9095 #line 9096 "Parser/parser.cc"
     8844#line 8845 "Parser/parser.cc"
    90968845      default: break;
    90978846    }
     
    93249073
    93259074/* Line 2067 of yacc.c  */
    9326 #line 2701 "parser.yy"
     9075#line 2702 "parser.yy"
    93279076
    93289077// ----end of grammar----
  • src/Parser/parser.yy

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 15:19:44 2015
    13 // Update Count     : 1082
     12// Last Modified On : Fri Jul  3 13:53:45 2015
     13// Update Count     : 1220
    1414//
    1515
     
    118118
    119119%type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
    120 %type<tok> identifier_or_typedef_name  no_attr_identifier_or_typedef_name  no_01_identifier_or_typedef_name
     120%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    121121%type<constant> string_literal_list
    122122
     
    204204%type<decl> parameter_type_list_opt
    205205
    206 %type<decl> paren_identifier paren_typedef
     206%type<decl> paren_identifier paren_type
    207207
    208208%type<decl> storage_class storage_class_name storage_class_list
     
    213213%type<decl> type_declarator type_declarator_name type_declaring_list
    214214
    215 %type<decl> typedef typedef_array typedef_declaration typedef_declaration_specifier typedef_expression
    216 %type<decl> typedef_function typedef_parameter_array typedef_parameter_function typedef_parameter_ptr
    217 %type<decl> typedef_parameter_redeclarator typedef_ptr typedef_redeclarator typedef_type_specifier
    218 %type<decl> typegen_declaration_specifier typegen_type_specifier
     215%type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
     216%type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
     217%type<decl> type_parameter_redeclarator type_ptr type_redeclarator typedef_type_specifier
     218%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    219219
    220220%type<decl> type_name type_name_no_function
     
    376376        | no_attr_identifier ':' assignment_expression
    377377                { $$ = $3->set_asArgName( $1 ); }
    378                 // Only a list of no_attr_identifier_or_typedef_name is allowed in this context. However, there is insufficient
     378                // Only a list of no_attr_identifier_or_type_name is allowed in this context. However, there is insufficient
    379379                // look ahead to distinguish between this list of parameter names and a tuple, so the tuple form must be used
    380380                // with an appropriate semantic check.
     
    564564                // CFA, one assignment_expression is factored out of comma_expression to eliminate a shift/reduce conflict with
    565565                // comma_expression in new_identifier_parameter_array and new_abstract_array
    566         '[' push pop ']'
     566        '[' ']'
    567567                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    568568        | '[' push assignment_expression pop ']'
     
    924924
    925925label_list:                                                                                             // GCC, local label
    926         no_attr_identifier_or_typedef_name                      {}
    927         | label_list ',' no_attr_identifier_or_typedef_name {}
     926        no_attr_identifier_or_type_name                 {}
     927        | label_list ',' no_attr_identifier_or_type_name {}
    928928        ;
    929929
     
    965965                        $$ = $2->addQualifiers( $1 );
    966966                }
    967         | new_variable_declaration pop ',' push identifier_or_typedef_name initializer_opt
     967        | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
    968968                {
    969969                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
     
    975975                // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
    976976                // storage-class
    977         new_abstract_declarator_no_tuple identifier_or_typedef_name asm_name_opt
     977        new_abstract_declarator_no_tuple identifier_or_type_name asm_name_opt
    978978                {
    979979                        typedefTable.setNextIdentifier( *$2 );
    980980                        $$ = $1->addName( $2 );
    981981                }
    982         | new_abstract_tuple identifier_or_typedef_name asm_name_opt
     982        | new_abstract_tuple identifier_or_type_name asm_name_opt
    983983                {
    984984                        typedefTable.setNextIdentifier( *$2 );
    985985                        $$ = $1->addName( $2 );
    986986                }
    987         | type_qualifier_list new_abstract_tuple identifier_or_typedef_name asm_name_opt
     987        | type_qualifier_list new_abstract_tuple identifier_or_type_name asm_name_opt
    988988                {
    989989                        typedefTable.setNextIdentifier( *$3 );
     
    10131013                        $$ = $3->addQualifiers( $1 )->addQualifiers( $2 );
    10141014                }
    1015         | new_function_declaration pop ',' push identifier_or_typedef_name
     1015        | new_function_declaration pop ',' push identifier_or_type_name
    10161016                {
    10171017                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
     
    10211021
    10221022new_function_specifier:                                                                 // CFA
    1023         '[' push pop ']' identifier '(' push new_parameter_type_list_opt pop ')'
    1024                 {
    1025                         typedefTable.setNextIdentifier( *( $5 ) );
    1026                         $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    1027                 }
    1028         | '[' push pop ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
    1029                 {
    1030                         typedefTable.setNextIdentifier( *( $5 ) );
    1031                         $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
    1032                 }
    1033                 // identifier_or_typedef_name must be broken apart because of the sequence:
     1023        '[' ']' identifier_or_type_name '(' push new_parameter_type_list_opt pop ')' // S/R conflict
     1024                {
     1025                        $$ = DeclarationNode::newFunction( $3, DeclarationNode::newTuple( 0 ), $6, 0, true );
     1026                }
     1027//      '[' ']' identifier '(' push new_parameter_type_list_opt pop ')'
     1028//              {
     1029//                      typedefTable.setNextIdentifier( *$5 );
     1030//                      $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
     1031//              }
     1032//      | '[' ']' TYPEDEFname '(' push new_parameter_type_list_opt pop ')'
     1033//              {
     1034//                      typedefTable.setNextIdentifier( *$5 );
     1035//                      $$ = DeclarationNode::newFunction( $5, DeclarationNode::newTuple( 0 ), $8, 0, true );
     1036//              }
     1037//      | '[' ']' typegen_name
     1038                // identifier_or_type_name must be broken apart because of the sequence:
    10341039                //
    1035                 //   '[' ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
     1040                //   '[' ']' identifier_or_type_name '(' new_parameter_type_list_opt ')'
    10361041                //   '[' ']' type_specifier
    10371042                //
    1038                 // type_specifier can resolve to just TYPEDEFname (e.g. typedef int T; int f( T );). Therefore this must be
    1039                 // flattened to allow lookahead to the '(' without having to reduce identifier_or_typedef_name.
    1040         | new_abstract_tuple identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
     1043                // type_specifier can resolve to just TYPEDEFname (e.g., typedef int T; int f( T );). Therefore this must be
     1044                // flattened to allow lookahead to the '(' without having to reduce identifier_or_type_name.
     1045        | new_abstract_tuple identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
    10411046                // To obtain LR(1 ), this rule must be factored out from function return type (see new_abstract_declarator).
    10421047                {
    10431048                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
    10441049                }
    1045         | new_function_return identifier_or_typedef_name '(' push new_parameter_type_list_opt pop ')'
     1050        | new_function_return identifier_or_type_name '(' push new_parameter_type_list_opt pop ')'
    10461051                {
    10471052                        $$ = DeclarationNode::newFunction( $2, $1, $5, 0, true );
     
    11071112        ;
    11081113
    1109 typedef_expression:                                                                             // GCC, naming expression type
     1114typedef_expression:
     1115                // GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
    11101116        TYPEDEF no_attr_identifier '=' assignment_expression
    11111117                {
     
    13551361aggregate_name:
    13561362        aggregate_key '{' field_declaration_list '}'
    1357                 { $$ = DeclarationNode::newAggregate( $1, 0, 0, 0, $3 ); }
    1358         | aggregate_key no_attr_identifier_or_typedef_name
    1359                 { $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, 0 ); }
    1360         | aggregate_key no_attr_identifier_or_typedef_name '{' field_declaration_list '}'
    1361                 { $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, $4 ); }
    1362         | aggregate_key '(' push type_parameter_list pop ')' '{' field_declaration_list '}' // CFA
    1363                 { $$ = DeclarationNode::newAggregate( $1, 0, $4, 0, $8 ); }
    1364         | aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name // CFA
    1365                 { $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, 0 ); }
    1366         | aggregate_key '(' push type_parameter_list pop ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
    1367                 { $$ = DeclarationNode::newAggregate( $1, $7, $4, 0, $9 ); }
    1368         | aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1369                 { $$ = DeclarationNode::newAggregate( $1, 0, $4, $8, $11 ); }
    1370         | aggregate_key TYPEGENname '(' type_name_list ')' // CFA
    1371                 {}
    1372         | aggregate_key '(' push type_name_list pop ')' no_attr_identifier_or_typedef_name // CFA
    1373                 // push and pop are only to prevent S/R conflicts
    1374                 { $$ = DeclarationNode::newAggregate( $1, $7, 0, $4, 0 ); }
    1375         | aggregate_key '(' push type_parameter_list pop ')' '(' type_name_list ')' no_attr_identifier_or_typedef_name '{' field_declaration_list '}' // CFA
    1376                 { $$ = DeclarationNode::newAggregate( $1, $10, $4, $8, $12 ); }
     1363                { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3 ); }
     1364        | aggregate_key no_attr_identifier_or_type_name
     1365                { $$ = DeclarationNode::newAggregate( $1, $2, 0, 0 ); }
     1366        | aggregate_key no_attr_identifier_or_type_name '{' field_declaration_list '}'
     1367                { $$ = DeclarationNode::newAggregate( $1, $2, 0, $4 ); }
     1368        | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
     1369                { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6 ); }
     1370        | aggregate_key typegen_name                                            // CFA, S/R conflict
     1371                { $$ = $2; }
    13771372        ;
    13781373
     
    14021397new_field_declaring_list:                                                               // CFA, new style field declaration
    14031398        new_abstract_declarator_tuple                                           // CFA, no field name
    1404         | new_abstract_declarator_tuple no_attr_identifier_or_typedef_name
     1399        | new_abstract_declarator_tuple no_attr_identifier_or_type_name
    14051400                { $$ = $1->addName( $2 ); }
    1406         | new_field_declaring_list ',' no_attr_identifier_or_typedef_name
     1401        | new_field_declaring_list ',' no_attr_identifier_or_type_name
    14071402                { $$ = $1->appendList( $1->cloneType( $3 ) ); }
    14081403        | new_field_declaring_list ','                                          // CFA, no field name
     
    14251420                // A semantic check is required to ensure bit_subrange only appears on base type int.
    14261421                { $$ = $1->addBitfield( $2 ); }
    1427         | typedef_redeclarator bit_subrange_size_opt
     1422        | type_redeclarator bit_subrange_size_opt
    14281423                // A semantic check is required to ensure bit_subrange only appears on base type int.
    14291424                { $$ = $1->addBitfield( $2 ); }
     
    14501445        enum_key '{' enumerator_list comma_opt '}'
    14511446                { $$ = DeclarationNode::newEnum( 0, $3 ); }
    1452         | enum_key no_attr_identifier_or_typedef_name '{' enumerator_list comma_opt '}'
     1447        | enum_key no_attr_identifier_or_type_name '{' enumerator_list comma_opt '}'
    14531448                { $$ = DeclarationNode::newEnum( $2, $4 ); }
    1454         | enum_key no_attr_identifier_or_typedef_name
     1449        | enum_key no_attr_identifier_or_type_name
    14551450                { $$ = DeclarationNode::newEnum( $2, 0 ); }
    14561451        ;
    14571452
    14581453enumerator_list:
    1459         no_attr_identifier_or_typedef_name enumerator_value_opt
     1454        no_attr_identifier_or_type_name enumerator_value_opt
    14601455                { $$ = DeclarationNode::newEnumConstant( $1, $2 ); }
    1461         | enumerator_list ',' no_attr_identifier_or_typedef_name enumerator_value_opt
     1456        | enumerator_list ',' no_attr_identifier_or_type_name enumerator_value_opt
    14621457                { $$ = $1->appendList( DeclarationNode::newEnumConstant( $3, $4 ) ); }
    14631458        ;
     
    15291524
    15301525// Provides optional identifier names (abstract_declarator/variable_declarator), no initialization, different semantics
    1531 // for typedef name by using typedef_parameter_redeclarator instead of typedef_redeclarator, and function prototypes.
     1526// for typedef name by using type_parameter_redeclarator instead of typedef_redeclarator, and function prototypes.
    15321527
    15331528new_parameter_declaration:                                                              // CFA, new & old style parameter declaration
    15341529        parameter_declaration
    1535         | new_identifier_parameter_declarator_no_tuple identifier_or_typedef_name assignment_opt
     1530        | new_identifier_parameter_declarator_no_tuple identifier_or_type_name assignment_opt
    15361531                { $$ = $1->addName( $2 ); }
    1537         | new_abstract_tuple identifier_or_typedef_name assignment_opt
     1532        | new_abstract_tuple identifier_or_type_name assignment_opt
    15381533                // To obtain LR(1), these rules must be duplicated here (see new_abstract_declarator).
    15391534                { $$ = $1->addName( $2 ); }
    1540         | type_qualifier_list new_abstract_tuple identifier_or_typedef_name assignment_opt
     1535        | type_qualifier_list new_abstract_tuple identifier_or_type_name assignment_opt
    15411536                { $$ = $2->addName( $3 )->addQualifiers( $1 ); }
    15421537        | new_function_specifier
     
    15591554                        $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
    15601555                }
    1561         | declaration_specifier typedef_parameter_redeclarator assignment_opt
     1556        | declaration_specifier type_parameter_redeclarator assignment_opt
    15621557                {
    15631558                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    15831578        ;
    15841579
    1585 identifier_or_typedef_name:
     1580identifier_or_type_name:
    15861581        identifier
    15871582        | TYPEDEFname
     
    15891584        ;
    15901585
    1591 no_01_identifier_or_typedef_name:
     1586no_01_identifier_or_type_name:
    15921587        no_01_identifier
    15931588        | TYPEDEFname
     
    15951590        ;
    15961591
    1597 no_attr_identifier_or_typedef_name:
     1592no_attr_identifier_or_type_name:
    15981593        no_attr_identifier
    15991594        | TYPEDEFname
    1600         //      | TYPEGENname
     1595        | TYPEGENname
    16011596        ;
    16021597
     
    16191614        // empty
    16201615                { $$ = 0; }
    1621         | '=' initializer                                                       { $$ = $2; }
     1616        | '=' initializer
     1617                { $$ = $2; }
    16221618        ;
    16231619
     
    16471643designation:
    16481644        designator_list ':'                                                                     // C99, CFA uses ":" instead of "="
    1649         | no_attr_identifier_or_typedef_name ':'                        // GCC, field name
    1650                                 { $$ = new VarRefNode( $1 ); }
     1645        | no_attr_identifier_or_type_name ':'                           // GCC, field name
     1646                { $$ = new VarRefNode( $1 ); }
    16511647        ;
    16521648
    16531649designator_list:                                                                                // C99
    16541650        designator
    1655         | designator_list designator                                    { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
     1651        | designator_list designator
     1652                { $$ = (ExpressionNode *)( $1->set_link( $2 )); }
    16561653        //| designator_list designator                                          { $$ = new CompositeExprNode( $1, $2 ); }
    16571654        ;
    16581655
    16591656designator:
    1660         '.' no_attr_identifier_or_typedef_name                          // C99, field name
     1657        '.' no_attr_identifier_or_type_name                                     // C99, field name
    16611658                { $$ = new VarRefNode( $2 ); }
    16621659        | '[' push assignment_expression pop ']'                        // C99, single array element
     
    17001697
    17011698typegen_type_specifier:                                                                 // CFA
     1699        typegen_name
     1700        | type_qualifier_list typegen_name
     1701                { $$ = $2->addQualifiers( $1 ); }
     1702        | typegen_type_specifier type_qualifier
     1703                { $$ = $1->addQualifiers( $2 ); }
     1704        ;
     1705
     1706typegen_name:                                                                                   // CFA
    17021707        TYPEGENname '(' type_name_list ')'
    17031708                { $$ = DeclarationNode::newFromTypeGen( $1, $3 ); }
    1704         | type_qualifier_list TYPEGENname '(' type_name_list ')'
    1705                 { $$ = DeclarationNode::newFromTypeGen( $2, $4 )->addQualifiers( $1 ); }
    1706         | typegen_type_specifier type_qualifier
    1707                 { $$ = $1->addQualifiers( $2 ); }
    17081709        ;
    17091710
     
    17151716
    17161717type_parameter:                                                                                 // CFA
    1717         type_class no_attr_identifier_or_typedef_name
    1718                 { typedefTable.addToEnclosingScope(*( $2 ), TypedefTable::TD ); }
     1718        type_class no_attr_identifier_or_type_name
     1719                { typedefTable.addToEnclosingScope( *$2, TypedefTable::TD ); }
    17191720          assertion_list_opt
    17201721                { $$ = DeclarationNode::newTypeParam( $1, $2 )->addAssertions( $4 ); }
     
    17391740
    17401741assertion:                                                                                              // CFA
    1741         '|' no_attr_identifier_or_typedef_name '(' type_name_list ')'
    1742                 {
    1743                         typedefTable.openContext( *( $2 ) );
     1742        '|' no_attr_identifier_or_type_name '(' type_name_list ')'
     1743                {
     1744                        typedefTable.openContext( *$2 );
    17441745                        $$ = DeclarationNode::newContextUse( $2, $4 );
    17451746                }
     
    17771778
    17781779type_declarator_name:                                                                   // CFA
    1779         no_attr_identifier_or_typedef_name
     1780        no_attr_identifier_or_type_name
    17801781                {
    17811782                        typedefTable.addToEnclosingScope( *$1, TypedefTable::TD );
    17821783                        $$ = DeclarationNode::newTypeDecl( $1, 0 );
    17831784                }
    1784         | no_01_identifier_or_typedef_name '(' push type_parameter_list pop ')'
     1785        | no_01_identifier_or_type_name '(' push type_parameter_list pop ')'
    17851786                {
    17861787                        typedefTable.addToEnclosingScope( *$1, TypedefTable::TG );
     
    17901791
    17911792context_specifier:                                                                              // CFA
    1792         CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{' '}'
     1793        CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
    17931794                {
    17941795                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    17951796                        $$ = DeclarationNode::newContext( $2, $5, 0 );
    17961797                }
    1797         | CONTEXT no_attr_identifier_or_typedef_name '(' push type_parameter_list pop ')' '{'
     1798        | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
    17981799                {
    17991800                        typedefTable.enterContext( *$2 );
     
    18301831                        $$ = $1;
    18311832                }
    1832         | new_context_declaring_list pop ',' push identifier_or_typedef_name
     1833        | new_context_declaring_list pop ',' push identifier_or_type_name
    18331834                {
    18341835                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    18991900external_function_definition:
    19001901        function_definition
    1901 
    19021902                // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    19031903                // code with functions missing a type-specifier on the return type.  Parsing is possible because
     
    19821982        variable_declarator
    19831983        | function_declarator
    1984         | typedef_redeclarator
     1984        | type_redeclarator
    19851985        ;
    19861986
     
    20212021
    20222022any_word:                                                                                               // GCC
    2023         identifier_or_typedef_name {}
     2023        identifier_or_type_name {}
    20242024        | storage_class_name {}
    20252025        | basic_type_name {}
     
    21032103// This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot be nested,
    21042104// there is no context where a function definition can redefine a typedef name. To allow nested functions requires
    2105 // further separation of variable and function declarators in typedef_redeclarator.  The pattern precludes returning
     2105// further separation of variable and function declarators in type_redeclarator.  The pattern precludes returning
    21062106// arrays and functions versus pointers to arrays and functions.
    21072107
     
    21762176        ;
    21772177
    2178 // This pattern parses a declaration for a variable or function prototype that redefines a typedef name, e.g.:
     2178// This pattern parses a declaration for a variable or function prototype that redefines a type name, e.g.:
    21792179//
    21802180//              typedef int foo;
     
    21862186// and functions versus pointers to arrays and functions.
    21872187
    2188 typedef_redeclarator:
    2189         paren_typedef attribute_list_opt
    2190         | typedef_ptr
    2191         | typedef_array attribute_list_opt
    2192         | typedef_function attribute_list_opt
    2193         ;
    2194 
    2195 paren_typedef:
    2196         TYPEDEFname
    2197                 {
    2198                         typedefTable.setNextIdentifier( *( $1 ) );
    2199                         $$ = DeclarationNode::newName( $1 );
    2200                 }
    2201         | '(' paren_typedef ')'
    2202                 { $$ = $2; }
    2203         ;
    2204 
    2205 typedef_ptr:
    2206         '*' typedef_redeclarator
     2188type_redeclarator:
     2189        paren_type attribute_list_opt
     2190        | type_ptr
     2191        | type_array attribute_list_opt
     2192        | type_function attribute_list_opt
     2193        ;
     2194
     2195paren_type:
     2196        typedef
     2197        | '(' paren_type ')'
     2198                { $$ = $2; }
     2199        ;
     2200
     2201type_ptr:
     2202        '*' type_redeclarator
    22072203                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2208         | '*' type_qualifier_list typedef_redeclarator
     2204        | '*' type_qualifier_list type_redeclarator
    22092205                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2210         | '(' typedef_ptr ')'
    2211                 { $$ = $2; }
    2212         ;
    2213 
    2214 typedef_array:
    2215         paren_typedef array_dimension
     2206        | '(' type_ptr ')'
     2207                { $$ = $2; }
     2208        ;
     2209
     2210type_array:
     2211        paren_type array_dimension
    22162212                { $$ = $1->addArray( $2 ); }
    2217         | '(' typedef_ptr ')' array_dimension
     2213        | '(' type_ptr ')' array_dimension
    22182214                { $$ = $2->addArray( $4 ); }
    2219         | '(' typedef_array ')' multi_array_dimension           // redundant parenthesis
     2215        | '(' type_array ')' multi_array_dimension                      // redundant parenthesis
    22202216                { $$ = $2->addArray( $4 ); }
    2221         | '(' typedef_array ')'                                                         // redundant parenthesis
    2222                 { $$ = $2; }
    2223         ;
    2224 
    2225 typedef_function:
    2226         paren_typedef '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
     2217        | '(' type_array ')'                                                            // redundant parenthesis
     2218                { $$ = $2; }
     2219        ;
     2220
     2221type_function:
     2222        paren_type '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    22272223                { $$ = $1->addParamList( $4 ); }
    2228         | '(' typedef_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
     2224        | '(' type_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    22292225                { $$ = $2->addParamList( $6 ); }
    2230         | '(' typedef_function ')'                                                      // redundant parenthesis
     2226        | '(' type_function ')'                                                         // redundant parenthesis
    22312227                { $$ = $2; }
    22322228        ;
     
    22992295// functions.
    23002296
    2301 typedef_parameter_redeclarator:
     2297type_parameter_redeclarator:
    23022298        typedef attribute_list_opt
    2303         | typedef_parameter_ptr
    2304         | typedef_parameter_array attribute_list_opt
    2305         | typedef_parameter_function attribute_list_opt
     2299        | type_parameter_ptr
     2300        | type_parameter_array attribute_list_opt
     2301        | type_parameter_function attribute_list_opt
    23062302        ;
    23072303
     
    23122308                        $$ = DeclarationNode::newName( $1 );
    23132309                }
    2314         ;
    2315 
    2316 typedef_parameter_ptr:
    2317         '*' typedef_parameter_redeclarator
     2310        | TYPEGENname
     2311                {
     2312                        typedefTable.setNextIdentifier( *$1 );
     2313                        $$ = DeclarationNode::newName( $1 );
     2314                }
     2315        ;
     2316
     2317type_parameter_ptr:
     2318        '*' type_parameter_redeclarator
    23182319                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2319         | '*' type_qualifier_list typedef_parameter_redeclarator
     2320        | '*' type_qualifier_list type_parameter_redeclarator
    23202321                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    2321         | '(' typedef_parameter_ptr ')'
    2322                 { $$ = $2; }
    2323         ;
    2324 
    2325 typedef_parameter_array:
     2322        | '(' type_parameter_ptr ')'
     2323                { $$ = $2; }
     2324        ;
     2325
     2326type_parameter_array:
    23262327        typedef array_parameter_dimension
    23272328                { $$ = $1->addArray( $2 ); }
    2328         | '(' typedef_parameter_ptr ')' array_parameter_dimension
     2329        | '(' type_parameter_ptr ')' array_parameter_dimension
    23292330                { $$ = $2->addArray( $4 ); }
    23302331        ;
    23312332
    2332 typedef_parameter_function:
     2333type_parameter_function:
    23332334        typedef '(' push parameter_type_list_opt pop ')'        // empty parameter list OBSOLESCENT (see 3)
    23342335                { $$ = $1->addParamList( $4 ); }
    2335         | '(' typedef_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
     2336        | '(' type_parameter_ptr ')' '(' push parameter_type_list_opt pop ')' // empty parameter list OBSOLESCENT (see 3)
    23362337                { $$ = $2->addParamList( $6 ); }
    23372338        ;
     
    23862387array_dimension:
    23872388                // Only the first dimension can be empty.
    2388         '[' push pop ']'
     2389        '[' ']'
    23892390                { $$ = DeclarationNode::newArray( 0, 0, false ); }
    2390         | '[' push pop ']' multi_array_dimension
    2391                 { $$ = DeclarationNode::newArray( 0, 0, false )->addArray( $5 ); }
     2391        | '[' ']' multi_array_dimension
     2392                { $$ = DeclarationNode::newArray( 0, 0, false )->addArray( $3 ); }
    23922393        | multi_array_dimension
    23932394        ;
     
    24652466
    24662467array_parameter_1st_dimension:
    2467         '[' push pop ']'
     2468        '[' ']'
    24682469                { $$ = DeclarationNode::newArray( 0, 0, false ); }
    24692470        // multi_array_dimension handles the '[' '*' ']' case
     
    25582559                // Only the first dimension can be empty or have qualifiers. Empty dimension must be factored out due to
    25592560                // shift/reduce conflict with new-style empty (void) function return type.
    2560         '[' push pop ']' type_specifier
    2561                 { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2561        '[' ']' type_specifier
     2562                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    25622563        | new_array_parameter_1st_dimension type_specifier
    25632564                { $$ = $2->addNewArray( $1 ); }
    2564         | '[' push pop ']' multi_array_dimension type_specifier
    2565                 { $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2565        | '[' ']' multi_array_dimension type_specifier
     2566                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    25662567        | new_array_parameter_1st_dimension multi_array_dimension type_specifier
    25672568                { $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
    25682569        | multi_array_dimension type_specifier
    25692570                { $$ = $2->addNewArray( $1 ); }
    2570         | '[' push pop ']' new_identifier_parameter_ptr
    2571                 { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2571        | '[' ']' new_identifier_parameter_ptr
     2572                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    25722573        | new_array_parameter_1st_dimension new_identifier_parameter_ptr
    25732574                { $$ = $2->addNewArray( $1 ); }
    2574         | '[' push pop ']' multi_array_dimension new_identifier_parameter_ptr
    2575                 { $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2575        | '[' ']' multi_array_dimension new_identifier_parameter_ptr
     2576                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    25762577        | new_array_parameter_1st_dimension multi_array_dimension new_identifier_parameter_ptr
    25772578                { $$ = $3->addNewArray( $2 )->addNewArray( $1 ); }
     
    26022603// These rules need LR(3):
    26032604//
    2604 //              new_abstract_tuple identifier_or_typedef_name
    2605 //              '[' new_parameter_list ']' identifier_or_typedef_name '(' new_parameter_type_list_opt ')'
     2605//              new_abstract_tuple identifier_or_type_name
     2606//              '[' new_parameter_list ']' identifier_or_type_name '(' new_parameter_type_list_opt ')'
    26062607//
    26072608// since a function return type can be syntactically identical to a tuple type:
     
    26102611//              [int, int] f( int );
    26112612//
    2612 // Therefore, it is necessary to look at the token after identifier_or_typedef_name to know when to reduce
     2613// Therefore, it is necessary to look at the token after identifier_or_type_name to know when to reduce
    26132614// new_abstract_tuple. To make this LR(1), several rules have to be flattened (lengthened) to allow the necessary
    26142615// lookahead. To accomplish this, new_abstract_declarator has an entry point without tuple, and tuple declarations are
     
    26452646                // Only the first dimension can be empty. Empty dimension must be factored out due to shift/reduce conflict with
    26462647                // empty (void) function return type.
    2647         '[' push pop ']' type_specifier
    2648                 { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2649         | '[' push pop ']' multi_array_dimension type_specifier
    2650                 { $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2648        '[' ']' type_specifier
     2649                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2650        | '[' ']' multi_array_dimension type_specifier
     2651                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    26512652        | multi_array_dimension type_specifier
    26522653                { $$ = $2->addNewArray( $1 ); }
    2653         | '[' push pop ']' new_abstract_ptr
    2654                 { $$ = $5->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    2655         | '[' push pop ']' multi_array_dimension new_abstract_ptr
    2656                 { $$ = $6->addNewArray( $5 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2654        | '[' ']' new_abstract_ptr
     2655                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     2656        | '[' ']' multi_array_dimension new_abstract_ptr
     2657                { $$ = $4->addNewArray( $3 )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    26572658        | multi_array_dimension new_abstract_ptr
    26582659                { $$ = $2->addNewArray( $1 ); }
     
    26652666
    26662667new_abstract_function:                                                                  // CFA
    2667         '[' push pop ']' '(' new_parameter_type_list_opt ')'
    2668                 { $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $6, 0 ); }
     2668        '[' ']' '(' new_parameter_type_list_opt ')'
     2669                { $$ = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), $4, 0 ); }
    26692670        | new_abstract_tuple '(' push new_parameter_type_list_opt pop ')'
    26702671                { $$ = DeclarationNode::newFunction( 0, $1, $4, 0 ); }
  • src/ResolvExpr/AlternativeFinder.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sat May 16 23:52:08 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 17:19:54 2015
    13 // Update Count     : 17
     12// Last Modified On : Fri Jul  3 17:58:39 2015
     13// Update Count     : 22
    1414//
    1515
     
    543543
    544544                AlternativeFinder funcFinder( indexer, env ); {
    545                         NameExpr *fname;
     545                        NameExpr *fname = 0;;
    546546                        if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
    547547                                 && ( fname->get_name() == std::string("&&")) ) {
    548                                 alternatives.push_back( Alternative( untypedExpr->clone(), env, Cost()) );
     548                                VoidType v = Type::Qualifiers();                // resolve to type void *
     549                                PointerType pt( Type::Qualifiers(), v.clone() );
     550                                UntypedExpr *vexpr = untypedExpr->clone();
     551                                vexpr->get_results().push_front( pt.clone() );
     552                                alternatives.push_back( Alternative( vexpr, env, Cost()) );
    549553                                return;
    550554                        }
  • src/ResolvExpr/Resolver.cc

    re0ff3e6 r413f7f8  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:20:35 2015
    13 // Update Count     : 156
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Jul  3 16:18:20 2015
     13// Update Count     : 159
    1414//
    1515
     
    274274                // must resolve the argument for a computed goto
    275275                if ( branchStmt->get_type() == BranchStmt::Goto ) { // check for computed goto statement
    276                         if ( NameExpr * arg = dynamic_cast< NameExpr * >( branchStmt->get_computedTarget() ) ) {
     276                        if ( Expression * arg = branchStmt->get_computedTarget() ) {
    277277                                VoidType v = Type::Qualifiers();                // cast to void * for the alternative finder
    278278                                PointerType pt( Type::Qualifiers(), v.clone() );
  • src/ResolvExpr/Unify.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sun May 17 12:27:10 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 13:08:48 2015
    13 // Update Count     : 6
     12// Last Modified On : Fri Jun 26 14:57:05 2015
     13// Update Count     : 7
    1414//
    1515
  • src/SymTab/Validate.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Sun May 17 21:50:04 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jun 24 16:20:50 2015
    13 // Update Count     : 30
     12// Last Modified On : Tue Jul 07 10:41:23 2015
     13// Update Count     : 136
    1414//
    1515
     
    5252#include "UniqueName.h"
    5353#include "AddVisit.h"
     54#include "MakeLibCfa.h"
    5455
    5556
     
    126127                std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    127128 
     129                virtual void visit( EnumDecl *enumDecl );
    128130                virtual void visit( StructDecl *structDecl );
    129131                virtual void visit( UnionDecl *structDecl );
     
    291293 
    292294                for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
    293                         ObjectDecl *obj = dynamic_cast< ObjectDecl * >( *i );
     295                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    294296                        assert( obj );
    295                         obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
     297                        // obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
     298                        BasicType * enumType = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
     299                        obj->set_type( enumType ) ;
    296300                } // for
    297301                Parent::visit( enumDecl );
     
    543547        }
    544548
     549        //E ?=?(E volatile*, int),
     550        //  ?=?(E _Atomic volatile*, int);
     551        void makeEnumAssignment( EnumDecl *enumDecl, EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
     552                FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
     553 
     554                ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
     555                assignType->get_returnVals().push_back( returnVal );
     556
     557                // need two assignment operators with different types
     558                FunctionType * assignType2 = assignType->clone();
     559
     560                // E ?=?(E volatile *, E)
     561                Type *etype = refType->clone();
     562                // etype->get_qualifiers() += Type::Qualifiers(false, true, false, false, false, false);
     563
     564                ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), etype ), 0 );
     565                assignType->get_parameters().push_back( dstParam );
     566
     567                ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, etype->clone(), 0 );
     568                assignType->get_parameters().push_back( srcParam );
     569
     570                // E ?=?(E volatile *, int)
     571                assignType2->get_parameters().push_back( dstParam->clone() );
     572                BasicType * paramType = new BasicType(Type::Qualifiers(), BasicType::SignedInt);
     573                ObjectDecl *srcParam2 = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, paramType, 0 );
     574                assignType2->get_parameters().push_back( srcParam2 );
     575
     576                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
     577                // because each unit generates copies of the default routines for each aggregate.
     578
     579                // since there is no definition, these should not be inline
     580                // make these intrinsic so that the code generator does not make use of them
     581                FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType, 0, false, false );
     582                assignDecl->fixUniqueId();
     583                FunctionDecl *assignDecl2 = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType2, 0, false, false );
     584                assignDecl2->fixUniqueId();
     585
     586                std::list< Declaration * > assigns;
     587                assigns.push_back( assignDecl );
     588                assigns.push_back( assignDecl2 );
     589
     590                LibCfa::makeLibCfa( assigns );
     591
     592                // need to remove the prototypes, since these can appear nested in a routine
     593                for (int start = 0, end = assigns.size()/2; start < end; start++) {
     594                        delete assigns.front();
     595                        assigns.pop_front();
     596                }
     597
     598                declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
     599
     600                // return assignDecl;
     601        }
     602
     603
    545604        Declaration *makeStructAssignment( StructDecl *aggregateDecl, StructInstType *refType, unsigned int functionNesting ) {
    546605                FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
     
    612671 
    613672                return assignDecl;
     673        }
     674
     675        void AddStructAssignment::visit( EnumDecl *enumDecl ) {
     676                if ( ! enumDecl->get_members().empty() ) {
     677                        EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
     678                        // enumInst->set_baseEnum( enumDecl );
     679                        // declsToAdd.push_back(
     680                        makeEnumAssignment( enumDecl, enumInst, functionNesting, declsToAdd );
     681                }
    614682        }
    615683
  • src/SynTree/Statement.cc

    re0ff3e6 r413f7f8  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jun 23 11:42:09 2015
    13 // Update Count     : 21
     12// Last Modified On : Mon Jun 29 17:37:10 2015
     13// Update Count     : 22
    1414//
    1515
     
    2828using std::endl;
    2929
    30 Statement::Statement( std::list<Label> _labels ) : labels(_labels ) {}
     30Statement::Statement( std::list<Label> _labels ) : labels( _labels ) {}
    3131
    3232void Statement::print( std::ostream &, int indent ) const {}
     
    3434Statement::~Statement() {}
    3535
    36 ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement(_labels ), expr(_expr ) {}
     36ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement( _labels ), expr( _expr ) {}
    3737
    3838ExprStmt::~ExprStmt() {}
     
    4646
    4747BranchStmt::BranchStmt( std::list<Label> labels, Label _target, Type _type ) throw ( SemanticError ) :
    48         Statement( labels ), originalTarget(_target ), target(_target ), type(_type ) {
     48        Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {
    4949        //actually this is a syntactic error signaled by the parser
    5050        if ( type == BranchStmt::Goto && target.size() == 0 )
     
    5353
    5454BranchStmt::BranchStmt( std::list<Label> labels, Expression *_computedTarget, Type _type ) throw ( SemanticError ) :
    55         Statement( labels ), computedTarget(_computedTarget ), type(_type ) {
     55        Statement( labels ), computedTarget( _computedTarget ), type( _type ) {
    5656        if ( type != BranchStmt::Goto || computedTarget == 0 )
    5757                throw SemanticError("Computed target not valid in branch statement");
     
    7575
    7676IfStmt::IfStmt( std::list<Label> _labels, Expression *_condition, Statement *_thenPart, Statement *_elsePart ):
    77         Statement(_labels ), condition(_condition ), thenPart(_thenPart ), elsePart(_elsePart ) {}
     77        Statement( _labels ), condition( _condition ), thenPart( _thenPart ), elsePart( _elsePart ) {}
    7878
    7979IfStmt::~IfStmt() {}
     
    9393
    9494SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
    95         Statement(_labels ), condition(_condition ), branches(_branches ) {
     95        Statement( _labels ), condition( _condition ), branches( _branches ) {
    9696}
    9797
     
    117117
    118118CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) :
    119         Statement(_labels ), condition(_condition ), stmts(_statements ), _isDefault( deflt ) {
     119        Statement( _labels ), condition( _condition ), stmts( _statements ), _isDefault( deflt ) {
    120120        if ( isDefault() && condition != 0 )
    121121                throw SemanticError("default with conditions");
     
    149149//ChooseStmt::ChooseStmt( std::list<Label> labels, Expression *condition, Statement *body ) {}
    150150ChooseStmt::ChooseStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
    151         Statement(_labels ), condition(_condition ), branches(_branches ) {
     151        Statement( _labels ), condition( _condition ), branches( _branches ) {
    152152}
    153153
  • src/SynTree/Type.h

    re0ff3e6 r413f7f8  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 21:50:38 2015
    13 // Update Count     : 12
     12// Last Modified On : Fri Jun 26 16:47:54 2015
     13// Update Count     : 13
    1414//
    1515
     
    5757        bool get_isAttribute() { return tq.isAttribute; }
    5858        void set_isConst( bool newValue ) { tq.isConst = newValue; }
    59         void set_iisVolatile( bool newValue ) { tq.isVolatile = newValue; }
     59        void set_isVolatile( bool newValue ) { tq.isVolatile = newValue; }
    6060        void set_isRestrict( bool newValue ) { tq.isRestrict = newValue; }
    6161        void set_isLvalue( bool newValue ) { tq.isLvalue = newValue; }
  • src/Tests/LabelledExit.c

    re0ff3e6 r413f7f8  
    11int main() {
    2     int i;
    3     int x, y;
     2        int i;
     3        int x, y;
    44
    5     x = 0; y = 0;
     5        x = 0; y = 0;
    66
    7 // block, labelled exits
     7        // block, labelled exits
    88
    99  Block: {
    10         if ( x == y ) {
    11             for ( ; i < y; ) {
    12                 y += 1;
    13                 if ( y < 10 ) break Block;
    14             }
    15         }
    16     }
     10                if ( x == y ) {
     11                        for ( ; i < y; ) {
     12                                y += 1;
     13                                if ( y < 10 ) break Block;
     14                        }
     15                }
     16        }
    1717
    18 // loops, labelled exits
     18        // loops, labelled exits
    1919
    2020  w1: while ( y == 10 );
    2121
    2222  w2: while ( x < 10 ) {
    23       while (y < 5 ) {
    24           if ( y == 3 ) break w2;
    25       }
    26       x += 1;
    27   }
     23                while (y < 5 ) {
     24                        if ( y == 3 ) break w2;
     25                }
     26                x += 1;
     27        }
    2828
    2929  A: for ( i = 0; i < 10; i += 1 ) {
    30     B: for ( i = 0; i < 10; i += 1 ) {
    31       C: for ( i = 0; i < 10; i += 1 ) {
    32           goto A;
    33           goto B;
    34           goto C;
    35           continue A;
    36           continue B;
    37           continue C;
    38           continue;
    39           break A;
    40           break B;
    41           break C;
    42           break;
    43       }
    44     }
    45   }
     30          B: for ( i = 0; i < 10; i += 1 ) {
     31                  C: for ( i = 0; i < 10; i += 1 ) {
     32                                goto A;
     33                                goto B;
     34                                goto C;
     35                                continue A;
     36                                continue B;
     37                                continue C;
     38                                continue;
     39                                break A;
     40                                break B;
     41                                break C;
     42                                break;
     43                        }
     44                }
     45        }
    4646
    4747  D: for ( ;; ) {
    48       break D;
    49       continue D;
    50   }
     48                break D;
     49                continue D;
     50        }
    5151
    52     Z : i += 1;
    53     goto Z;
     52  Z : i += 1;
     53        goto Z;
    5454  X: Y: for ( ;; ) {
    55       i += 1;
    56       if ( i > 5 ) continue X;
    57       if ( i < 5 ) break X;
    58       if ( i < 5 ) break Y;
    59       break;
    60   }
     55                i += 1;
     56                if ( i > 5 ) continue X;
     57                if ( i < 5 ) break X;
     58                if ( i < 5 ) break Y;
     59                break;
     60        }
    6161  XX: for ( ;; ) {
    62     YY: for ( ;; ) {
    63       ZZ: for ( ;; ) {
    64           i += 1;
    65           if ( i > 5 ) continue XX;
    66           if ( i < 5 ) continue YY;
    67           if ( i < 5 ) continue ZZ;
    68           if ( i > 5 ) break XX;
    69           if ( i < 5 ) break YY;
    70           if ( i < 5 ) break ZZ;
    71           break;
    72       }
    73     }
    74   }
     62          YY: for ( ;; ) {
     63                  ZZ: for ( ;; ) {
     64                                i += 1;
     65                                if ( i > 5 ) continue XX;
     66                                if ( i < 5 ) continue YY;
     67                                if ( i < 5 ) continue ZZ;
     68                                if ( i > 5 ) break XX;
     69                                if ( i < 5 ) break YY;
     70                                if ( i < 5 ) break ZZ;
     71                                break;
     72                        }
     73                }
     74        }
    7575
    76     for ( ;; ) ;
    77     for ( int i = 0 ;; ) ;
    78     for (  ; i < 0; ) ;
    79     for (  ; ; i += 1 ) ;
     76        for ( ;; ) ;
     77        for ( int i = 0 ;; ) ;
     78        for (  ; i < 0; ) ;
     79        for (  ; ; i += 1 ) ;
    8080  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
    8181  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
    8282  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
    8383  L31: L32: L33: L34:
    84     for ( ;; ) {
    85         break L0;
    86     }
     84        for ( ;; ) {
     85                break L0;
     86        }
    8787
    88 // switch/choose, labelled exits
     88        // switch/choose, labelled exits
    8989
    9090  Switch: switch ( i ) {
    91     default:
    92       i += 1;
    93     case 0:
    94       i += 1;
    95       break Switch;
    96     case 1:
    97       switch ( i ) {
    98         case 0:
    99           break Switch;
    100         default:
    101           break;
    102       }
    103   }
     91          default:
     92                i += 1;
     93          case 0:
     94                i += 1;
     95                break Switch;
     96          case 1:
     97                switch ( i ) {
     98                  case 0:
     99                        break Switch;
     100                  default:
     101                        ; break;
     102                }
     103        }
    104104
    105105  Choose: choose ( i ) {
    106     default:
    107       i += 1;
    108     case 0:
    109       i += 1;
    110       break Choose;
    111     case 1:
    112       choose ( i ) {
    113         case 0:
    114           break;
    115         default:
    116           break Choose;
    117       }
    118       fallthru;
    119     case 2:
    120       i += 1;
    121   }
    122 #if 0
    123 // computed goto
     106          default:
     107                i += 1;
     108          case 0:
     109                i += 1;
     110                break Choose;
     111          case 1:
     112                choose ( i ) {
     113                  case 0:
     114                        break;
     115                  default:
     116                        break Choose;
     117                }
     118                fallthru;
     119          case 2:
     120                i += 1;
     121        }
    124122
    125     {
    126         static void *array[] = { &&foo, &&bar, &&hack };
     123        // computed goto
     124        {
     125                void *array[] = { &&foo, &&bar, &&hack };
     126          foo: bar: hack:
     127                &&foo;
     128                &&bar;
     129                goto *array[i];
     130        }
    127131
    128       foo: bar: hack:
    129         goto *array[i];
    130     }
    131 #endif
    132132#if 0
    133133  Q: if ( i > 5 ) {
    134       i += 1;
    135       break Q;
    136   } else
    137       i += 1;
     134                i += 1;
     135                break Q;
     136        } else
     137                i += 1;
    138138#endif
    139139}
     140
     141// Local Variables: //
     142// tab-width: 4 //
     143// compile-command: "cfa LabelledExit.c" //
     144// End: //
  • src/examples/includes.c

    re0ff3e6 r413f7f8  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 15:54:17 2015
    13 // Update Count     : 7
     12// Last Modified On : Fri Jun 26 15:04:33 2015
     13// Update Count     : 14
    1414//
    1515
    16 #if 1
     16#if 0
    1717//#include <aio.h>              // FAILS -- includes locale.h
    1818#include <aliases.h>
     
    2020#include <ansidecl.h>
    2121#include <ar.h>
    22 //#include <argp.h>             // FAILS -- includes locale.h
    23 //#include <argz.h>             // FAILS -- includes locale.h
     22#include <argp.h>               // FAILS -- includes locale.h
     23#include <argz.h>               // FAILS -- includes locale.h
    2424#include <assert.h>
    2525#include <bfd.h>                // contains structure field "type"
    2626#include <complex.h>
    27 //#include <ctype.h>            // FAILS -- includes locale.h
     27#include <ctype.h>              // FAILS -- includes locale.h
    2828#include <errno.h>
    2929#include <fenv.h>
     
    3232#include <iso646.h>
    3333#include <limits.h>
    34 //#include <locale.h>           // FAILS -- "no reasonable alternatives for applying ... Name: ?+? ..."
     34#include <locale.h>             // FAILS -- "no reasonable alternatives for applying ... Name: ?+? ..."
    3535#include <math.h>               // contains structure field "type"
    3636#include <setjmp.h>
     
    4141#include <stdlib.h>
    4242#include <stdio.h>
    43 //#include <string.h>           // FAILS -- includes locale.h
     43#include <string.h>             // FAILS -- includes locale.h
    4444#include <tgmath.h>
    45 //#include <time.h>             // FAILS -- includes locale.h
     45#include <time.h>               // FAILS -- includes locale.h
    4646#include <unistd.h>
    47 //#include <wchar.h>            // FAILS -- includes locale.h
    48 //#include <wctype.h>           // FAILS -- includes locale.h
     47#include <wchar.h>              // FAILS -- includes locale.h
     48#include <wctype.h>             // FAILS -- includes locale.h
    4949#include <curses.h>
    5050#else
    51 #include <curses.h>
     51#include <aio.h>                // FAILS -- includes locale.h
    5252#endif // 0
    5353
  • src/main.cc

    re0ff3e6 r413f7f8  
    99// Author           : Richard C. Bilson
    1010// Created On       : Fri May 15 23:12:02 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun 22 17:02:11 2015
    13 // Update Count     : 73
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon Jul 06 15:01:26 2015
     13// Update Count     : 79
    1414//
    1515
     
    277277                GenPoly::box( translationUnit );
    278278
    279     // print the tree right before code generation
     279                // print tree right before code generation
    280280                if ( codegenp ) {
    281281                        printAll( translationUnit, std::cout );
     
    283283                } // if
    284284
    285                 CodeGen::generate( translationUnit, *output, protop );
     285                CodeGen::generate( translationUnit, *output, true ); //protop );
    286286
    287287                if ( output != &std::cout ) {
Note: See TracChangeset for help on using the changeset viewer.