Changes in / [2162c2c:bb82c03]
- Location:
- src
- Files:
-
- 2 deleted
- 56 edited
-
CodeGen/CodeGenerator.cc (modified) (1 diff)
-
CodeGen/CodeGenerator.h (modified) (1 diff)
-
CodeGen/GenType.cc (modified) (2 diffs)
-
GenPoly/Box.cc (modified) (9 diffs)
-
GenPoly/InstantiateGeneric.cc (modified) (10 diffs)
-
GenPoly/ScrubTyVars.cc (modified) (1 diff)
-
GenPoly/Specialize.cc (modified) (11 diffs)
-
InitTweak/FixInit.cc (modified) (3 diffs)
-
InitTweak/InitTweak.cc (modified) (1 diff)
-
Parser/DeclarationNode.cc (modified) (1 diff)
-
Parser/ExpressionNode.cc (modified) (1 diff)
-
Parser/ParseNode.h (modified) (1 diff)
-
Parser/lex.cc (modified) (26 diffs)
-
Parser/lex.ll (modified) (2 diffs)
-
Parser/parser.cc (modified) (127 diffs)
-
Parser/parser.h (modified) (3 diffs)
-
Parser/parser.yy (modified) (2 diffs)
-
ResolvExpr/AdjustExprType.cc (modified) (1 diff)
-
ResolvExpr/AlternativeFinder.cc (modified) (12 diffs)
-
ResolvExpr/AlternativeFinder.h (modified) (1 diff)
-
ResolvExpr/FindOpenVars.cc (modified) (2 diffs)
-
ResolvExpr/TypeEnvironment.cc (modified) (1 diff)
-
ResolvExpr/TypeEnvironment.h (modified) (1 diff)
-
ResolvExpr/Unify.cc (modified) (5 diffs)
-
ResolvExpr/typeops.h (modified) (1 diff)
-
SymTab/Indexer.cc (modified) (2 diffs)
-
SymTab/Indexer.h (modified) (1 diff)
-
SymTab/Mangler.cc (modified) (4 diffs)
-
SynTree/ApplicationExpr.cc (modified) (4 diffs)
-
SynTree/Declaration.cc (modified) (1 diff)
-
SynTree/Declaration.h (modified) (1 diff)
-
SynTree/Expression.cc (modified) (1 diff)
-
SynTree/Expression.h (modified) (3 diffs)
-
SynTree/FunctionType.cc (modified) (3 diffs)
-
SynTree/Mutator.cc (modified) (33 diffs)
-
SynTree/Mutator.h (modified) (1 diff)
-
SynTree/Statement.cc (modified) (1 diff)
-
SynTree/SynTree.h (modified) (1 diff)
-
SynTree/TupleExpr.cc (modified) (2 diffs)
-
SynTree/Type.cc (modified) (1 diff)
-
SynTree/Type.h (modified) (1 diff)
-
SynTree/TypeDecl.cc (modified) (2 diffs)
-
SynTree/TypeSubstitution.cc (modified) (1 diff)
-
SynTree/TypeSubstitution.h (modified) (1 diff)
-
SynTree/Visitor.cc (modified) (2 diffs)
-
SynTree/Visitor.h (modified) (1 diff)
-
Tuples/Explode.h (modified) (3 diffs)
-
Tuples/TupleAssignment.cc (modified) (6 diffs)
-
Tuples/TupleExpansion.cc (modified) (3 diffs)
-
Tuples/Tuples.h (modified) (1 diff)
-
libcfa/math.c (modified) (4 diffs)
-
libcfa/stdlib (modified) (1 diff)
-
libcfa/stdlib.c (modified) (4 diffs)
-
main.cc (modified) (8 diffs)
-
tests/.expect/tupleVariadic.txt (deleted)
-
tests/avltree/avl.h (modified) (1 diff)
-
tests/avltree/avl0.c (modified) (1 diff)
-
tests/tupleVariadic.c (deleted)
Legend:
- Unmodified
- Added
- Removed
-
src/CodeGen/CodeGenerator.cc
r2162c2c rbb82c03 656 656 } 657 657 658 void CodeGenerator::visit( UntypedTupleExpr * tupleExpr ) { assertf( false, "UntypedTupleExpr should not make it to Code Gen" ); } 659 660 void CodeGenerator::visit( TupleExpr * tupleExpr ) { assertf( false, "TupleExpr should not make it to Code Gen" ); } 658 void CodeGenerator::visit( TupleExpr * tupleExpr ) { assert( false ); } 661 659 662 660 void CodeGenerator::visit( TypeExpr * typeExpr ) {} -
src/CodeGen/CodeGenerator.h
r2162c2c rbb82c03 72 72 virtual void visit( CommaExpr *commaExpr ); 73 73 virtual void visit( CompoundLiteralExpr *compLitExpr ); 74 virtual void visit( UntypedTupleExpr *tupleExpr );75 74 virtual void visit( TupleExpr *tupleExpr ); 76 75 virtual void visit( TypeExpr *typeExpr ); -
src/CodeGen/GenType.cc
r2162c2c rbb82c03 41 41 virtual void visit( EnumInstType *enumInst ); 42 42 virtual void visit( TypeInstType *typeInst ); 43 virtual void visit( TupleType * tupleType );44 43 virtual void visit( VarArgsType *varArgsType ); 45 44 virtual void visit( ZeroType *zeroType ); … … 198 197 } 199 198 200 void GenType::visit( TupleType * tupleType ) {201 assertf( ! mangle, "Tuple types should not make it to Code Gen." );202 Visitor::visit( tupleType );203 }204 205 199 void GenType::visit( VarArgsType *varArgsType ) { 206 200 typeString = "__builtin_va_list " + typeString; -
src/GenPoly/Box.cc
r2162c2c rbb82c03 136 136 template< typename DeclClass > 137 137 DeclClass *handleDecl( DeclClass *decl, Type *type ); 138 template< typename AggDecl > 139 AggDecl * handleAggDecl( AggDecl * aggDecl ); 140 141 typedef PolyMutator Parent; 142 using Parent::mutate; 138 139 using PolyMutator::mutate; 143 140 virtual DeclarationWithType *mutate( FunctionDecl *functionDecl ) override; 144 141 virtual ObjectDecl *mutate( ObjectDecl *objectDecl ) override; 145 virtual StructDecl *mutate( StructDecl *structDecl ) override;146 virtual UnionDecl *mutate( UnionDecl *unionDecl ) override;147 142 virtual TypeDecl *mutate( TypeDecl *typeDecl ) override; 148 143 virtual TypedefDecl *mutate( TypedefDecl *typedefDecl ) override; … … 691 686 for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) { 692 687 TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param ); 693 assert f(paramType,"Aggregate parameters should be type expressions");688 assert(paramType && "Aggregate parameters should be type expressions"); 694 689 paramType->set_type( replaceWithConcrete( appExpr, paramType->get_type(), false ) ); 695 690 } … … 788 783 void Pass1::boxParams( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) { 789 784 for ( std::list< DeclarationWithType *>::const_iterator param = function->get_parameters().begin(); param != function->get_parameters().end(); ++param, ++arg ) { 790 assert f( arg != appExpr->get_args().end(), "boxParams: missing argument for param %s to %s in %s", toString( *param ).c_str(), toString( function ).c_str(), toString( appExpr ).c_str() );785 assert( arg != appExpr->get_args().end() ); 791 786 addCast( *arg, (*param)->get_type(), exprTyVars ); 792 787 boxParam( (*param)->get_type(), *arg, exprTyVars ); … … 1132 1127 makeTyVarMap( function, exprTyVars ); // xxx - should this take into account the variables already bound in scopeTyVars (i.e. remove them from exprTyVars?) 1133 1128 ReferenceToType *dynRetType = isDynRet( function, exprTyVars ); 1134 1135 // NOTE: addDynRetParam needs to know the actual (generated) return type so it can make a temp variable, so pass the result type from the appExpr 1136 // passTypeVars needs to know the program-text return type (i.e. the distinction between _conc_T30 and T3(int)) 1137 // concRetType may not be a good name in one or both of these places. A more appropriate name change is welcome. 1129 Type *concRetType = appExpr->get_result()->isVoid() ? nullptr : appExpr->get_result();// ?: dynRetType; // xxx - is concRetType a good name? 1130 1138 1131 if ( dynRetType ) { 1139 Type *concRetType = appExpr->get_result()->isVoid() ? nullptr : appExpr->get_result();1140 1132 ret = addDynRetParam( appExpr, function, concRetType, arg ); // xxx - used to use dynRetType instead of concRetType 1141 1133 } else if ( needsAdapter( function, scopeTyVars ) && ! needsAdapter( function, exprTyVars) ) { // xxx - exprTyVars is used above...? … … 1150 1142 arg = appExpr->get_args().begin(); 1151 1143 1152 Type *concRetType = replaceWithConcrete( appExpr, dynRetType );1153 1144 passTypeVars( appExpr, concRetType, arg, exprTyVars ); // xxx - used to use dynRetType instead of concRetType; this changed so that the correct type paramaters are passed for return types (it should be the concrete type's parameters, not the formal type's) 1154 1145 addInferredParams( appExpr, function, arg, exprTyVars ); … … 1280 1271 template< typename DeclClass > 1281 1272 DeclClass * Pass2::handleDecl( DeclClass *decl, Type *type ) { 1282 DeclClass *ret = static_cast< DeclClass *>( Parent::mutate( decl ) );1273 DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) ); 1283 1274 1284 1275 return ret; … … 1314 1305 } 1315 1306 1316 template< typename AggDecl >1317 AggDecl * Pass2::handleAggDecl( AggDecl * aggDecl ) {1318 // prevent tyVars from leaking into containing scope1319 scopeTyVars.beginScope();1320 Parent::mutate( aggDecl );1321 scopeTyVars.endScope();1322 return aggDecl;1323 }1324 1325 StructDecl * Pass2::mutate( StructDecl *aggDecl ) {1326 return handleAggDecl( aggDecl );1327 }1328 1329 UnionDecl * Pass2::mutate( UnionDecl *aggDecl ) {1330 return handleAggDecl( aggDecl );1331 }1332 1333 1307 TypeDecl * Pass2::mutate( TypeDecl *typeDecl ) { 1334 1308 addToTyVarMap( typeDecl, scopeTyVars ); … … 1336 1310 return handleDecl( typeDecl, typeDecl->get_base() ); 1337 1311 } else { 1338 return Parent::mutate( typeDecl );1312 return Mutator::mutate( typeDecl ); 1339 1313 } 1340 1314 } … … 1348 1322 makeTyVarMap( pointerType, scopeTyVars ); 1349 1323 1350 Type *ret = Parent::mutate( pointerType );1324 Type *ret = Mutator::mutate( pointerType ); 1351 1325 1352 1326 scopeTyVars.endScope(); -
src/GenPoly/InstantiateGeneric.cc
r2162c2c rbb82c03 18 18 #include <utility> 19 19 #include <vector> 20 #include <unordered_map>21 20 22 21 #include "InstantiateGeneric.h" … … 25 24 #include "GenPoly.h" 26 25 #include "ScopedSet.h" 27 #include "PolyMutator.h"28 26 29 27 #include "ResolvExpr/typeops.h" … … 148 146 } 149 147 150 // collect the environments of each TypeInstType so that type variables can be replaced151 // xxx - possibly temporary solution. Access to type environments is required in GenericInstantiator, but it needs to be a DeclMutator which does not provide easy access to the type environments.152 class EnvFinder final : public GenPoly::PolyMutator {153 public:154 virtual Type * mutate( TypeInstType * inst ) override {155 if ( env ) envMap[inst] = env;156 return inst;157 }158 159 // don't want to associate an environment with TypeInstTypes that occur in function types - this may actually only apply to function types belonging to DeclarationWithTypes (or even just FunctionDecl)?160 virtual Type * mutate( FunctionType * ftype ) override {161 return ftype;162 }163 std::unordered_map< ReferenceToType *, TypeSubstitution * > envMap;164 };165 166 148 /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately 167 149 class GenericInstantiator final : public DeclMutator { … … 172 154 /// Namer for concrete types 173 155 UniqueName typeNamer; 174 /// Reference to mapping of environments 175 const std::unordered_map< ReferenceToType *, TypeSubstitution * > & envMap; 156 176 157 public: 177 GenericInstantiator( const std::unordered_map< ReferenceToType *, TypeSubstitution * > & envMap ) : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_"), envMap( envMap) {}158 GenericInstantiator() : DeclMutator(), instantiations(), dtypeStatics(), typeNamer("_conc_") {} 178 159 179 160 using DeclMutator::mutate; … … 193 174 void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); } 194 175 195 void replaceParametersWithConcrete( std::list< Expression* >& params );196 Type *replaceWithConcrete( Type *type, bool doClone );197 198 176 /// Strips a dtype-static aggregate decl of its type parameters, marks it as stripped 199 177 void stripDtypeParams( AggregateDecl *base, std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs ); … … 201 179 202 180 void instantiateGeneric( std::list< Declaration* > &translationUnit ) { 203 EnvFinder finder; 204 mutateAll( translationUnit, finder ); 205 GenericInstantiator instantiator( finder.envMap ); 181 GenericInstantiator instantiator; 206 182 instantiator.mutateDeclarationList( translationUnit ); 207 183 } … … 233 209 // can pretend that any ftype is `void (*)(void)` 234 210 out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) ); 235 break;236 case TypeDecl::Ttype:237 assertf( false, "Ttype parameters are not currently allowed as parameters to generic types." );238 211 break; 239 212 } … … 280 253 } 281 254 282 /// xxx - more or less copied from box -- these should be merged with those somehow...283 void GenericInstantiator::replaceParametersWithConcrete( std::list< Expression* >& params ) {284 for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {285 TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );286 assertf(paramType, "Aggregate parameters should be type expressions");287 paramType->set_type( replaceWithConcrete( paramType->get_type(), false ) );288 }289 }290 291 Type *GenericInstantiator::replaceWithConcrete( Type *type, bool doClone ) {292 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {293 if ( envMap.count( typeInst ) ) {294 TypeSubstitution * env = envMap.at( typeInst );295 Type *concrete = env->lookup( typeInst->get_name() );296 if ( concrete ) {297 return concrete->clone();298 }299 else return typeInst->clone();300 }301 } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {302 if ( doClone ) {303 structType = structType->clone();304 }305 replaceParametersWithConcrete( structType->get_parameters() );306 return structType;307 } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {308 if ( doClone ) {309 unionType = unionType->clone();310 }311 replaceParametersWithConcrete( unionType->get_parameters() );312 return unionType;313 }314 return type;315 }316 317 318 255 Type* GenericInstantiator::mutate( StructInstType *inst ) { 319 256 // mutate subtypes … … 325 262 if ( inst->get_parameters().empty() ) return inst; 326 263 327 // need to replace type variables to ensure that generic types are instantiated for the return values of polymorphic functions (in particular, for thunks, because they are not [currently] copy constructed).328 replaceWithConcrete( inst, false );329 330 264 // check for an already-instantiatiated dtype-static type 331 265 if ( dtypeStatics.find( inst->get_baseStruct() ) != dtypeStatics.end() ) { … … 335 269 336 270 // check if type can be concretely instantiated; put substitutions into typeSubs 337 assert f( inst->get_baseParameters(),"Base struct has parameters" );271 assert( inst->get_baseParameters() && "Base struct has parameters" ); 338 272 std::list< TypeExpr* > typeSubs; 339 273 genericType gt = makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ); -
src/GenPoly/ScrubTyVars.cc
r2162c2c rbb82c03 31 31 case TypeDecl::Any: 32 32 case TypeDecl::Dtype: 33 case TypeDecl::Ttype:34 33 { 35 34 PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( typeInst->get_qualifiers() ) ); -
src/GenPoly/Specialize.cc
r2162c2c rbb82c03 32 32 #include "Common/utility.h" 33 33 #include "InitTweak/InitTweak.h" 34 #include "Tuples/Tuples.h"35 34 36 35 namespace GenPoly { 37 class Specializer; 36 const std::list<Label> noLabels; 37 38 38 class Specialize final : public PolyMutator { 39 friend class Specializer;40 39 public: 40 Specialize( std::string paramPrefix = "_p" ); 41 41 42 using PolyMutator::mutate; 42 43 virtual Expression * mutate( ApplicationExpr *applicationExpr ) override; … … 47 48 // virtual Expression * mutate( CommaExpr *commaExpr ); 48 49 49 Specializer * specializer = nullptr; 50 private: 51 Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams = 0 ); 52 Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 ); 50 53 void handleExplicitParams( ApplicationExpr *appExpr ); 54 55 UniqueName thunkNamer; 56 std::string paramPrefix; 51 57 }; 52 58 53 class Specializer { 54 public: 55 Specializer( Specialize & spec ) : spec( spec ), env( spec.env ), stmtsToAdd( spec.stmtsToAdd ) {} 56 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) = 0; 57 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) = 0; 58 virtual Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 ); 59 60 protected: 61 Specialize & spec; 62 std::string paramPrefix = "_p"; 63 TypeSubstitution *& env; 64 std::list< Statement * > & stmtsToAdd; 65 }; 66 67 // for normal polymorphic -> monomorphic function conversion 68 class PolySpecializer : public Specializer { 69 public: 70 PolySpecializer( Specialize & spec ) : Specializer( spec ) {} 71 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) override; 72 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) override; 73 }; 74 75 // // for tuple -> non-tuple function conversion 76 class TupleSpecializer : public Specializer { 77 public: 78 TupleSpecializer( Specialize & spec ) : Specializer( spec ) {} 79 virtual bool needsSpecialization( Type * formalType, Type * actualType, TypeSubstitution * env ) override; 80 virtual Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) override; 81 }; 59 void convertSpecializations( std::list< Declaration* >& translationUnit ) { 60 Specialize specializer; 61 mutateAll( translationUnit, specializer ); 62 } 63 64 Specialize::Specialize( std::string paramPrefix ) 65 : thunkNamer( "_thunk" ), paramPrefix( paramPrefix ) { 66 } 82 67 83 68 /// Looks up open variables in actual type, returning true if any of them are bound in the environment or formal type. 84 bool PolySpecializer::needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {69 bool needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) { 85 70 if ( env ) { 86 71 using namespace ResolvExpr; … … 107 92 108 93 /// Generates a thunk that calls `actual` with type `funType` and returns its address 109 Expression * PolySpecializer::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) { 110 static UniqueName thunkNamer( "_thunk" ); 111 94 Expression * Specialize::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) { 112 95 FunctionType *newType = funType->clone(); 113 96 if ( env ) { 97 TypeSubstitution newEnv( *env ); 114 98 // it is important to replace only occurrences of type variables that occur free in the 115 99 // thunk's type 116 env->applyFree( newType );100 newEnv.applyFree( newType ); 117 101 } // if 118 102 // create new thunk with same signature as formal type (C linkage, empty body) … … 141 125 std::list< Statement* > oldStmts; 142 126 oldStmts.splice( oldStmts.end(), stmtsToAdd ); 143 spec.handleExplicitParams( appExpr );127 handleExplicitParams( appExpr ); 144 128 paramPrefix = oldParamPrefix; 145 129 // write any statements added for recursive specializations into the thunk body … … 163 147 } 164 148 165 Expression * Specialize r::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {149 Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) { 166 150 assertf( actual->has_result(), "attempting to specialize an untyped expression" ); 167 151 if ( needsSpecialization( formalType, actual->get_result(), env ) ) { 168 if ( FunctionType *funType = getFunctionType( formalType ) ) { 152 FunctionType *funType; 153 if ( ( funType = getFunctionType( formalType ) ) ) { 169 154 ApplicationExpr *appExpr; 170 155 VariableExpr *varExpr; … … 185 170 } 186 171 187 bool TupleSpecializer::needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {188 if ( FunctionType * ftype = getFunctionType( formalType ) ) {189 return ftype->isTtype();190 }191 return false;192 }193 194 /// restructures arg to match the structure of a single formal parameter. Assumes that atomic types are compatible (as the Resolver should have ensured this)195 template< typename OutIterator >196 void matchOneFormal( Expression * arg, unsigned & idx, Type * formal, OutIterator out ) {197 if ( TupleType * tupleType = dynamic_cast< TupleType * >( formal ) ) {198 std::list< Expression * > exprs;199 for ( Type * t : *tupleType ) {200 matchOneFormal( arg, idx, t, back_inserter( exprs ) );201 }202 *out++ = new TupleExpr( exprs );203 } else {204 *out++ = new TupleIndexExpr( arg->clone(), idx++ );205 }206 }207 208 /// restructures the ttype argument to match the structure of the formal parameters of the actual function.209 // [begin, end) are the formal parameters.210 // args is the list of arguments currently given to the actual function, the last of which needs to be restructured.211 template< typename Iterator, typename OutIterator >212 void fixLastArg( Expression * last, Iterator begin, Iterator end, OutIterator out ) {213 // safe_dynamic_cast for the assertion214 safe_dynamic_cast< TupleType * >( last->get_result() );215 unsigned idx = 0;216 for ( ; begin != end; ++begin ) {217 DeclarationWithType * formal = *begin;218 Type * formalType = formal->get_type();219 matchOneFormal( last, idx, formalType, out );220 }221 delete last;222 }223 224 Expression * TupleSpecializer::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) {225 static UniqueName thunkNamer( "_tupleThunk" );226 227 FunctionType *newType = funType->clone();228 if ( env ) {229 // it is important to replace only occurrences of type variables that occur free in the230 // thunk's type231 env->applyFree( newType );232 } // if233 // create new thunk with same signature as formal type (C linkage, empty body)234 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ), false, false );235 thunkFunc->fixUniqueId();236 237 // thunks may be generated and not used - silence warning with attribute238 thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );239 240 // thread thunk parameters into call to actual function, naming thunk parameters as we go241 UniqueName paramNamer( paramPrefix );242 ApplicationExpr *appExpr = new ApplicationExpr( actual );243 244 FunctionType * actualType = getFunctionType( actual->get_result() )->clone();245 if ( env ) {246 // need to apply the environment to the actual function's type, since it may itself be polymorphic247 env->apply( actualType );248 }249 std::unique_ptr< FunctionType > actualTypeManager( actualType ); // for RAII250 std::list< DeclarationWithType * >::iterator actualBegin = actualType->get_parameters().begin();251 std::list< DeclarationWithType * >::iterator actualEnd = actualType->get_parameters().end();252 std::list< DeclarationWithType * >::iterator formalBegin = funType->get_parameters().begin();253 std::list< DeclarationWithType * >::iterator formalEnd = funType->get_parameters().end();254 255 Expression * last = nullptr;256 for ( DeclarationWithType* param : thunkFunc->get_functionType()->get_parameters() ) {257 // walk the parameters to the actual function alongside the parameters to the thunk to find the location where the ttype parameter begins to satisfy parameters in the actual function.258 param->set_name( paramNamer.newName() );259 assertf( formalBegin != formalEnd, "Reached end of formal parameters before finding ttype parameter" );260 if ( Tuples::isTtype((*formalBegin)->get_type()) ) {261 last = new VariableExpr( param );262 break;263 }264 assertf( actualBegin != actualEnd, "reached end of actual function's arguments before finding ttype parameter" );265 ++actualBegin;266 ++formalBegin;267 268 appExpr->get_args().push_back( new VariableExpr( param ) );269 } // for270 assert( last );271 fixLastArg( last, actualBegin, actualEnd, back_inserter( appExpr->get_args() ) );272 appExpr->set_env( maybeClone( env ) );273 if ( inferParams ) {274 appExpr->get_inferParams() = *inferParams;275 } // if276 277 // handle any specializations that may still be present278 std::string oldParamPrefix = paramPrefix;279 paramPrefix += "p";280 // save stmtsToAdd in oldStmts281 std::list< Statement* > oldStmts;282 oldStmts.splice( oldStmts.end(), stmtsToAdd );283 spec.mutate( appExpr );284 paramPrefix = oldParamPrefix;285 // write any statements added for recursive specializations into the thunk body286 thunkFunc->get_statements()->get_kids().splice( thunkFunc->get_statements()->get_kids().end(), stmtsToAdd );287 // restore oldStmts into stmtsToAdd288 stmtsToAdd.splice( stmtsToAdd.end(), oldStmts );289 290 // add return (or valueless expression) to the thunk291 Statement *appStmt;292 if ( funType->get_returnVals().empty() ) {293 appStmt = new ExprStmt( noLabels, appExpr );294 } else {295 appStmt = new ReturnStmt( noLabels, appExpr );296 } // if297 thunkFunc->get_statements()->get_kids().push_back( appStmt );298 299 // add thunk definition to queue of statements to add300 stmtsToAdd.push_back( new DeclStmt( noLabels, thunkFunc ) );301 // return address of thunk function as replacement expression302 return new AddressExpr( new VariableExpr( thunkFunc ) );303 }304 305 172 void Specialize::handleExplicitParams( ApplicationExpr *appExpr ) { 306 173 // create thunks for the explicit parameters … … 311 178 std::list< Expression* >::iterator actual; 312 179 for ( formal = function->get_parameters().begin(), actual = appExpr->get_args().begin(); formal != function->get_parameters().end() && actual != appExpr->get_args().end(); ++formal, ++actual ) { 313 *actual = specializer->doSpecialization( (*formal )->get_type(), *actual, &appExpr->get_inferParams() );180 *actual = doSpecialization( (*formal )->get_type(), *actual, &appExpr->get_inferParams() ); 314 181 } 315 182 } … … 323 190 // don't need to do this for intrinsic calls, because they aren't actually passed 324 191 for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) { 325 inferParam->second.expr = specializer->doSpecialization( inferParam->second.formalType, inferParam->second.expr, inferParam->second.inferParams.get() );192 inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() ); 326 193 } 194 327 195 handleExplicitParams( appExpr ); 328 196 } 197 329 198 return appExpr; 330 199 } … … 333 202 addrExpr->get_arg()->acceptMutator( *this ); 334 203 assert( addrExpr->has_result() ); 335 addrExpr->set_arg( specializer->doSpecialization( addrExpr->get_result(), addrExpr->get_arg() ) );204 addrExpr->set_arg( doSpecialization( addrExpr->get_result(), addrExpr->get_arg() ) ); 336 205 return addrExpr; 337 206 } … … 343 212 return castExpr; 344 213 } 345 Expression *specialized = specializer->doSpecialization( castExpr->get_result(), castExpr->get_arg() );214 Expression *specialized = doSpecialization( castExpr->get_result(), castExpr->get_arg() ); 346 215 if ( specialized != castExpr->get_arg() ) { 347 216 // assume here that the specialization incorporates the cast … … 367 236 // return commaExpr; 368 237 // } 369 370 void convertSpecializations( std::list< Declaration* >& translationUnit ) {371 Specialize spec;372 373 TupleSpecializer tupleSpec( spec );374 spec.specializer = &tupleSpec;375 mutateAll( translationUnit, spec );376 377 PolySpecializer polySpec( spec );378 spec.specializer = &polySpec;379 mutateAll( translationUnit, spec );380 }381 238 } // namespace GenPoly 382 239 -
src/InitTweak/FixInit.cc
r2162c2c rbb82c03 38 38 #include "SynTree/AddStmtVisitor.h" 39 39 #include "CodeGen/GenType.h" // for warning/error messages 40 #include "Tuples/Tuples.h"41 40 42 41 bool ctordtorp = false; // print all debug … … 393 392 394 393 bool ResolveCopyCtors::skipCopyConstruct( Type * type ) { 395 return dynamic_cast< VarArgsType * >( type ) || GenPoly::getFunctionType( type ) || Tuples::isTtype( type );394 return dynamic_cast< VarArgsType * >( type ) || GenPoly::getFunctionType( type ); 396 395 } 397 396 … … 1100 1099 addDeclaration( tmp ); 1101 1100 1102 // xxx - this can be TupleAssignExpr now. Need to properly handle this case.1103 1101 ApplicationExpr * callExpr = safe_dynamic_cast< ApplicationExpr * > ( ctorExpr->get_callExpr() ); 1104 1102 TypeSubstitution * env = ctorExpr->get_env(); -
src/InitTweak/InitTweak.cc
r2162c2c rbb82c03 487 487 virtual void visit( UntypedValofExpr *valofExpr ) { isConstExpr = false; } 488 488 virtual void visit( CompoundLiteralExpr *compLitExpr ) { isConstExpr = false; } 489 virtual void visit( UntypedTupleExpr *tupleExpr ) { isConstExpr = false; }490 489 virtual void visit( TupleExpr *tupleExpr ) { isConstExpr = false; } 491 490 virtual void visit( TupleAssignExpr *tupleExpr ) { isConstExpr = false; } -
src/Parser/DeclarationNode.cc
r2162c2c rbb82c03 948 948 // if ( variable.name ) { 949 949 if ( variable.tyClass != NoTypeClass ) { 950 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Dtype, TypeDecl::Ftype, TypeDecl::Ttype }; 951 assertf( sizeof(kindMap)/sizeof(kindMap[0] == NoTypeClass-1), "DeclarationNode::build: kindMap is out of sync." ); 952 assertf( variable.tyClass < sizeof(kindMap)/sizeof(kindMap[0]), "Variable's tyClass is out of bounds." ); 950 static const TypeDecl::Kind kindMap[] = { TypeDecl::Any, TypeDecl::Ftype, TypeDecl::Dtype }; 953 951 // TypeDecl * ret = new TypeDecl( *variable.name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] ); 954 952 TypeDecl * ret = new TypeDecl( *name, DeclarationNode::NoStorageClass, nullptr, kindMap[ variable.tyClass ] ); -
src/Parser/ExpressionNode.cc
r2162c2c rbb82c03 323 323 324 324 Expression *build_tuple( ExpressionNode * expr_node ) { 325 std::list< Expression * > exprs;326 buildMoveList( expr_node, exprs);327 return new UntypedTupleExpr( exprs );;325 TupleExpr *ret = new TupleExpr(); 326 buildMoveList( expr_node, ret->get_exprs() ); 327 return ret; 328 328 } 329 329 -
src/Parser/ParseNode.h
r2162c2c rbb82c03 204 204 enum Length { Short, Long, LongLong, NoLength }; 205 205 enum Aggregate { Struct, Union, Trait, NoAggregate }; 206 enum TypeClass { Otype, Dtype, Ftype, Ttype,NoTypeClass };206 enum TypeClass { Otype, Dtype, Ftype, NoTypeClass }; 207 207 enum BuiltinType { Valist, Zero, One, NoBuiltinType }; 208 208 -
src/Parser/lex.cc
r2162c2c rbb82c03 382 382 (yy_c_buf_p) = yy_cp; 383 383 384 #define YY_NUM_RULES 18 6385 #define YY_END_OF_BUFFER 18 7384 #define YY_NUM_RULES 185 385 #define YY_END_OF_BUFFER 186 386 386 /* This struct is not used in this scanner, 387 387 but its presence is necessary. */ … … 391 391 flex_int32_t yy_nxt; 392 392 }; 393 static yyconst flex_int16_t yy_accept[90 9] =393 static yyconst flex_int16_t yy_accept[905] = 394 394 { 0, 395 0, 0, 0, 0, 0, 0, 12 1, 121, 124, 124,396 18 7, 185, 7, 9, 8, 144, 123, 106, 149, 152,397 1 20, 131, 132, 147, 145, 135, 146, 138, 148, 111,398 11 2, 113, 136, 137, 154, 156, 155, 157, 185, 106,399 12 9, 185, 130, 150, 106, 108, 106, 106, 106, 106,400 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,401 10 6, 106, 106, 133, 153, 134, 151, 7, 185, 4,402 4, 18 6, 109, 186, 110, 121, 122, 128, 124, 125,403 7, 9, 0, 8, 16 1, 180, 106, 0, 173, 143,404 16 6, 174, 171, 158, 169, 159, 170, 168, 0, 117,405 406 3, 0, 17 2, 116, 114, 0, 0, 114, 114, 0,407 0, 11 4, 113, 113, 113, 0, 113, 141, 142, 140,408 16 2, 164, 160, 165, 163, 0, 0, 0, 0, 0,395 0, 0, 0, 0, 0, 0, 120, 120, 123, 123, 396 186, 184, 7, 9, 8, 143, 122, 105, 148, 151, 397 119, 130, 131, 146, 144, 134, 145, 137, 147, 110, 398 111, 112, 135, 136, 153, 155, 154, 156, 184, 105, 399 128, 184, 129, 149, 105, 107, 105, 105, 105, 105, 400 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 401 105, 105, 105, 132, 152, 133, 150, 7, 184, 4, 402 4, 185, 108, 185, 109, 120, 121, 127, 123, 124, 403 7, 9, 0, 8, 160, 179, 105, 0, 172, 142, 404 165, 173, 170, 157, 168, 158, 169, 167, 0, 116, 405 406 3, 0, 171, 115, 113, 0, 0, 113, 113, 0, 407 0, 113, 112, 112, 112, 0, 112, 140, 141, 139, 408 161, 163, 159, 164, 162, 0, 0, 0, 0, 0, 409 409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 410 10 7, 179, 0, 123, 120, 106, 0, 0, 176, 0,411 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,412 10 6, 106, 106, 106, 106, 106, 106, 38, 106, 106,413 10 6, 106, 106, 106, 106, 106, 106, 106, 57, 106,414 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,415 10 6, 106, 106, 106, 106, 106, 106, 106, 175, 167,416 417 7, 0, 0, 0, 2, 0, 5, 109, 0, 0,418 0, 121, 0, 127, 126, 126, 0, 0, 0, 124,410 106, 178, 0, 122, 119, 105, 0, 0, 175, 0, 411 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 412 105, 105, 105, 105, 105, 105, 105, 38, 105, 105, 413 105, 105, 105, 105, 105, 105, 105, 105, 57, 105, 414 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 415 105, 105, 105, 105, 105, 105, 105, 174, 166, 7, 416 417 0, 0, 0, 2, 0, 5, 108, 0, 0, 0, 418 120, 0, 126, 125, 125, 0, 0, 0, 123, 0, 419 419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420 0, 0, 0, 0, 0, 139, 117, 118, 0, 118,421 118, 0, 0, 6, 118, 114, 0, 0, 0, 118,422 0, 114, 114, 114, 114, 0, 115, 0, 0, 113,423 11 3, 113, 113, 0, 177, 178, 0, 183, 181, 0,424 0, 0, 107, 0, 0, 0, 0, 0, 0, 0,425 0, 106, 17, 106, 106, 106, 106, 106, 106, 106,426 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,427 428 106, 14, 106, 106, 106, 106, 106, 106, 106, 106,429 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,430 51, 106, 106, 106, 64, 106, 106, 106, 106, 106,431 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,432 91, 106, 106, 106, 106, 106, 106, 106, 106, 106,433 0, 0, 0, 0, 0, 0, 0, 0, 126, 0,434 0, 0, 0, 0, 126, 0, 0, 184, 0, 0,435 0, 0, 0, 0, 0, 118, 0, 118, 0, 118,436 0, 118, 0, 0, 118, 0, 114, 114, 0, 0,437 115, 115, 0, 115, 0, 115, 113, 113, 0, 0,438 439 0, 0, 0, 0, 0, 0, 0, 0, 182, 106,440 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,441 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,442 106, 106, 21, 106, 24, 106, 27, 106, 106, 106,443 10 6, 106, 106, 106, 41, 106, 43, 106, 106, 106,444 10 6, 106, 106, 106, 56, 106, 67, 106, 106, 106,445 10 6, 106, 106, 106, 106, 106, 106, 106, 106, 106,446 10 6, 106, 106, 106, 106, 100, 106, 106, 106, 0,420 0, 0, 0, 0, 138, 116, 117, 0, 117, 117, 421 0, 0, 6, 117, 113, 0, 0, 0, 117, 0, 422 113, 113, 113, 113, 0, 114, 0, 0, 112, 112, 423 112, 112, 0, 176, 177, 0, 182, 180, 0, 0, 424 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 425 105, 17, 105, 105, 105, 105, 105, 105, 105, 105, 426 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 427 428 14, 105, 105, 105, 105, 105, 105, 105, 105, 105, 429 105, 105, 105, 105, 105, 105, 105, 105, 105, 51, 430 105, 105, 105, 64, 105, 105, 105, 105, 105, 105, 431 105, 105, 105, 105, 105, 105, 105, 105, 105, 91, 432 105, 105, 105, 105, 105, 105, 105, 105, 0, 0, 433 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 434 0, 0, 125, 0, 0, 183, 0, 0, 0, 0, 435 0, 0, 0, 117, 0, 117, 0, 117, 0, 117, 436 0, 0, 117, 0, 113, 113, 0, 0, 114, 114, 437 0, 114, 0, 114, 112, 112, 0, 0, 0, 0, 438 439 0, 0, 0, 0, 0, 0, 181, 105, 105, 105, 440 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 441 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 442 21, 105, 24, 105, 27, 105, 105, 105, 105, 105, 443 105, 105, 41, 105, 43, 105, 105, 105, 105, 105, 444 105, 105, 56, 105, 67, 105, 105, 105, 105, 105, 445 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 446 105, 105, 99, 105, 105, 105, 0, 0, 0, 0, 447 447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 448 0, 0, 0, 126, 0, 0, 0, 0, 0, 118, 449 450 0, 0, 0, 0, 0, 0, 0, 115, 115, 0, 451 119, 0, 115, 115, 0, 0, 0, 0, 0, 0, 452 0, 0, 0, 0, 0, 0, 0, 106, 106, 22, 453 106, 106, 106, 106, 106, 106, 106, 15, 106, 106, 454 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 455 106, 106, 23, 25, 106, 32, 106, 106, 106, 106, 456 40, 106, 106, 106, 106, 49, 106, 106, 54, 106, 457 106, 71, 72, 106, 106, 106, 78, 106, 106, 106, 458 106, 106, 88, 90, 92, 106, 106, 97, 106, 106, 459 104, 106, 0, 0, 0, 0, 0, 0, 0, 0, 460 448 125, 0, 0, 0, 0, 0, 117, 0, 0, 0, 449 450 0, 0, 0, 0, 114, 114, 0, 118, 0, 114, 451 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 452 0, 0, 0, 0, 105, 105, 22, 105, 105, 105, 453 105, 105, 105, 105, 15, 105, 105, 105, 105, 105, 454 105, 105, 105, 105, 105, 105, 105, 105, 105, 23, 455 25, 105, 32, 105, 105, 105, 105, 40, 105, 105, 456 105, 105, 49, 105, 105, 54, 105, 105, 71, 72, 457 105, 105, 105, 78, 105, 105, 105, 105, 105, 88, 458 90, 105, 105, 96, 105, 105, 103, 105, 0, 0, 461 459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 462 0, 119, 0, 0, 115, 119, 119, 119, 119, 0, 463 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 464 0, 106, 0, 106, 106, 106, 106, 106, 106, 106, 465 106, 106, 106, 106, 106, 106, 106, 106, 106, 59, 466 106, 106, 106, 106, 106, 106, 106, 106, 28, 106, 467 106, 106, 39, 42, 45, 106, 106, 52, 106, 61, 468 68, 106, 106, 77, 79, 82, 83, 85, 86, 106, 469 106, 94, 106, 106, 105, 0, 1, 0, 0, 0, 470 0, 0, 0, 109, 0, 0, 0, 126, 0, 0, 471 472 0, 0, 119, 0, 119, 119, 0, 0, 0, 0, 473 0, 0, 0, 0, 0, 106, 106, 18, 106, 106, 474 106, 106, 106, 106, 106, 16, 106, 106, 106, 33, 475 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 476 106, 106, 36, 37, 106, 48, 53, 106, 106, 106, 477 93, 106, 106, 0, 0, 0, 0, 0, 0, 0, 478 0, 0, 0, 0, 0, 0, 10, 11, 29, 55, 479 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 480 106, 60, 62, 65, 106, 106, 80, 95, 106, 106, 481 35, 106, 47, 73, 74, 106, 98, 101, 0, 0, 482 460 461 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 462 114, 118, 118, 118, 118, 0, 114, 0, 0, 0, 463 0, 0, 0, 0, 0, 0, 0, 105, 0, 105, 464 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 465 105, 105, 105, 105, 105, 59, 105, 105, 105, 105, 466 105, 105, 105, 105, 28, 105, 105, 105, 39, 42, 467 45, 105, 105, 52, 105, 61, 68, 105, 105, 77, 468 79, 82, 83, 85, 86, 105, 105, 93, 105, 105, 469 104, 0, 1, 0, 0, 0, 0, 0, 0, 108, 470 0, 0, 0, 125, 0, 0, 0, 0, 118, 0, 471 472 118, 118, 0, 0, 0, 0, 0, 0, 0, 0, 473 0, 105, 105, 18, 105, 105, 105, 105, 105, 105, 474 105, 16, 105, 105, 105, 33, 105, 105, 105, 105, 475 105, 105, 105, 105, 105, 105, 105, 105, 36, 37, 476 105, 48, 53, 105, 105, 105, 92, 105, 105, 0, 483 477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 484 106, 69, 106, 106, 12, 106, 106, 30, 34, 106, 485 106, 106, 66, 106, 106, 106, 106, 106, 106, 106, 486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 487 0, 0, 0, 58, 106, 106, 106, 106, 106, 106, 488 106, 50, 63, 75, 81, 96, 102, 106, 106, 106, 489 0, 0, 0, 0, 0, 0, 0, 0, 106, 106, 490 13, 19, 106, 106, 31, 106, 106, 106, 26, 46, 491 89, 0, 0, 106, 106, 106, 106, 106, 106, 76, 492 103, 106, 87, 20, 106, 106, 44, 84, 106, 106, 493 494 106, 106, 106, 106, 106, 99, 70, 0 478 0, 0, 10, 11, 29, 55, 105, 105, 105, 105, 479 105, 105, 105, 105, 105, 105, 105, 60, 62, 65, 480 105, 105, 80, 94, 105, 105, 35, 105, 47, 73, 481 74, 105, 97, 100, 0, 0, 0, 0, 0, 0, 482 483 0, 0, 0, 0, 0, 0, 105, 69, 105, 105, 484 12, 105, 105, 30, 34, 105, 105, 105, 66, 105, 485 105, 105, 105, 105, 105, 105, 0, 0, 0, 0, 486 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 487 105, 105, 105, 105, 105, 105, 105, 50, 63, 75, 488 81, 95, 101, 105, 105, 105, 0, 0, 0, 0, 489 0, 0, 0, 0, 105, 105, 13, 19, 105, 105, 490 31, 105, 105, 105, 26, 46, 89, 0, 0, 105, 491 105, 105, 105, 105, 105, 76, 102, 105, 87, 20, 492 105, 105, 44, 84, 105, 105, 105, 105, 105, 105, 493 494 105, 98, 70, 0 495 495 } ; 496 496 … … 540 540 } ; 541 541 542 static yyconst flex_int16_t yy_base[10 83] =542 static yyconst flex_int16_t yy_base[1079] = 543 543 { 0, 544 0, 84, 2330, 2327, 94, 0, 177, 178, 179, 180, 545 2341, 2877, 191, 2877, 197, 55, 2877, 2287, 60, 173, 546 2877, 2877, 2877, 56, 188, 2877, 191, 189, 204, 216, 547 275, 0, 2306, 2877, 216, 2305, 152, 344, 155, 220, 548 2877, 159, 2877, 217, 226, 2877, 185, 154, 212, 251, 549 237, 270, 235, 257, 241, 279, 193, 305, 314, 351, 550 238, 228, 227, 2877, 225, 2877, 2300, 406, 412, 2877, 551 2309, 2877, 2277, 235, 2877, 0, 2877, 439, 0, 2877, 552 426, 2877, 452, 464, 2877, 511, 2276, 264, 2877, 2877, 553 2877, 2877, 2877, 2293, 2877, 2290, 2877, 2877, 2300, 572, 554 555 2877, 2317, 2877, 451, 457, 524, 547, 298, 253, 197, 556 312, 279, 0, 342, 325, 198, 322, 2877, 2877, 2877, 557 2287, 2877, 2877, 2877, 2285, 2282, 218, 312, 2295, 350, 558 363, 368, 369, 391, 411, 417, 2276, 452, 2225, 453, 559 2254, 2877, 274, 2877, 2877, 438, 2248, 2245, 2877, 2218, 560 435, 282, 353, 277, 391, 419, 442, 320, 583, 451, 561 446, 443, 479, 469, 364, 472, 481, 454, 458, 484, 562 503, 493, 352, 506, 486, 453, 507, 509, 2246, 539, 563 532, 524, 516, 528, 556, 530, 540, 552, 553, 564, 564 574, 538, 576, 613, 573, 597, 602, 571, 2877, 2877, 565 566 668, 674, 2294, 680, 2877, 686, 2877, 2241, 603, 2235, 567 2234, 0, 683, 2877, 2877, 692, 2233, 2231, 2211, 0, 568 2233, 556, 627, 630, 662, 699, 688, 692, 693, 696, 569 2230, 700, 703, 2205, 2202, 2877, 0, 695, 726, 693, 570 701, 2201, 2253, 2877, 747, 742, 700, 753, 760, 793, 571 815, 746, 2877, 2210, 2183, 0, 802, 2227, 801, 754, 572 2877, 2203, 2178, 839, 2877, 2877, 2210, 2877, 2877, 709, 573 723, 2187, 2185, 755, 2181, 2180, 2178, 0, 2175, 0, 574 2144, 694, 736, 737, 741, 614, 739, 738, 742, 798, 575 807, 792, 802, 797, 746, 816, 748, 791, 824, 819, 576 577 826, 2174, 827, 830, 831, 440, 834, 838, 836, 843, 578 847, 849, 841, 850, 861, 853, 862, 851, 863, 865, 579 872, 864, 873, 874, 2173, 749, 875, 876, 878, 880, 580 881, 882, 884, 885, 886, 888, 889, 892, 898, 896, 581 2171, 899, 906, 944, 901, 907, 913, 917, 908, 911, 582 976, 977, 2165, 2164, 2163, 0, 2161, 0, 964, 968, 583 2158, 0, 2157, 0, 2156, 0, 2176, 2877, 964, 967, 584 2153, 2147, 0, 2143, 0, 2877, 979, 998, 990, 2877, 585 1004, 1044, 2141, 1020, 1066, 2139, 2877, 2877, 963, 1006, 586 1052, 1005, 1091, 968, 1083, 1006, 2877, 2877, 2136, 2134, 587 588 2132, 0, 2129, 0, 2126, 0, 2125, 0, 2877, 931, 589 981, 985, 928, 1024, 987, 1068, 958, 1070, 1060, 1010, 590 1005, 1072, 1083, 1022, 1078, 1082, 1088, 1042, 1084, 1081, 591 1089, 1097, 2127, 1090, 2125, 1095, 2122, 1093, 1091, 1109, 592 1101, 1111, 1115, 1116, 2119, 1118, 2118, 1119, 1120, 1121, 593 1123, 1126, 1127, 1128, 2117, 1129, 2115, 1131, 1134, 1135, 594 1132, 1138, 1140, 1143, 1148, 1149, 1150, 1152, 1155, 1151, 595 1161, 1164, 1166, 1168, 1169, 2112, 1170, 1172, 1175, 1221, 596 2106, 0, 2105, 0, 2104, 0, 2102, 0, 1216, 2099, 597 0, 2096, 0, 2095, 2094, 2092, 0, 2089, 0, 1223, 598 599 2086, 1229, 1245, 1231, 1270, 1236, 1186, 1185, 2877, 1286, 600 1304, 1297, 2097, 2072, 2082, 2079, 0, 2076, 0, 2075, 601 0, 2074, 0, 2072, 0, 2069, 0, 1190, 1210, 2069, 602 1191, 1227, 1212, 1230, 1253, 1246, 1254, 1280, 1281, 1282, 603 1284, 1228, 1287, 1286, 1288, 1285, 234, 1293, 1289, 1304, 604 1300, 1305, 2068, 1322, 1306, 2067, 1308, 1313, 1318, 1320, 605 2065, 1323, 1324, 1326, 1327, 2062, 1330, 1331, 2061, 1334, 606 1335, 2060, 2058, 1337, 1339, 1340, 2055, 1004, 1346, 1347, 607 1348, 1349, 1364, 2054, 2053, 1351, 1353, 2051, 1350, 1355, 608 2018, 1362, 2066, 2012, 0, 2009, 0, 2006, 0, 2005, 609 610 0, 2004, 0, 2002, 0, 1999, 0, 1996, 0, 1401, 611 1407, 1435, 1418, 1995, 2877, 1424, 1411, 1421, 1427, 1994, 612 2877, 1992, 0, 1989, 0, 1988, 0, 1987, 0, 0, 613 0, 1988, 0, 1412, 1422, 1419, 1387, 1369, 1416, 1433, 614 1436, 1403, 1446, 1441, 1431, 1432, 1451, 1452, 1455, 1456, 615 1457, 1486, 1460, 1461, 1462, 1464, 1463, 1467, 1985, 1465, 616 1468, 1470, 1984, 1983, 1981, 1472, 1466, 1974, 1478, 1972, 617 1971, 1480, 1484, 1968, 1964, 1960, 1956, 1953, 1952, 1487, 618 1494, 1951, 1497, 1483, 1949, 1996, 2877, 1942, 0, 1941, 619 0, 0, 0, 1942, 0, 0, 0, 2877, 0, 0, 620 621 0, 0, 1537, 1936, 2877, 2877, 1543, 1935, 0, 1934, 622 0, 0, 0, 0, 1932, 1499, 1519, 1932, 1500, 1524, 623 1530, 1501, 1502, 1533, 1537, 1931, 1532, 1541, 1534, 1539, 624 1544, 599, 1548, 1549, 1579, 1556, 1557, 1560, 1561, 1562, 625 1563, 1564, 1930, 1928, 1567, 1925, 1924, 1566, 1569, 1572, 626 1923, 1574, 1578, 0, 0, 0, 1918, 1915, 1914, 1624, 627 0, 1913, 1911, 1908, 1907, 1906, 1907, 1904, 1903, 1902, 628 1580, 1588, 1576, 1577, 1601, 1583, 1602, 1589, 1604, 1603, 629 1636, 1900, 1609, 1897, 1610, 1614, 1617, 1622, 1618, 1623, 630 1896, 1624, 1895, 1893, 1886, 1626, 1884, 1883, 1877, 1876, 631 632 1875, 1873, 1856, 1847, 1846, 1843, 1836, 1833, 1826, 1824, 633 1628, 1826, 1629, 1630, 1631, 1632, 1635, 1637, 1805, 1639, 634 1667, 1642, 1804, 1643, 1653, 1658, 1651, 1652, 1659, 1662, 635 1800, 1793, 1791, 1790, 1748, 1745, 1744, 1742, 1741, 1737, 636 1735, 1733, 1732, 1734, 1663, 1664, 1666, 1672, 1673, 1674, 637 1675, 1731, 1689, 1676, 1644, 1522, 1680, 1685, 1686, 1687, 638 1500, 1411, 1363, 1362, 1260, 1219, 1218, 1047, 1690, 1688, 639 1046, 1700, 1695, 1701, 924, 1704, 1708, 1709, 839, 794, 640 759, 702, 636, 1682, 1710, 1713, 1714, 1715, 1717, 638, 641 536, 1719, 488, 441, 1721, 1722, 408, 281, 1723, 1726, 642 643 1727, 1729, 1728, 1730, 1733, 233, 137, 2877, 1805, 1818, 644 1831, 1841, 1851, 1864, 1874, 1887, 1900, 1913, 1921, 1931, 645 1938, 1945, 1952, 1959, 1966, 1973, 1980, 1987, 1994, 2001, 646 2005, 2013, 2019, 2026, 2033, 2040, 2047, 2050, 2057, 2063, 647 2076, 2089, 2096, 2103, 2110, 2117, 2120, 2127, 2130, 2137, 648 2140, 2147, 2150, 2157, 2160, 2167, 2170, 2177, 2180, 2187, 649 2195, 2202, 2209, 2216, 2223, 2226, 2233, 2236, 2243, 2246, 650 2253, 2259, 2272, 2279, 2286, 2289, 2296, 2299, 2306, 2309, 651 2316, 2319, 2326, 2329, 2336, 2339, 2346, 2353, 2356, 2363, 652 2366, 2373, 2380, 2387, 2390, 2397, 2400, 2407, 2410, 2417, 653 654 2420, 2427, 2430, 2437, 2443, 2456, 2463, 2470, 2473, 2480, 655 2483, 2490, 2493, 2500, 2503, 2510, 2513, 2520, 2523, 2530, 656 2533, 2540, 2543, 2550, 2557, 2560, 2567, 2570, 2577, 2580, 657 2587, 2590, 2593, 2599, 2606, 2615, 2622, 2629, 2632, 2639, 658 2642, 2645, 2651, 2658, 2661, 2664, 2667, 2670, 2673, 2676, 659 2679, 2686, 2689, 2696, 2699, 2702, 2705, 2708, 2718, 2725, 660 2728, 2731, 2734, 2741, 2748, 2755, 2758, 2765, 2772, 2779, 661 2786, 2793, 2800, 2807, 2814, 2821, 2828, 2835, 2842, 2849, 662 2856, 2863 544 0, 84, 2323, 2322, 94, 0, 177, 178, 179, 180, 545 2338, 2866, 191, 2866, 197, 55, 2866, 2283, 60, 173, 546 2866, 2866, 2866, 56, 188, 2866, 191, 189, 204, 216, 547 275, 0, 2300, 2866, 216, 2298, 152, 344, 155, 220, 548 2866, 159, 2866, 217, 226, 2866, 185, 154, 212, 251, 549 237, 270, 235, 257, 241, 279, 193, 305, 314, 333, 550 238, 228, 227, 2866, 225, 2866, 2295, 402, 390, 2866, 551 2306, 2866, 2273, 235, 2866, 0, 2866, 426, 0, 2866, 552 417, 2866, 439, 451, 2866, 498, 2270, 264, 2866, 2866, 553 2866, 2866, 2866, 2286, 2866, 2285, 2866, 2866, 2297, 559, 554 555 2866, 2313, 2866, 438, 444, 511, 534, 289, 253, 197, 556 380, 305, 0, 319, 280, 198, 322, 2866, 2866, 2866, 557 2281, 2866, 2866, 2866, 2278, 2277, 218, 312, 2292, 350, 558 459, 368, 398, 440, 405, 448, 2272, 441, 2219, 458, 559 2247, 2866, 335, 2866, 2866, 321, 2243, 2242, 2866, 2214, 560 444, 297, 433, 372, 425, 454, 434, 461, 570, 455, 561 468, 385, 474, 475, 494, 492, 489, 464, 488, 491, 562 513, 503, 430, 521, 517, 519, 516, 522, 2240, 526, 563 523, 276, 460, 524, 542, 555, 554, 561, 325, 558, 564 584, 552, 600, 586, 593, 588, 595, 2866, 2866, 667, 565 566 655, 2287, 682, 2866, 688, 2866, 2236, 590, 2232, 2230, 567 0, 648, 2866, 2866, 675, 2227, 2224, 2223, 0, 2246, 568 578, 631, 654, 685, 698, 660, 689, 670, 692, 2242, 569 695, 701, 2200, 2198, 2866, 0, 693, 720, 685, 711, 570 2197, 2247, 2866, 737, 745, 666, 757, 763, 797, 780, 571 599, 2866, 2203, 2178, 0, 805, 2224, 806, 617, 2866, 572 2199, 2172, 819, 2866, 2866, 2203, 2866, 2866, 707, 722, 573 2182, 2182, 699, 2177, 2174, 2171, 0, 2170, 0, 2141, 574 743, 724, 739, 689, 741, 720, 623, 759, 762, 804, 575 681, 795, 749, 746, 799, 801, 765, 784, 803, 811, 576 577 2170, 814, 818, 827, 831, 817, 821, 833, 835, 841, 578 842, 834, 843, 844, 845, 847, 849, 857, 858, 860, 579 851, 859, 866, 2167, 867, 868, 869, 871, 873, 874, 580 763, 875, 876, 880, 881, 884, 887, 888, 885, 2164, 581 891, 936, 894, 897, 905, 899, 901, 902, 965, 961, 582 2160, 2159, 2157, 0, 2154, 0, 952, 956, 2153, 0, 583 2152, 0, 2150, 0, 2169, 2866, 951, 952, 2148, 2145, 584 0, 2143, 0, 2866, 967, 986, 978, 2866, 992, 1032, 585 2140, 1008, 1054, 2136, 2866, 2866, 915, 951, 1040, 993, 586 1079, 956, 1071, 994, 2866, 2866, 2132, 2130, 2128, 0, 587 588 2125, 0, 2123, 0, 2121, 0, 2866, 935, 969, 973, 589 968, 1012, 975, 1056, 992, 1058, 997, 1032, 993, 1000, 590 1060, 1061, 1066, 1070, 1073, 1030, 1071, 1069, 1072, 1078, 591 2121, 700, 2118, 1085, 2117, 1079, 1081, 1089, 1087, 1098, 592 1096, 1099, 2116, 1101, 2114, 1105, 1106, 1107, 1109, 1112, 593 1113, 1114, 2111, 1115, 2108, 1117, 1119, 1120, 1118, 1124, 594 1126, 1121, 1136, 1130, 1134, 1135, 1149, 1137, 1138, 1150, 595 1152, 1153, 2107, 1151, 1154, 1167, 1205, 2103, 0, 2101, 596 0, 2098, 0, 2095, 0, 1204, 2094, 0, 2093, 0, 597 2091, 2088, 2085, 0, 2084, 0, 1208, 2083, 1214, 1230, 598 599 1216, 1255, 1221, 1172, 1169, 2866, 1271, 1289, 1282, 2093, 600 2066, 2075, 2074, 0, 2073, 0, 2071, 0, 2068, 0, 601 2065, 0, 2064, 0, 1190, 1159, 2066, 1193, 1195, 1197, 602 1212, 1237, 1231, 1265, 1248, 1266, 1267, 1213, 1268, 1269, 603 1283, 1270, 1271, 234, 1285, 1273, 1274, 1287, 1293, 2064, 604 1306, 1301, 2061, 1290, 1303, 1305, 1308, 2058, 1312, 1309, 605 1311, 1313, 2057, 1314, 1319, 2056, 1316, 1322, 2054, 2051, 606 1315, 1327, 1330, 2050, 1333, 1332, 1336, 1334, 1338, 1345, 607 2049, 1335, 1348, 2047, 1346, 1349, 2044, 1351, 2093, 2039, 608 0, 2037, 0, 2004, 0, 2002, 0, 2001, 0, 1998, 609 610 0, 1995, 0, 1994, 0, 1394, 1404, 1428, 1415, 1993, 611 2866, 1421, 1370, 1391, 1419, 1991, 2866, 1988, 0, 1985, 612 0, 1984, 0, 1983, 0, 0, 0, 1984, 0, 1352, 613 1406, 1408, 1359, 1354, 1409, 1415, 1412, 1411, 1423, 1433, 614 1425, 1430, 1435, 1437, 1439, 1448, 1442, 1449, 1440, 1444, 615 1453, 1450, 1452, 1456, 1981, 1458, 1460, 1463, 1980, 1979, 616 1977, 1466, 1467, 1974, 1470, 1973, 1972, 1469, 1473, 1970, 617 1963, 1961, 1960, 1957, 1953, 1475, 1479, 1949, 1476, 1477, 618 1945, 1992, 2866, 1938, 0, 1937, 0, 0, 0, 1938, 619 0, 0, 0, 2866, 0, 0, 0, 0, 1525, 1932, 620 621 2866, 2866, 1531, 1931, 0, 1930, 0, 0, 0, 0, 622 1928, 1488, 1483, 1928, 1491, 1507, 1518, 1490, 1519, 1521, 623 1508, 1927, 1525, 1529, 1527, 1541, 1530, 1384, 1543, 1539, 624 1558, 1547, 1549, 1512, 1545, 1552, 1553, 1554, 1926, 1924, 625 1557, 1921, 1920, 1556, 1537, 1560, 1919, 1561, 1564, 0, 626 0, 0, 1914, 1911, 1910, 1612, 0, 1909, 1907, 1904, 627 1903, 1902, 1903, 1900, 1899, 1898, 1568, 1572, 1566, 1577, 628 1590, 1570, 1578, 1579, 1591, 1596, 1625, 1896, 1598, 1893, 629 1599, 1603, 1604, 1608, 1606, 1612, 1892, 1613, 1891, 1889, 630 1886, 1614, 1885, 1884, 1879, 1872, 1870, 1869, 1866, 1865, 631 632 1864, 1862, 1845, 1836, 1835, 1832, 1616, 1828, 1617, 1622, 633 1620, 1619, 1624, 1626, 1825, 1628, 1644, 1630, 1818, 1631, 634 1639, 1645, 1647, 1634, 1649, 1651, 1813, 1812, 1791, 1790, 635 1789, 1782, 1780, 1779, 1737, 1735, 1733, 1732, 1730, 1732, 636 1652, 1654, 1655, 1657, 1659, 1662, 1663, 1731, 1729, 1668, 637 1727, 1724, 1669, 1670, 1664, 1675, 1719, 1718, 1671, 1629, 638 1564, 1468, 1350, 1269, 1678, 1681, 1239, 1682, 1688, 1689, 639 1238, 1690, 1692, 1696, 1206, 1171, 1157, 1035, 1031, 1691, 640 1697, 1700, 1704, 1702, 1706, 998, 560, 1701, 527, 395, 641 1707, 1710, 357, 300, 1708, 1713, 1715, 1718, 1716, 1719, 642 643 1720, 233, 137, 2866, 1794, 1807, 1820, 1830, 1840, 1853, 644 1863, 1876, 1889, 1902, 1910, 1920, 1927, 1934, 1941, 1948, 645 1955, 1962, 1969, 1976, 1983, 1990, 1994, 2002, 2008, 2015, 646 2022, 2029, 2036, 2039, 2046, 2052, 2065, 2078, 2085, 2092, 647 2099, 2106, 2109, 2116, 2119, 2126, 2129, 2136, 2139, 2146, 648 2149, 2156, 2159, 2166, 2169, 2176, 2184, 2191, 2198, 2205, 649 2212, 2215, 2222, 2225, 2232, 2235, 2242, 2248, 2261, 2268, 650 2275, 2278, 2285, 2288, 2295, 2298, 2305, 2308, 2315, 2318, 651 2325, 2328, 2335, 2342, 2345, 2352, 2355, 2362, 2369, 2376, 652 2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426, 653 654 2432, 2445, 2452, 2459, 2462, 2469, 2472, 2479, 2482, 2489, 655 2492, 2499, 2502, 2509, 2512, 2519, 2522, 2529, 2532, 2539, 656 2546, 2549, 2556, 2559, 2566, 2569, 2576, 2579, 2582, 2588, 657 2595, 2604, 2611, 2618, 2621, 2628, 2631, 2634, 2640, 2647, 658 2650, 2653, 2656, 2659, 2662, 2665, 2668, 2675, 2678, 2685, 659 2688, 2691, 2694, 2697, 2707, 2714, 2717, 2720, 2723, 2730, 660 2737, 2744, 2747, 2754, 2761, 2768, 2775, 2782, 2789, 2796, 661 2803, 2810, 2817, 2824, 2831, 2838, 2845, 2852 663 662 } ; 664 663 665 static yyconst flex_int16_t yy_def[10 83] =664 static yyconst flex_int16_t yy_def[1079] = 666 665 { 0, 667 908, 1, 909, 909, 908, 5, 910, 910, 911, 911, 668 908, 908, 908, 908, 908, 908, 908, 912, 908, 908, 666 904, 1, 905, 905, 904, 5, 906, 906, 907, 907, 667 904, 904, 904, 904, 904, 904, 904, 908, 904, 904, 668 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 669 904, 31, 904, 904, 904, 904, 904, 904, 909, 908, 670 904, 904, 904, 904, 908, 904, 908, 908, 908, 908, 669 671 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 670 908, 31, 908, 908, 908, 908, 908, 908, 913, 912, 671 908, 908, 908, 908, 912, 908, 912, 912, 912, 912, 672 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 673 912, 912, 912, 908, 908, 908, 908, 908, 914, 908, 674 908, 908, 915, 908, 908, 916, 908, 908, 917, 908, 675 908, 908, 908, 908, 908, 908, 912, 908, 908, 908, 676 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 677 678 908, 918, 908, 908, 30, 908, 908, 908, 908, 919, 679 30, 908, 31, 908, 908, 31, 908, 908, 908, 908, 680 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 681 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 682 920, 908, 908, 908, 908, 912, 921, 922, 908, 908, 683 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 684 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 685 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 686 912, 912, 912, 912, 912, 912, 912, 912, 912, 912, 687 912, 912, 912, 912, 912, 912, 912, 912, 908, 908, 688 689 908, 914, 914, 914, 908, 914, 908, 915, 908, 923, 690 924, 916, 908, 908, 908, 908, 925, 926, 927, 917, 691 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 692 908, 908, 908, 928, 929, 908, 100, 908, 908, 908, 693 908, 100, 918, 908, 100, 111, 246, 908, 908, 908, 694 908, 908, 908, 908, 908, 930, 931, 932, 908, 908, 695 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 696 908, 908, 933, 908, 934, 935, 936, 937, 938, 939, 697 908, 940, 940, 940, 940, 940, 940, 940, 940, 940, 698 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 699 700 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 701 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 702 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 703 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 704 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, 705 941, 942, 943, 944, 945, 946, 947, 948, 908, 908, 706 949, 950, 951, 952, 953, 954, 908, 908, 908, 908, 707 908, 955, 956, 957, 958, 908, 908, 908, 908, 908, 708 908, 908, 382, 908, 378, 385, 908, 908, 959, 960, 709 961, 908, 908, 908, 961, 908, 908, 908, 962, 963, 710 711 964, 965, 966, 967, 968, 969, 970, 971, 908, 972, 712 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 713 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 714 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 715 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 716 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 717 972, 972, 972, 972, 972, 972, 972, 972, 972, 972, 718 972, 972, 972, 972, 972, 972, 972, 972, 972, 973, 719 974, 975, 976, 977, 978, 979, 980, 981, 908, 982, 720 983, 984, 985, 986, 986, 987, 988, 989, 990, 908, 721 722 500, 908, 908, 991, 908, 991, 908, 908, 908, 908, 723 908, 908, 908, 908, 992, 993, 994, 995, 996, 997, 724 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1005, 1005, 725 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 726 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 727 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 728 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 729 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 730 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 731 1005, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 732 733 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 908, 734 908, 908, 908, 1023, 908, 612, 908, 908, 908, 616, 735 908, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 736 1033, 1034, 1035, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 737 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 738 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 739 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 740 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 741 1034, 1034, 1034, 1034, 1034, 1036, 908, 1037, 1038, 1039, 742 1040, 1041, 1042, 1043, 1044, 1045, 1046, 908, 1047, 1048, 743 744 1049, 1050, 908, 703, 908, 908, 908, 1051, 1052, 1053, 745 1054, 1055, 1056, 1057, 1058, 1059, 1059, 1059, 1059, 1059, 746 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 747 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 748 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 749 1059, 1059, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 908, 750 1066, 1051, 1053, 1067, 1068, 1058, 1059, 1059, 1059, 1059, 751 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 752 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 753 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1069, 1070, 754 755 1063, 1071, 1064, 1072, 1065, 1073, 1074, 1067, 1075, 1068, 756 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 757 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 758 1076, 1069, 1077, 1070, 1078, 1071, 1079, 1072, 1080, 1073, 759 1081, 1074, 1075, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 760 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 761 1082, 1076, 1077, 1078, 1079, 1053, 1080, 1081, 1059, 1059, 762 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 763 1059, 1082, 1053, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 764 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 765 766 1059, 1059, 1059, 1059, 1059, 1059, 1059, 0, 908, 908, 672 908, 908, 908, 904, 904, 904, 904, 904, 910, 904, 673 904, 904, 911, 904, 904, 912, 904, 904, 913, 904, 674 904, 904, 904, 904, 904, 904, 908, 904, 904, 904, 675 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 676 677 904, 914, 904, 904, 30, 904, 904, 904, 904, 915, 678 30, 904, 31, 904, 904, 31, 904, 904, 904, 904, 679 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 680 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 681 916, 904, 904, 904, 904, 908, 917, 918, 904, 904, 767 682 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 768 683 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 769 684 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 770 685 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 771 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 772 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 773 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 774 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 775 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 776 777 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 778 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 779 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 780 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 781 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 782 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 783 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 784 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 785 908, 908 686 908, 908, 908, 908, 908, 908, 908, 904, 904, 904, 687 688 910, 910, 910, 904, 910, 904, 911, 904, 919, 920, 689 912, 904, 904, 904, 904, 921, 922, 923, 913, 904, 690 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 691 904, 904, 924, 925, 904, 100, 904, 904, 904, 904, 692 100, 914, 904, 100, 111, 245, 904, 904, 904, 904, 693 904, 904, 904, 904, 926, 927, 928, 904, 904, 904, 694 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 695 904, 929, 904, 930, 931, 932, 933, 934, 935, 904, 696 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 697 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 698 699 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 700 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 701 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 702 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, 703 936, 936, 936, 936, 936, 936, 936, 936, 937, 938, 704 939, 940, 941, 942, 943, 944, 904, 904, 945, 946, 705 947, 948, 949, 950, 904, 904, 904, 904, 904, 951, 706 952, 953, 954, 904, 904, 904, 904, 904, 904, 904, 707 380, 904, 376, 383, 904, 904, 955, 956, 957, 904, 708 904, 904, 957, 904, 904, 904, 958, 959, 960, 961, 709 710 962, 963, 964, 965, 966, 967, 904, 968, 968, 968, 711 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 712 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 713 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 714 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 715 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 716 968, 968, 968, 968, 968, 968, 968, 968, 968, 968, 717 968, 968, 968, 968, 968, 968, 969, 970, 971, 972, 718 973, 974, 975, 976, 977, 904, 978, 979, 980, 981, 719 982, 982, 983, 984, 985, 986, 904, 497, 904, 904, 720 721 987, 904, 987, 904, 904, 904, 904, 904, 904, 904, 722 904, 988, 989, 990, 991, 992, 993, 994, 995, 996, 723 997, 998, 999, 1000, 1001, 1001, 1001, 1001, 1001, 1001, 724 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 725 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 726 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 727 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 728 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 729 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1003, 730 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 731 732 1014, 1015, 1016, 1017, 1018, 904, 904, 904, 904, 1019, 733 904, 608, 904, 904, 904, 612, 904, 1020, 1021, 1022, 734 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1030, 735 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 736 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 737 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 738 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 739 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 740 1030, 1032, 904, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 741 1040, 1041, 1042, 904, 1043, 1044, 1045, 1046, 904, 699, 742 743 904, 904, 904, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 744 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 745 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 746 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 747 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1056, 748 1057, 1058, 1059, 1060, 1061, 904, 1062, 1047, 1049, 1063, 749 1064, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 750 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 751 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 752 1055, 1055, 1055, 1055, 1065, 1066, 1059, 1067, 1060, 1068, 753 754 1061, 1069, 1070, 1063, 1071, 1064, 1055, 1055, 1055, 1055, 755 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 756 1055, 1055, 1055, 1055, 1055, 1055, 1072, 1065, 1073, 1066, 757 1074, 1067, 1075, 1068, 1076, 1069, 1077, 1070, 1071, 1055, 758 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 759 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1072, 1073, 1074, 760 1075, 1049, 1076, 1077, 1055, 1055, 1055, 1055, 1055, 1055, 761 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1078, 1049, 1055, 762 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 763 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 764 765 1055, 1055, 1055, 0, 904, 904, 904, 904, 904, 904, 766 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 767 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 768 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 769 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 770 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 771 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 772 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 773 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 774 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 775 776 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 777 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 778 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 779 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 780 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 781 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 782 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 783 904, 904, 904, 904, 904, 904, 904, 904 786 784 } ; 787 785 788 static yyconst flex_int16_t yy_nxt[29 63] =786 static yyconst flex_int16_t yy_nxt[2952] = 789 787 { 0, 790 788 12, 13, 14, 15, 15, 15, 13, 16, 17, 12, … … 811 809 812 810 84, 84, 84, 83, 92, 94, 88, 143, 147, 99, 813 96, 100, 100, 100, 100, 100, 100, 25 6, 908, 95,811 96, 100, 100, 100, 100, 100, 100, 255, 904, 95, 814 812 101, 86, 97, 98, 86, 102, 162, 119, 144, 78, 815 813 78, 78, 78, 145, 148, 103, 104, 88, 105, 105, 816 105, 105, 106, 106, 120, 88, 121, 122, 149, 26 7,817 150, 26 8, 258, 264, 185, 107, 199, 652, 160, 108,814 105, 105, 106, 106, 120, 88, 121, 122, 149, 266, 815 150, 267, 257, 263, 185, 107, 198, 648, 160, 108, 818 816 161, 151, 152, 153, 88, 109, 110, 154, 155, 163, 819 817 156, 111, 88, 157, 158, 146, 164, 107, 88, 88, 820 88, 159, 165, 112, 210, 88, 88, 88, 198, 88, 821 88, 109, 197, 88, 110, 104, 254, 113, 113, 113, 822 823 113, 113, 113, 88, 170, 178, 171, 200, 196, 88, 824 211, 181, 166, 234, 107, 172, 167, 182, 114, 179, 825 255, 168, 88, 275, 115, 169, 180, 173, 253, 88, 826 116, 88, 908, 88, 88, 174, 107, 175, 286, 235, 827 176, 252, 117, 267, 177, 268, 252, 253, 183, 276, 828 115, 126, 284, 184, 253, 127, 128, 88, 129, 144, 829 130, 131, 908, 132, 145, 133, 88, 259, 262, 186, 830 187, 261, 88, 253, 134, 135, 136, 194, 190, 188, 831 269, 267, 189, 268, 290, 260, 191, 269, 192, 260, 832 908, 261, 263, 193, 267, 137, 268, 261, 138, 267, 833 834 267, 268, 268, 88, 88, 88, 146, 201, 82, 83, 835 83, 83, 201, 204, 205, 202, 88, 261, 204, 318, 836 195, 270, 267, 285, 268, 139, 140, 81, 82, 83, 837 83, 83, 81, 309, 206, 206, 206, 206, 206, 206, 838 213, 214, 267, 88, 268, 213, 144, 215, 267, 271, 839 268, 145, 215, 83, 82, 83, 83, 83, 83, 287, 840 88, 216, 216, 216, 216, 83, 82, 84, 84, 84, 841 83, 88, 215, 245, 245, 245, 245, 245, 245, 246, 842 246, 246, 246, 267, 267, 268, 268, 88, 217, 288, 843 88, 215, 88, 88, 88, 88, 215, 215, 88, 436, 844 845 215, 215, 282, 88, 304, 88, 88, 908, 215, 283, 846 88, 215, 247, 215, 218, 215, 289, 219, 221, 302, 847 303, 88, 222, 223, 88, 321, 307, 224, 225, 312, 848 226, 88, 227, 88, 310, 908, 88, 313, 88, 308, 849 88, 228, 229, 230, 104, 88, 106, 106, 106, 106, 850 106, 106, 305, 306, 311, 88, 320, 314, 88, 88, 851 315, 88, 231, 107, 249, 232, 249, 317, 88, 250, 852 250, 250, 250, 250, 250, 319, 88, 328, 316, 248, 853 88, 327, 88, 323, 88, 107, 322, 367, 88, 368, 854 88, 88, 88, 233, 237, 237, 237, 237, 237, 237, 855 856 333, 326, 251, 334, 88, 88, 324, 329, 88, 336, 857 238, 239, 240, 325, 241, 240, 88, 342, 338, 330, 858 335, 144, 781, 88, 337, 88, 88, 242, 88, 331, 859 332, 340, 240, 239, 240, 88, 339, 241, 345, 240, 860 291, 292, 293, 350, 294, 295, 346, 343, 296, 88, 861 297, 88, 353, 341, 88, 298, 299, 300, 367, 301, 862 368, 367, 347, 368, 348, 88, 88, 349, 344, 201, 863 82, 83, 83, 83, 201, 204, 205, 202, 354, 368, 864 204, 204, 205, 414, 213, 214, 204, 351, 205, 213, 865 88, 908, 351, 367, 352, 368, 206, 206, 206, 206, 866 867 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 868 206, 206, 206, 206, 359, 359, 359, 359, 368, 367, 869 908, 368, 369, 367, 367, 368, 368, 367, 370, 368, 870 367, 367, 368, 368, 367, 376, 368, 376, 376, 380, 871 267, 380, 268, 377, 380, 377, 88, 360, 378, 378, 872 378, 378, 378, 378, 267, 384, 268, 908, 376, 410, 873 376, 380, 104, 380, 246, 246, 246, 246, 380, 382, 874 382, 382, 382, 382, 382, 106, 106, 106, 106, 106, 875 106, 379, 250, 250, 250, 250, 250, 250, 88, 88, 876 88, 88, 107, 88, 88, 387, 415, 247, 88, 417, 877 878 88, 88, 383, 397, 399, 428, 411, 412, 259, 413, 879 416, 88, 457, 425, 107, 385, 385, 385, 385, 385, 880 385, 387, 390, 106, 106, 106, 106, 106, 106, 397, 881 400, 238, 249, 240, 249, 241, 240, 250, 250, 250, 882 250, 250, 250, 88, 88, 392, 88, 393, 386, 88, 883 88, 394, 429, 240, 88, 240, 259, 395, 241, 88, 884 240, 113, 113, 113, 113, 113, 113, 422, 88, 396, 885 418, 88, 423, 393, 419, 424, 88, 394, 88, 88, 886 420, 421, 88, 88, 426, 427, 88, 434, 88, 430, 887 88, 88, 435, 88, 264, 88, 432, 433, 431, 88, 888 889 441, 88, 88, 88, 442, 88, 437, 443, 438, 439, 890 440, 445, 444, 88, 88, 88, 88, 88, 449, 446, 891 450, 447, 451, 448, 88, 88, 88, 88, 88, 452, 892 88, 459, 88, 88, 88, 454, 88, 88, 88, 456, 893 88, 88, 458, 455, 88, 461, 453, 466, 88, 460, 894 88, 88, 144, 88, 465, 462, 464, 463, 88, 88, 895 88, 471, 467, 88, 468, 88, 469, 473, 470, 88, 896 472, 474, 475, 476, 477, 478, 88, 351, 205, 205, 897 88, 479, 351, 88, 352, 203, 215, 215, 215, 215, 898 359, 359, 359, 359, 528, 367, 88, 368, 367, 531, 899 900 368, 378, 378, 378, 378, 378, 378, 377, 505, 377, 901 88, 513, 378, 378, 378, 378, 378, 378, 506, 489, 902 500, 500, 500, 500, 500, 500, 237, 237, 237, 237, 903 237, 237, 535, 88, 505, 514, 238, 88, 240, 88, 904 241, 240, 246, 246, 246, 246, 106, 106, 508, 529, 905 533, 505, 530, 501, 509, 509, 88, 88, 240, 381, 906 240, 507, 88, 241, 675, 240, 382, 382, 382, 382, 907 382, 382, 390, 508, 88, 384, 88, 505, 538, 539, 908 509, 509, 238, 239, 240, 532, 241, 240, 385, 385, 909 385, 385, 385, 385, 88, 392, 543, 393, 88, 383, 910 911 548, 394, 908, 908, 240, 239, 240, 395, 510, 241, 912 510, 240, 88, 511, 511, 511, 511, 511, 511, 396, 913 88, 386, 88, 393, 88, 537, 392, 394, 393, 534, 914 88, 536, 394, 88, 88, 88, 88, 540, 515, 545, 915 88, 88, 88, 88, 550, 88, 512, 88, 544, 88, 916 396, 541, 542, 88, 393, 546, 553, 549, 394, 554, 917 551, 88, 547, 88, 552, 556, 555, 88, 88, 559, 918 88, 88, 88, 88, 557, 88, 558, 561, 88, 88, 919 88, 88, 560, 88, 88, 562, 88, 88, 565, 569, 920 88, 563, 88, 567, 564, 88, 573, 566, 570, 568, 921 922 88, 88, 88, 88, 88, 574, 571, 88, 572, 578, 923 575, 581, 576, 88, 582, 580, 88, 577, 88, 579, 924 88, 88, 88, 205, 88, 585, 586, 88, 583, 593, 925 592, 505, 589, 591, 615, 584, 587, 588, 215, 215, 926 215, 215, 88, 88, 590, 500, 500, 500, 500, 500, 927 500, 382, 382, 382, 382, 382, 382, 505, 636, 634, 928 615, 238, 88, 240, 88, 241, 240, 385, 385, 385, 929 385, 385, 385, 908, 883, 635, 505, 638, 501, 88, 930 88, 505, 88, 240, 502, 240, 506, 611, 241, 611, 931 240, 614, 612, 612, 612, 612, 612, 612, 88, 637, 932 933 503, 647, 505, 641, 639, 88, 88, 505, 511, 511, 934 511, 511, 511, 511, 510, 908, 510, 642, 640, 511, 935 511, 511, 511, 511, 511, 613, 616, 616, 616, 616, 936 616, 616, 88, 88, 88, 643, 88, 88, 88, 88, 937 88, 88, 617, 649, 618, 88, 619, 618, 648, 645, 938 651, 650, 88, 644, 653, 646, 88, 88, 88, 620, 939 88, 656, 657, 654, 618, 88, 618, 659, 658, 619, 940 88, 618, 88, 655, 88, 88, 88, 660, 88, 88, 941 661, 663, 88, 88, 664, 662, 88, 88, 669, 88, 942 666, 88, 88, 665, 667, 670, 671, 668, 88, 88, 943 944 88, 88, 88, 88, 673, 88, 677, 88, 676, 674, 945 680, 672, 681, 679, 88, 682, 88, 908, 908, 683, 946 684, 88, 678, 500, 500, 500, 500, 500, 500, 612, 947 612, 612, 612, 612, 612, 611, 685, 611, 721, 88, 948 612, 612, 612, 612, 612, 612, 616, 616, 616, 616, 949 616, 616, 720, 705, 705, 88, 610, 703, 703, 703, 950 703, 703, 703, 705, 88, 706, 908, 706, 88, 716, 951 706, 88, 725, 617, 88, 618, 705, 619, 618, 620, 952 719, 718, 717, 88, 88, 88, 705, 706, 88, 706, 953 704, 722, 723, 88, 706, 618, 724, 618, 88, 729, 954 955 619, 726, 618, 88, 88, 728, 727, 88, 88, 88, 956 735, 733, 88, 88, 88, 88, 88, 88, 88, 88, 957 88, 731, 88, 738, 88, 730, 734, 736, 741, 732, 958 88, 744, 88, 737, 739, 88, 88, 740, 88, 88, 959 742, 748, 743, 749, 745, 746, 88, 747, 750, 88, 960 753, 88, 88, 88, 88, 882, 751, 773, 752, 703, 961 703, 703, 703, 703, 703, 616, 616, 616, 616, 616, 962 616, 88, 767, 772, 88, 617, 88, 618, 769, 619, 963 618, 768, 88, 770, 88, 88, 88, 771, 774, 88, 964 776, 88, 704, 88, 779, 778, 88, 618, 707, 618, 965 966 88, 88, 619, 782, 618, 784, 777, 775, 88, 88, 967 783, 785, 88, 88, 88, 88, 88, 780, 88, 88, 968 787, 88, 786, 788, 88, 791, 88, 789, 88, 88, 969 88, 88, 88, 813, 797, 88, 790, 792, 794, 798, 970 88, 88, 793, 795, 814, 796, 703, 703, 703, 703, 971 703, 703, 811, 88, 88, 88, 88, 812, 816, 819, 972 821, 88, 88, 815, 822, 823, 88, 818, 820, 88, 973 88, 817, 825, 824, 88, 88, 88, 826, 88, 760, 974 88, 88, 88, 88, 88, 827, 847, 88, 88, 88, 975 849, 88, 850, 852, 88, 88, 88, 853, 828, 829, 976 977 846, 830, 845, 88, 88, 88, 848, 844, 855, 851, 978 88, 88, 857, 856, 88, 88, 88, 854, 88, 88, 979 858, 871, 859, 870, 88, 88, 88, 88, 88, 875, 980 860, 877, 88, 872, 88, 878, 869, 88, 88, 88, 981 88, 88, 88, 873, 876, 885, 879, 88, 881, 874, 982 880, 884, 88, 88, 892, 886, 88, 887, 888, 889, 983 88, 88, 88, 890, 891, 88, 88, 88, 894, 88, 984 896, 88, 897, 88, 88, 88, 895, 893, 88, 88, 985 88, 88, 88, 88, 901, 88, 88, 908, 908, 900, 986 868, 902, 908, 898, 899, 907, 867, 908, 905, 865, 987 988 908, 903, 904, 864, 906, 70, 70, 70, 70, 70, 989 70, 70, 70, 70, 70, 70, 70, 70, 76, 76, 818 88, 159, 165, 112, 209, 88, 88, 88, 197, 88, 819 88, 109, 196, 88, 110, 104, 253, 113, 113, 113, 820 821 113, 113, 113, 88, 170, 178, 171, 199, 195, 88, 822 210, 181, 166, 233, 107, 172, 167, 182, 114, 179, 823 254, 168, 88, 261, 115, 169, 180, 173, 88, 144, 824 116, 88, 251, 326, 145, 174, 107, 175, 252, 234, 825 176, 144, 117, 266, 177, 267, 145, 262, 183, 88, 826 115, 126, 88, 184, 252, 127, 128, 88, 129, 193, 827 130, 131, 259, 132, 252, 133, 88, 283, 260, 186, 828 187, 260, 251, 88, 134, 135, 136, 88, 190, 188, 829 252, 266, 189, 267, 274, 88, 191, 268, 146, 259, 830 337, 203, 204, 192, 260, 137, 203, 260, 138, 266, 831 832 904, 267, 194, 200, 82, 83, 83, 83, 200, 88, 833 275, 201, 205, 205, 205, 205, 205, 205, 81, 82, 834 83, 83, 83, 81, 88, 139, 140, 212, 213, 266, 835 904, 267, 212, 285, 214, 258, 266, 88, 267, 214, 836 83, 82, 83, 83, 83, 83, 303, 88, 215, 215, 837 215, 215, 83, 82, 84, 84, 84, 83, 904, 214, 838 244, 244, 244, 244, 244, 244, 245, 245, 245, 245, 839 269, 266, 266, 267, 267, 216, 268, 88, 214, 266, 840 270, 267, 88, 214, 214, 88, 88, 214, 214, 266, 841 266, 267, 267, 286, 904, 214, 88, 317, 214, 246, 842 843 214, 217, 214, 284, 218, 220, 88, 88, 288, 221, 844 222, 281, 88, 88, 223, 224, 88, 225, 282, 226, 845 88, 327, 904, 301, 287, 289, 88, 88, 227, 228, 846 229, 104, 306, 106, 106, 106, 106, 106, 106, 311, 847 88, 88, 302, 88, 88, 307, 88, 304, 305, 230, 848 107, 248, 231, 248, 309, 88, 249, 249, 249, 249, 849 249, 249, 310, 308, 313, 88, 247, 312, 88, 88, 850 314, 88, 107, 88, 88, 88, 88, 316, 88, 88, 851 232, 236, 236, 236, 236, 236, 236, 319, 315, 250, 852 318, 320, 325, 323, 88, 321, 322, 237, 238, 239, 853 854 324, 240, 239, 328, 88, 329, 88, 88, 144, 365, 855 88, 366, 88, 88, 241, 330, 331, 333, 335, 239, 856 238, 239, 88, 341, 240, 332, 239, 290, 291, 292, 857 338, 293, 294, 336, 334, 295, 88, 296, 88, 351, 858 88, 339, 297, 298, 299, 88, 300, 88, 385, 212, 859 213, 343, 88, 347, 212, 342, 203, 204, 345, 344, 860 346, 203, 365, 340, 366, 352, 395, 348, 200, 82, 861 83, 83, 83, 200, 385, 88, 201, 205, 205, 205, 862 205, 205, 205, 203, 204, 365, 904, 366, 203, 349, 863 204, 365, 395, 366, 349, 414, 350, 357, 357, 357, 864 865 357, 365, 366, 366, 205, 205, 205, 205, 205, 205, 866 205, 205, 205, 205, 205, 205, 365, 366, 366, 367, 867 365, 382, 366, 365, 368, 366, 365, 374, 366, 365, 868 358, 366, 365, 88, 366, 374, 374, 375, 266, 375, 869 267, 88, 376, 376, 376, 376, 376, 376, 397, 378, 870 374, 378, 88, 266, 378, 267, 420, 411, 374, 380, 871 380, 380, 380, 380, 380, 104, 550, 245, 245, 245, 872 245, 378, 88, 378, 398, 377, 88, 413, 378, 106, 873 106, 106, 106, 106, 106, 249, 249, 249, 249, 249, 874 249, 88, 381, 88, 409, 88, 107, 248, 88, 248, 875 876 246, 88, 249, 249, 249, 249, 249, 249, 408, 410, 877 412, 88, 258, 423, 88, 88, 415, 88, 107, 383, 878 383, 383, 383, 383, 383, 388, 427, 422, 106, 106, 879 106, 106, 106, 106, 416, 237, 88, 239, 461, 240, 880 239, 113, 113, 113, 113, 113, 113, 88, 390, 428, 881 391, 88, 384, 88, 392, 88, 88, 239, 426, 239, 882 393, 258, 240, 88, 239, 421, 88, 424, 425, 88, 883 88, 417, 394, 88, 263, 432, 391, 418, 419, 88, 884 392, 430, 429, 88, 431, 88, 88, 88, 433, 435, 885 434, 436, 439, 88, 88, 88, 88, 88, 440, 88, 886 887 441, 88, 444, 88, 443, 442, 437, 438, 446, 88, 888 88, 88, 88, 445, 448, 449, 447, 450, 88, 88, 889 88, 88, 452, 88, 457, 88, 88, 88, 88, 453, 890 455, 454, 88, 88, 451, 456, 88, 88, 459, 88, 891 88, 464, 458, 88, 144, 463, 88, 462, 460, 88, 892 469, 88, 470, 88, 88, 465, 474, 88, 468, 466, 893 502, 467, 472, 204, 471, 473, 349, 204, 475, 202, 894 503, 349, 476, 350, 214, 214, 214, 214, 357, 357, 895 357, 357, 365, 365, 366, 366, 502, 88, 88, 376, 896 376, 376, 376, 376, 376, 375, 502, 375, 525, 510, 897 898 376, 376, 376, 376, 376, 376, 504, 486, 497, 497, 899 497, 497, 497, 497, 236, 236, 236, 236, 236, 236, 900 88, 88, 502, 511, 237, 88, 239, 88, 240, 239, 901 245, 245, 245, 245, 106, 106, 505, 526, 530, 528, 902 527, 498, 506, 506, 88, 88, 239, 379, 239, 88, 903 88, 240, 88, 239, 380, 380, 380, 380, 380, 380, 904 388, 505, 534, 382, 88, 537, 532, 536, 506, 506, 905 237, 238, 239, 529, 240, 239, 383, 383, 383, 383, 906 383, 383, 88, 390, 88, 391, 904, 381, 545, 392, 907 904, 904, 239, 238, 239, 393, 507, 240, 507, 239, 908 909 535, 508, 508, 508, 508, 508, 508, 394, 88, 384, 910 88, 391, 88, 88, 390, 392, 391, 531, 88, 533, 911 392, 88, 88, 88, 88, 88, 512, 542, 538, 539, 912 88, 88, 547, 88, 509, 540, 541, 88, 394, 88, 913 543, 88, 391, 548, 546, 549, 392, 544, 88, 551, 914 88, 88, 552, 88, 554, 553, 556, 88, 88, 88, 915 558, 88, 555, 557, 88, 88, 88, 88, 559, 88, 916 88, 88, 88, 88, 562, 566, 88, 560, 88, 564, 917 561, 570, 88, 563, 567, 565, 88, 88, 88, 88, 918 88, 571, 568, 569, 578, 574, 572, 575, 573, 577, 919 920 576, 88, 88, 88, 88, 88, 88, 204, 579, 88, 921 582, 88, 581, 589, 580, 587, 585, 502, 611, 88, 922 583, 584, 588, 88, 631, 586, 214, 214, 214, 214, 923 497, 497, 497, 497, 497, 497, 380, 380, 380, 380, 924 380, 380, 88, 502, 611, 88, 237, 88, 239, 88, 925 240, 239, 383, 383, 383, 383, 383, 383, 88, 630, 926 632, 502, 634, 498, 88, 88, 502, 633, 239, 499, 927 239, 503, 607, 240, 607, 239, 610, 608, 608, 608, 928 608, 608, 608, 88, 642, 500, 635, 502, 637, 88, 929 88, 88, 502, 508, 508, 508, 508, 508, 508, 507, 930 931 88, 507, 636, 639, 508, 508, 508, 508, 508, 508, 932 609, 612, 612, 612, 612, 612, 612, 88, 88, 88, 933 88, 88, 88, 88, 904, 88, 88, 613, 638, 614, 934 644, 615, 614, 646, 641, 88, 647, 88, 640, 88, 935 645, 643, 88, 651, 616, 88, 649, 650, 652, 614, 936 653, 614, 654, 88, 615, 88, 614, 88, 88, 656, 937 88, 88, 655, 88, 88, 88, 88, 88, 88, 659, 938 657, 88, 658, 660, 88, 662, 665, 666, 661, 88, 939 663, 664, 88, 667, 88, 88, 88, 88, 88, 668, 940 88, 676, 669, 671, 672, 673, 677, 88, 88, 670, 941 942 88, 88, 675, 88, 88, 904, 88, 777, 674, 712, 943 678, 88, 701, 701, 680, 679, 497, 497, 497, 497, 944 497, 497, 713, 717, 716, 681, 608, 608, 608, 608, 945 608, 608, 607, 701, 607, 701, 88, 608, 608, 608, 946 608, 608, 608, 612, 612, 612, 612, 612, 612, 606, 947 699, 699, 699, 699, 699, 699, 701, 702, 88, 702, 948 88, 88, 702, 88, 88, 714, 613, 88, 614, 715, 949 615, 614, 720, 731, 719, 88, 616, 88, 722, 702, 950 721, 702, 88, 700, 718, 88, 702, 88, 614, 88, 951 614, 88, 88, 615, 88, 614, 88, 725, 723, 724, 952 953 88, 88, 88, 729, 88, 88, 727, 732, 88, 726, 954 88, 730, 88, 728, 734, 88, 733, 737, 88, 88, 955 735, 88, 88, 879, 740, 88, 736, 88, 88, 88, 956 744, 88, 745, 738, 739, 88, 746, 748, 741, 743, 957 88, 747, 88, 88, 749, 764, 742, 699, 699, 699, 958 699, 699, 699, 612, 612, 612, 612, 612, 612, 88, 959 88, 763, 768, 613, 88, 614, 766, 615, 614, 765, 960 88, 88, 783, 88, 769, 767, 770, 88, 771, 88, 961 700, 88, 88, 772, 780, 614, 703, 614, 774, 88, 962 615, 88, 614, 88, 773, 88, 775, 88, 778, 88, 963 964 779, 88, 781, 776, 88, 88, 88, 784, 88, 88, 965 88, 791, 88, 88, 782, 787, 88, 785, 88, 904, 966 88, 793, 88, 809, 88, 794, 786, 788, 790, 88, 967 88, 88, 789, 792, 699, 699, 699, 699, 699, 699, 968 807, 808, 88, 88, 810, 812, 815, 813, 88, 817, 969 88, 88, 811, 818, 819, 88, 88, 814, 88, 821, 970 88, 816, 820, 822, 88, 88, 88, 756, 88, 88, 971 848, 88, 88, 823, 88, 843, 88, 88, 88, 845, 972 88, 846, 88, 88, 904, 849, 88, 824, 825, 826, 973 841, 88, 842, 844, 851, 840, 88, 88, 847, 88, 974 975 852, 88, 854, 88, 88, 850, 88, 88, 853, 88, 976 867, 88, 855, 866, 88, 88, 88, 871, 868, 856, 977 88, 88, 88, 873, 874, 865, 904, 88, 876, 869, 978 88, 875, 872, 88, 88, 870, 877, 882, 881, 880, 979 88, 88, 88, 88, 88, 885, 884, 886, 88, 88, 980 883, 887, 88, 88, 88, 890, 88, 892, 88, 88, 981 88, 893, 88, 888, 889, 88, 891, 88, 88, 897, 982 88, 88, 88, 904, 878, 894, 88, 896, 898, 88, 983 895, 88, 903, 88, 88, 904, 901, 904, 864, 899, 984 904, 900, 863, 902, 70, 70, 70, 70, 70, 70, 985 986 70, 70, 70, 70, 70, 70, 70, 76, 76, 76, 990 987 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 991 7 6, 79, 79, 79, 79, 79, 79, 79, 79, 79,992 79, 79, 79, 79, 87, 908, 863, 87, 908, 87,993 87, 87, 87, 87, 141, 862, 88, 88, 141, 141,994 141, 141, 141, 141, 203, 203, 203, 203, 203, 203,995 20 3, 203, 203, 203, 203, 203, 203, 208, 88, 908,996 208, 843, 208, 208, 208, 208, 208, 212, 908, 212,997 212, 842, 212, 212, 212, 212, 212, 212, 840, 212,998 999 220, 908, 838, 220, 220, 220, 220, 220, 220, 220, 1000 220, 908, 220, 243, 243, 243, 243, 243, 243, 243,1001 24 3, 243, 243, 243, 243, 243, 257, 257, 836, 257,1002 908, 834, 832, 257, 273, 88, 88, 273, 88, 273,1003 27 3, 273, 273, 273, 277, 88, 277, 88, 88, 88,1004 27 7, 279, 88, 279, 88, 88, 88, 279, 355, 88,1005 355, 908, 810, 808, 355, 357, 908, 357, 908, 805,1006 803, 357, 361, 801, 361, 88, 88, 88, 361, 363,1007 88, 363, 88, 88, 88, 363, 365, 766, 365, 763,1008 762, 760, 365, 372, 209, 372, 756, 755, 687, 372,1009 1010 374, 88, 374, 88, 88, 88, 374, 389, 88, 389, 1011 3 91, 391, 88, 391, 391, 391, 88, 391, 257, 257,1012 88, 257, 273, 88, 88, 273, 88, 273, 273, 273,1013 27 3, 273, 401, 88, 401, 88, 88, 88, 401, 403,1014 88, 403, 714, 713, 711, 403, 405, 709, 405, 707,1015 614, 702, 405, 277, 701, 277, 407, 699, 407, 697,1016 69 5, 693, 407, 279, 691, 279, 87, 689, 687, 87,1017 8 8, 87, 87, 87, 87, 87, 203, 203, 203, 203,1018 20 3, 203, 203, 203, 203, 203, 203, 203, 203, 480,1019 4 80, 480, 480, 480, 480, 480, 480, 480, 480, 480,1020 1021 480, 480, 481, 88, 481, 88, 88, 88, 481, 483, 1022 88, 483, 88, 88, 88, 483, 485, 88, 485, 88,1023 88, 88, 485, 355, 633, 355, 487, 631, 487, 629,1024 627, 625, 487, 357, 623, 357, 490, 515, 490, 621,1025 621, 610, 490, 361, 609, 361, 492, 607, 492, 495,1026 495, 605, 492, 363, 603, 363, 494, 601, 494, 599,1027 597, 595, 494, 365, 88, 365, 496, 88, 496, 88,1028 88, 88, 496, 372, 88, 372, 498, 88, 498, 88,1029 527, 525, 498, 374, 523, 374, 504, 521, 504, 519,1030 5 04, 517, 504, 389, 503, 389, 502, 389, 499, 389,1031 1032 391, 391, 497, 391, 391, 391, 368, 391, 516, 368, 1033 516, 495, 493, 491, 516, 518, 488, 518, 486, 484,1034 482, 518, 520, 88, 520, 88, 88, 409, 520, 401,1035 408, 401, 522, 406, 522, 404, 402, 274, 522, 403,1036 269, 403, 524, 268, 524, 398, 398, 256, 524, 405,1037 388, 405, 526, 388, 526, 244, 381, 375, 526, 407,1038 373, 407, 87, 371, 367, 87, 366, 87, 87, 87,1039 87, 87, 480, 480, 480, 480, 480, 480, 480, 480,1040 4 80, 480, 480, 480, 480, 594, 364, 594, 362, 358,1041 356, 594, 481, 209, 481, 596, 205, 596, 88, 281,1042 1043 280, 596, 483, 278, 483, 598, 274, 598, 269, 272, 1044 269, 598, 485, 267, 485, 600, 266, 600, 265, 244,1045 236, 600, 487, 86, 487, 602, 86, 602, 88, 209,1046 207, 602, 490, 86, 490, 604, 123, 604, 118, 88,1047 908, 604, 492, 71, 492, 494, 71, 494, 908, 908,1048 908, 494, 606, 908, 606, 908, 908, 908, 606, 496,1049 908, 496, 608, 908, 608, 908, 908, 908, 608, 498,1050 908, 498, 504, 908, 504, 908, 504, 908, 504, 391,1051 908, 391, 908, 908, 908, 391, 622, 908, 622, 908,1052 90 8, 908, 622, 516, 908, 516, 624, 908, 624, 908,1053 1054 908, 908, 624, 518, 908, 518, 626, 908, 626, 908, 1055 90 8, 908, 626, 520, 908, 520, 628, 908, 628, 908,1056 90 8, 908, 628, 522, 908, 522, 630, 908, 630, 908,1057 90 8, 908, 630, 524, 908, 524, 632, 908, 632, 908,1058 90 8, 908, 632, 526, 908, 526, 87, 908, 908, 87,1059 908, 87, 87, 87, 87, 87, 686, 686, 686, 686,1060 68 6, 686, 686, 686, 686, 686, 686, 686, 686, 688,1061 908, 688, 908, 908, 908, 688, 594, 908, 594, 690,1062 908, 690, 908, 908, 908, 690, 596, 908, 596, 692,1063 908, 692, 908, 908, 908, 692, 598, 908, 598, 694,1064 1065 908, 694, 908, 908, 908, 694, 600, 908, 600, 696, 1066 908, 696, 908, 908, 908, 696, 602, 908, 602, 698,1067 908, 698, 908, 908, 908, 698, 604, 908, 604, 700,1068 908, 700, 908, 908, 908, 700, 606, 908, 606, 87,1069 908, 87, 908, 908, 908, 87, 608, 908, 608, 504,1070 908, 504, 908, 908, 908, 504, 708, 908, 708, 908,1071 90 8, 908, 708, 622, 908, 622, 710, 908, 710, 908,1072 90 8, 908, 710, 624, 908, 624, 712, 908, 712, 908,1073 90 8, 908, 712, 626, 908, 626, 141, 908, 141, 908,1074 90 8, 908, 141, 628, 908, 628, 715, 908, 715, 630,1075 1076 908, 630, 87, 908, 908, 87, 908, 87, 87, 87, 1077 87, 87, 632, 908, 632, 686, 686, 686, 686, 686,1078 68 6, 686, 686, 686, 686, 686, 686, 686, 754, 908,1079 754, 908, 908, 908, 754, 688, 908, 688, 208, 908,1080 208, 908, 908, 908, 208, 690, 908, 690, 757, 908,1081 757, 692, 908, 692, 208, 908, 908, 208, 908, 208,1082 20 8, 208, 208, 208, 694, 908, 694, 758, 908, 758,1083 696, 908, 696, 698, 908, 698, 759, 908, 759, 700,1084 908, 700, 87, 908, 87, 761, 908, 761, 908, 908,1085 908, 761, 708, 908, 708, 273, 908, 273, 908, 908,1086 1087 908, 273, 710, 908, 710, 764, 908, 764, 712, 908, 1088 712, 141, 908, 141, 765, 908, 765, 908, 908, 908,1089 765, 87, 908, 908, 87, 908, 87, 87, 87, 87,1090 87, 799, 908, 799, 754, 908, 754, 208, 908, 208,1091 800, 908, 800, 908, 908, 908, 800, 802, 908, 802,1092 90 8, 908, 908, 802, 804, 908, 804, 908, 908, 908,1093 80 4, 806, 908, 806, 807, 908, 807, 908, 908, 908,1094 80 7, 809, 908, 809, 908, 908, 908, 809, 831, 908,1095 831, 908, 908, 908, 831, 833, 908, 833, 908, 908,1096 908, 833, 835, 908, 835, 908, 908, 908, 835, 837,1097 1098 908, 837, 908, 908, 908, 837, 839, 908, 839, 908, 1099 90 8, 908, 839, 841, 908, 841, 908, 908, 908, 841,1100 632, 908, 632, 908, 908, 908, 632, 861, 908, 861,1101 90 8, 908, 908, 861, 694, 908, 694, 908, 908, 908,1102 694, 698, 908, 698, 908, 908, 908, 698, 87, 908,1103 87, 908, 908, 908, 87, 866, 908, 866, 908, 908,1104 908, 866, 141, 908, 141, 908, 908, 908, 141, 208,1105 908, 208, 908, 908, 908, 208, 11, 908, 908, 908,1106 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1107 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1108 1109 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1110 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1111 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1112 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1113 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1114 90 8, 908, 908, 908, 908, 908, 908, 908, 908, 908,1115 90 8, 908988 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 989 79, 79, 79, 87, 904, 861, 87, 904, 87, 87, 990 87, 87, 87, 141, 860, 904, 859, 141, 141, 141, 991 141, 141, 141, 202, 202, 202, 202, 202, 202, 202, 992 202, 202, 202, 202, 202, 202, 207, 904, 858, 207, 993 88, 207, 207, 207, 207, 207, 211, 88, 211, 211, 994 88, 211, 211, 211, 211, 211, 211, 904, 211, 219, 995 839, 904, 219, 219, 219, 219, 219, 219, 219, 219, 996 997 838, 219, 242, 242, 242, 242, 242, 242, 242, 242, 998 242, 242, 242, 242, 242, 256, 256, 836, 256, 904, 999 834, 904, 256, 272, 832, 904, 272, 830, 272, 272, 1000 272, 272, 272, 276, 828, 276, 88, 88, 88, 276, 1001 278, 88, 278, 88, 88, 88, 278, 353, 88, 353, 1002 88, 88, 88, 353, 355, 88, 355, 904, 806, 804, 1003 355, 359, 904, 359, 904, 801, 799, 359, 361, 797, 1004 361, 88, 88, 88, 361, 363, 88, 363, 88, 88, 1005 88, 363, 370, 762, 370, 759, 758, 756, 370, 372, 1006 208, 372, 752, 751, 683, 372, 387, 88, 387, 389, 1007 1008 389, 88, 389, 389, 389, 88, 389, 256, 256, 88, 1009 256, 272, 88, 88, 272, 88, 272, 272, 272, 272, 1010 272, 399, 88, 399, 88, 88, 88, 399, 401, 88, 1011 401, 88, 88, 88, 401, 403, 88, 403, 710, 709, 1012 707, 403, 276, 705, 276, 405, 703, 405, 610, 698, 1013 697, 405, 278, 695, 278, 87, 693, 691, 87, 689, 1014 87, 87, 87, 87, 87, 202, 202, 202, 202, 202, 1015 202, 202, 202, 202, 202, 202, 202, 202, 477, 477, 1016 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, 1017 477, 478, 687, 478, 685, 683, 88, 478, 480, 88, 1018 1019 480, 88, 88, 88, 480, 482, 88, 482, 88, 88, 1020 88, 482, 353, 88, 353, 484, 88, 484, 88, 629, 1021 627, 484, 355, 625, 355, 487, 623, 487, 621, 619, 1022 512, 487, 359, 617, 359, 489, 617, 489, 606, 605, 1023 603, 489, 361, 492, 361, 491, 492, 491, 601, 599, 1024 597, 491, 363, 595, 363, 493, 593, 493, 591, 88, 1025 88, 493, 370, 88, 370, 495, 88, 495, 88, 88, 1026 88, 495, 372, 88, 372, 501, 524, 501, 522, 501, 1027 520, 501, 387, 518, 387, 516, 387, 514, 387, 389, 1028 389, 500, 389, 389, 389, 499, 389, 513, 496, 513, 1029 1030 494, 366, 366, 513, 515, 492, 515, 490, 488, 485, 1031 515, 517, 483, 517, 481, 479, 88, 517, 399, 88, 1032 399, 519, 88, 519, 407, 406, 404, 519, 401, 402, 1033 401, 521, 400, 521, 273, 268, 267, 521, 403, 396, 1034 403, 523, 396, 523, 255, 386, 386, 523, 405, 243, 1035 405, 87, 379, 373, 87, 371, 87, 87, 87, 87, 1036 87, 477, 477, 477, 477, 477, 477, 477, 477, 477, 1037 477, 477, 477, 477, 590, 369, 590, 365, 364, 362, 1038 590, 478, 360, 478, 592, 356, 592, 354, 208, 204, 1039 592, 480, 88, 480, 594, 280, 594, 279, 277, 273, 1040 1041 594, 482, 268, 482, 596, 271, 596, 268, 266, 265, 1042 596, 484, 264, 484, 598, 243, 598, 235, 86, 86, 1043 598, 487, 88, 487, 600, 208, 600, 206, 86, 123, 1044 600, 489, 118, 489, 491, 88, 491, 904, 71, 71, 1045 491, 602, 904, 602, 904, 904, 904, 602, 493, 904, 1046 493, 604, 904, 604, 904, 904, 904, 604, 495, 904, 1047 495, 501, 904, 501, 904, 501, 904, 501, 389, 904, 1048 389, 904, 904, 904, 389, 618, 904, 618, 904, 904, 1049 904, 618, 513, 904, 513, 620, 904, 620, 904, 904, 1050 904, 620, 515, 904, 515, 622, 904, 622, 904, 904, 1051 1052 904, 622, 517, 904, 517, 624, 904, 624, 904, 904, 1053 904, 624, 519, 904, 519, 626, 904, 626, 904, 904, 1054 904, 626, 521, 904, 521, 628, 904, 628, 904, 904, 1055 904, 628, 523, 904, 523, 87, 904, 904, 87, 904, 1056 87, 87, 87, 87, 87, 682, 682, 682, 682, 682, 1057 682, 682, 682, 682, 682, 682, 682, 682, 684, 904, 1058 684, 904, 904, 904, 684, 590, 904, 590, 686, 904, 1059 686, 904, 904, 904, 686, 592, 904, 592, 688, 904, 1060 688, 904, 904, 904, 688, 594, 904, 594, 690, 904, 1061 690, 904, 904, 904, 690, 596, 904, 596, 692, 904, 1062 1063 692, 904, 904, 904, 692, 598, 904, 598, 694, 904, 1064 694, 904, 904, 904, 694, 600, 904, 600, 696, 904, 1065 696, 904, 904, 904, 696, 602, 904, 602, 87, 904, 1066 87, 904, 904, 904, 87, 604, 904, 604, 501, 904, 1067 501, 904, 904, 904, 501, 704, 904, 704, 904, 904, 1068 904, 704, 618, 904, 618, 706, 904, 706, 904, 904, 1069 904, 706, 620, 904, 620, 708, 904, 708, 904, 904, 1070 904, 708, 622, 904, 622, 141, 904, 141, 904, 904, 1071 904, 141, 624, 904, 624, 711, 904, 711, 626, 904, 1072 626, 87, 904, 904, 87, 904, 87, 87, 87, 87, 1073 1074 87, 628, 904, 628, 682, 682, 682, 682, 682, 682, 1075 682, 682, 682, 682, 682, 682, 682, 750, 904, 750, 1076 904, 904, 904, 750, 684, 904, 684, 207, 904, 207, 1077 904, 904, 904, 207, 686, 904, 686, 753, 904, 753, 1078 688, 904, 688, 207, 904, 904, 207, 904, 207, 207, 1079 207, 207, 207, 690, 904, 690, 754, 904, 754, 692, 1080 904, 692, 694, 904, 694, 755, 904, 755, 696, 904, 1081 696, 87, 904, 87, 757, 904, 757, 904, 904, 904, 1082 757, 704, 904, 704, 272, 904, 272, 904, 904, 904, 1083 272, 706, 904, 706, 760, 904, 760, 708, 904, 708, 1084 1085 141, 904, 141, 761, 904, 761, 904, 904, 904, 761, 1086 87, 904, 904, 87, 904, 87, 87, 87, 87, 87, 1087 795, 904, 795, 750, 904, 750, 207, 904, 207, 796, 1088 904, 796, 904, 904, 904, 796, 798, 904, 798, 904, 1089 904, 904, 798, 800, 904, 800, 904, 904, 904, 800, 1090 802, 904, 802, 803, 904, 803, 904, 904, 904, 803, 1091 805, 904, 805, 904, 904, 904, 805, 827, 904, 827, 1092 904, 904, 904, 827, 829, 904, 829, 904, 904, 904, 1093 829, 831, 904, 831, 904, 904, 904, 831, 833, 904, 1094 833, 904, 904, 904, 833, 835, 904, 835, 904, 904, 1095 1096 904, 835, 837, 904, 837, 904, 904, 904, 837, 628, 1097 904, 628, 904, 904, 904, 628, 857, 904, 857, 904, 1098 904, 904, 857, 690, 904, 690, 904, 904, 904, 690, 1099 694, 904, 694, 904, 904, 904, 694, 87, 904, 87, 1100 904, 904, 904, 87, 862, 904, 862, 904, 904, 904, 1101 862, 141, 904, 141, 904, 904, 904, 141, 207, 904, 1102 207, 904, 904, 904, 207, 11, 904, 904, 904, 904, 1103 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1104 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1105 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1106 1107 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1108 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1109 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1110 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1111 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1112 904 1116 1113 } ; 1117 1114 1118 static yyconst flex_int16_t yy_chk[29 63] =1115 static yyconst flex_int16_t yy_chk[2952] = 1119 1116 { 0, 1120 1117 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … … 1137 1134 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1138 1135 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 1139 8, 9, 10, 37, 37, 20, 39, 9, 10, 90 7,1136 8, 9, 10, 37, 37, 20, 39, 9, 10, 903, 1140 1137 7, 8, 13, 13, 13, 13, 13, 13, 15, 15, 1141 1138 … … 1145 1142 8, 9, 10, 40, 42, 29, 30, 47, 30, 30, 1146 1143 30, 30, 30, 30, 35, 57, 35, 35, 44, 127, 1147 44, 127, 110, 116, 57, 30, 65, 54 7, 47, 30,1144 44, 127, 110, 116, 57, 30, 65, 544, 47, 30, 1148 1145 47, 45, 45, 45, 49, 30, 30, 45, 45, 49, 1149 1146 45, 30, 40, 45, 45, 40, 49, 30, 45, 63, 1150 62, 45, 49, 30, 74, 90 6, 547, 53, 63, 51,1147 62, 45, 49, 30, 74, 902, 544, 53, 63, 51, 1151 1148 61, 30, 62, 55, 30, 31, 109, 31, 31, 31, 1152 1149 1153 1150 31, 31, 31, 50, 51, 53, 51, 65, 61, 54, 1154 1151 74, 55, 50, 88, 31, 51, 50, 55, 31, 54, 1155 109, 50, 52, 143, 31, 50, 54, 52, 112, 154, 1156 31, 56, 111, 898, 152, 52, 31, 52, 154, 88, 1157 52, 108, 31, 128, 52, 128, 112, 108, 56, 143, 1158 31, 38, 152, 56, 112, 38, 38, 58, 38, 60, 1159 38, 38, 111, 38, 60, 38, 59, 111, 115, 58, 1160 58, 117, 158, 108, 38, 38, 38, 60, 59, 58, 1161 131, 130, 58, 130, 158, 114, 59, 132, 59, 117, 1162 111, 114, 115, 59, 131, 38, 131, 117, 38, 132, 1163 1164 133, 132, 133, 60, 173, 153, 60, 68, 68, 68, 1165 68, 68, 68, 69, 69, 68, 165, 114, 69, 173, 1166 60, 134, 134, 153, 134, 38, 38, 81, 81, 81, 1167 81, 81, 81, 165, 69, 69, 69, 69, 69, 69, 1168 78, 78, 135, 155, 135, 78, 146, 78, 136, 136, 1169 136, 146, 78, 83, 83, 83, 83, 83, 83, 155, 1170 897, 78, 78, 78, 78, 84, 84, 84, 84, 84, 1171 84, 156, 78, 104, 104, 104, 104, 104, 104, 105, 1172 105, 105, 105, 138, 140, 138, 140, 151, 78, 156, 1173 146, 78, 306, 894, 157, 162, 78, 78, 161, 306, 1174 1175 78, 78, 151, 160, 162, 176, 168, 105, 78, 151, 1176 169, 78, 105, 78, 78, 78, 157, 78, 86, 160, 1177 161, 164, 86, 86, 166, 176, 164, 86, 86, 168, 1178 86, 163, 86, 167, 166, 105, 170, 169, 175, 164, 1179 893, 86, 86, 86, 106, 172, 106, 106, 106, 106, 1180 106, 106, 163, 163, 167, 171, 175, 170, 174, 177, 1181 171, 178, 86, 106, 107, 86, 107, 172, 183, 107, 1182 107, 107, 107, 107, 107, 174, 182, 183, 171, 106, 1183 184, 182, 186, 178, 181, 106, 177, 222, 891, 222, 1184 192, 180, 187, 86, 100, 100, 100, 100, 100, 100, 1185 1186 186, 181, 107, 187, 188, 189, 180, 184, 185, 188, 1187 100, 100, 100, 180, 100, 100, 190, 192, 189, 185, 1188 187, 194, 732, 198, 188, 195, 191, 100, 193, 185, 1189 185, 191, 100, 100, 100, 159, 190, 100, 195, 100, 1190 159, 159, 159, 198, 159, 159, 195, 193, 159, 196, 1191 159, 732, 209, 191, 197, 159, 159, 159, 223, 159, 1192 223, 224, 196, 224, 196, 194, 286, 197, 194, 201, 1193 201, 201, 201, 201, 201, 202, 202, 201, 209, 225, 1194 202, 204, 204, 286, 213, 213, 204, 206, 206, 213, 1195 890, 883, 206, 225, 206, 225, 202, 202, 202, 202, 1196 1197 202, 202, 204, 204, 204, 204, 204, 204, 206, 206, 1198 206, 206, 206, 206, 216, 216, 216, 216, 226, 227, 1199 247, 227, 228, 228, 229, 228, 229, 230, 230, 230, 1200 226, 232, 226, 232, 233, 240, 233, 238, 238, 241, 1201 270, 241, 270, 239, 241, 239, 282, 216, 239, 239, 1202 239, 239, 239, 239, 271, 247, 271, 882, 240, 282, 1203 238, 241, 246, 241, 246, 246, 246, 246, 241, 245, 1204 245, 245, 245, 245, 245, 248, 248, 248, 248, 248, 1205 248, 239, 249, 249, 249, 249, 249, 249, 283, 284, 1206 288, 287, 248, 285, 289, 252, 287, 246, 295, 289, 1207 1208 297, 326, 245, 260, 274, 297, 283, 284, 248, 285, 1209 288, 881, 326, 295, 248, 250, 250, 250, 250, 250, 1210 250, 252, 257, 259, 259, 259, 259, 259, 259, 260, 1211 274, 250, 251, 250, 251, 250, 250, 251, 251, 251, 1212 251, 251, 251, 298, 292, 257, 880, 257, 250, 294, 1213 290, 257, 298, 250, 293, 250, 259, 257, 250, 291, 1214 250, 264, 264, 264, 264, 264, 264, 292, 296, 257, 1215 290, 300, 293, 257, 291, 294, 299, 257, 301, 303, 1216 291, 291, 304, 305, 296, 296, 307, 304, 309, 299, 1217 308, 879, 305, 313, 264, 310, 301, 303, 300, 311, 1218 1219 310, 312, 314, 318, 311, 316, 307, 312, 308, 309, 1220 309, 314, 313, 315, 317, 319, 322, 320, 318, 315, 1221 319, 316, 320, 317, 321, 323, 324, 327, 328, 321, 1222 329, 328, 330, 331, 332, 322, 333, 334, 335, 324, 1223 336, 337, 327, 323, 338, 330, 321, 335, 340, 329, 1224 339, 342, 344, 345, 334, 331, 333, 332, 343, 346, 1225 349, 340, 336, 350, 337, 347, 338, 343, 339, 348, 1226 342, 345, 346, 347, 348, 349, 875, 351, 351, 352, 1227 413, 350, 351, 410, 351, 352, 359, 359, 359, 359, 1228 360, 360, 360, 360, 410, 369, 344, 369, 370, 413, 1229 1230 370, 377, 377, 377, 377, 377, 377, 379, 389, 379, 1231 417, 394, 379, 379, 379, 379, 379, 379, 389, 359, 1232 378, 378, 378, 378, 378, 378, 381, 381, 381, 381, 1233 381, 381, 417, 411, 389, 394, 378, 412, 378, 415, 1234 378, 378, 384, 384, 384, 384, 384, 384, 392, 411, 1235 415, 390, 412, 378, 392, 396, 578, 421, 378, 381, 1236 378, 390, 420, 378, 578, 378, 382, 382, 382, 382, 1237 382, 382, 391, 396, 424, 384, 414, 390, 420, 421, 1238 392, 396, 382, 382, 382, 414, 382, 382, 385, 385, 1239 385, 385, 385, 385, 428, 391, 424, 391, 871, 382, 1240 1241 428, 391, 868, 395, 382, 382, 382, 391, 393, 382, 1242 393, 382, 419, 393, 393, 393, 393, 393, 393, 391, 1243 416, 385, 418, 391, 422, 419, 395, 391, 395, 416, 1244 425, 418, 395, 430, 426, 423, 429, 422, 395, 426, 1245 427, 431, 434, 439, 430, 438, 393, 436, 425, 432, 1246 395, 423, 423, 441, 395, 427, 434, 429, 395, 436, 1247 431, 440, 427, 442, 432, 439, 438, 443, 444, 442, 1248 446, 448, 449, 450, 440, 451, 441, 444, 452, 453, 1249 454, 456, 443, 458, 461, 446, 459, 460, 450, 454, 1250 462, 448, 463, 452, 449, 464, 460, 451, 456, 453, 1251 1252 465, 466, 467, 470, 468, 461, 458, 469, 459, 465, 1253 462, 468, 463, 471, 469, 467, 472, 464, 473, 466, 1254 474, 475, 477, 480, 478, 472, 473, 479, 470, 480, 1255 479, 507, 475, 478, 508, 471, 473, 474, 489, 489, 1256 489, 489, 528, 531, 477, 500, 500, 500, 500, 500, 1257 500, 502, 502, 502, 502, 502, 502, 507, 531, 528, 1258 508, 500, 529, 500, 533, 500, 500, 503, 503, 503, 1259 503, 503, 503, 867, 866, 529, 504, 533, 500, 532, 1260 542, 506, 534, 500, 502, 500, 504, 505, 500, 505, 1261 500, 506, 505, 505, 505, 505, 505, 505, 536, 532, 1262 1263 503, 542, 504, 536, 534, 535, 537, 506, 510, 510, 1264 510, 510, 510, 510, 512, 865, 512, 537, 535, 512, 1265 512, 512, 512, 512, 512, 505, 511, 511, 511, 511, 1266 511, 511, 538, 539, 540, 538, 541, 546, 544, 543, 1267 545, 549, 511, 544, 511, 548, 511, 511, 543, 540, 1268 546, 545, 551, 539, 548, 541, 550, 552, 555, 511, 1269 557, 551, 552, 549, 511, 558, 511, 555, 554, 511, 1270 559, 511, 560, 550, 554, 562, 563, 557, 564, 565, 1271 558, 560, 567, 568, 562, 559, 570, 571, 568, 574, 1272 564, 575, 576, 563, 565, 570, 571, 567, 579, 580, 1273 1274 581, 582, 589, 586, 575, 587, 580, 590, 579, 576, 1275 583, 574, 586, 582, 592, 587, 583, 864, 863, 589, 1276 590, 638, 581, 610, 610, 610, 610, 610, 610, 611, 1277 611, 611, 611, 611, 611, 613, 592, 613, 638, 637, 1278 613, 613, 613, 613, 613, 613, 616, 616, 616, 616, 1279 616, 616, 637, 617, 617, 642, 610, 612, 612, 612, 1280 612, 612, 612, 618, 634, 619, 862, 619, 639, 634, 1281 619, 636, 642, 612, 635, 612, 617, 612, 612, 616, 1282 636, 635, 634, 645, 646, 640, 618, 619, 641, 619, 1283 612, 639, 640, 644, 619, 612, 641, 612, 643, 646, 1284 1285 612, 643, 612, 647, 648, 645, 644, 649, 650, 651, 1286 652, 650, 653, 654, 655, 657, 656, 660, 667, 658, 1287 661, 648, 662, 655, 666, 647, 651, 653, 658, 649, 1288 669, 662, 672, 654, 656, 684, 673, 657, 652, 680, 1289 660, 672, 661, 673, 666, 667, 681, 669, 680, 683, 1290 684, 716, 719, 722, 723, 861, 681, 723, 683, 703, 1291 703, 703, 703, 703, 703, 707, 707, 707, 707, 707, 1292 707, 717, 716, 722, 856, 703, 720, 703, 719, 703, 1293 703, 717, 721, 720, 727, 724, 729, 721, 724, 725, 1294 727, 730, 703, 728, 730, 729, 731, 703, 707, 703, 1295 1296 733, 734, 703, 733, 703, 735, 728, 725, 736, 737, 1297 734, 736, 738, 739, 740, 741, 742, 731, 748, 745, 1298 738, 749, 737, 739, 750, 742, 752, 740, 773, 774, 1299 753, 735, 771, 773, 752, 776, 741, 745, 748, 753, 1300 772, 778, 745, 749, 774, 750, 760, 760, 760, 760, 1301 760, 760, 771, 775, 777, 780, 779, 772, 776, 779, 1302 781, 783, 785, 775, 783, 785, 786, 778, 780, 787, 1303 789, 777, 787, 786, 788, 790, 792, 788, 796, 760, 1304 811, 813, 814, 815, 816, 789, 815, 817, 781, 818, 1305 817, 820, 818, 821, 822, 824, 855, 822, 790, 792, 1306 1307 814, 796, 813, 827, 828, 825, 816, 811, 825, 820, 1308 826, 829, 827, 826, 830, 845, 846, 824, 847, 821, 1309 828, 847, 829, 846, 848, 849, 850, 851, 854, 850, 1310 830, 854, 857, 848, 884, 857, 845, 858, 859, 860, 1311 870, 853, 869, 849, 851, 870, 858, 873, 860, 849, 1312 859, 869, 872, 874, 884, 872, 876, 873, 874, 876, 1313 877, 878, 885, 877, 878, 886, 887, 888, 886, 889, 1314 888, 892, 889, 895, 896, 899, 887, 885, 900, 901, 1315 903, 902, 904, 852, 899, 905, 844, 843, 842, 896, 1316 841, 900, 840, 892, 895, 905, 839, 838, 903, 837, 1317 1318 836, 901, 902, 835, 904, 909, 909, 909, 909, 909, 1319 909, 909, 909, 909, 909, 909, 909, 909, 910, 910, 1320 910, 910, 910, 910, 910, 910, 910, 910, 910, 910, 1321 910, 911, 911, 911, 911, 911, 911, 911, 911, 911, 1322 911, 911, 911, 911, 912, 834, 833, 912, 832, 912, 1323 912, 912, 912, 912, 913, 831, 823, 819, 913, 913, 1324 913, 913, 913, 913, 914, 914, 914, 914, 914, 914, 1325 914, 914, 914, 914, 914, 914, 914, 915, 812, 810, 1326 915, 809, 915, 915, 915, 915, 915, 916, 808, 916, 1327 916, 807, 916, 916, 916, 916, 916, 916, 806, 916, 1328 1329 917, 805, 804, 917, 917, 917, 917, 917, 917, 917, 1330 917, 803, 917, 918, 918, 918, 918, 918, 918, 918, 1331 918, 918, 918, 918, 918, 918, 919, 919, 802, 919, 1332 801, 800, 799, 919, 920, 798, 797, 920, 795, 920, 1333 920, 920, 920, 920, 921, 794, 921, 793, 791, 784, 1334 921, 922, 782, 922, 770, 769, 768, 922, 923, 767, 1335 923, 766, 765, 764, 923, 924, 763, 924, 762, 759, 1336 758, 924, 925, 757, 925, 751, 747, 746, 925, 926, 1337 744, 926, 743, 726, 718, 926, 927, 715, 927, 710, 1338 708, 704, 927, 928, 694, 928, 690, 688, 686, 928, 1339 1340 929, 685, 929, 682, 679, 678, 929, 930, 677, 930, 1341 931, 931, 676, 931, 931, 931, 675, 931, 932, 932, 1342 674, 932, 933, 671, 670, 933, 668, 933, 933, 933, 1343 933, 933, 934, 665, 934, 664, 663, 659, 934, 935, 1344 632, 935, 628, 626, 624, 935, 936, 622, 936, 620, 1345 614, 608, 936, 937, 606, 937, 938, 604, 938, 602, 1346 600, 598, 938, 939, 596, 939, 940, 594, 593, 940, 1347 591, 940, 940, 940, 940, 940, 941, 941, 941, 941, 1348 941, 941, 941, 941, 941, 941, 941, 941, 941, 942, 1349 942, 942, 942, 942, 942, 942, 942, 942, 942, 942, 1350 1351 942, 942, 943, 588, 943, 585, 584, 577, 943, 944, 1352 573, 944, 572, 569, 566, 944, 945, 561, 945, 556, 1353 553, 530, 945, 946, 526, 946, 947, 524, 947, 522, 1354 520, 518, 947, 948, 516, 948, 949, 515, 949, 514, 1355 513, 501, 949, 950, 498, 950, 951, 496, 951, 495, 1356 494, 492, 951, 952, 490, 952, 953, 487, 953, 485, 1357 483, 481, 953, 954, 476, 954, 955, 457, 955, 455, 1358 447, 445, 955, 956, 437, 956, 957, 435, 957, 433, 1359 407, 405, 957, 958, 403, 958, 959, 401, 959, 400, 1360 959, 399, 959, 960, 386, 960, 383, 960, 374, 960, 1361 1362 961, 961, 372, 961, 961, 961, 371, 961, 962, 367, 1363 962, 365, 363, 361, 962, 963, 357, 963, 355, 354, 1364 353, 963, 964, 341, 964, 325, 302, 281, 964, 965, 1365 279, 965, 966, 277, 966, 276, 275, 273, 966, 967, 1366 272, 967, 968, 267, 968, 263, 262, 258, 968, 969, 1367 255, 969, 970, 254, 970, 243, 242, 235, 970, 971, 1368 234, 971, 972, 231, 221, 972, 219, 972, 972, 972, 1369 972, 972, 973, 973, 973, 973, 973, 973, 973, 973, 1370 973, 973, 973, 973, 973, 974, 218, 974, 217, 211, 1371 210, 974, 975, 208, 975, 976, 203, 976, 179, 150, 1372 1373 148, 976, 977, 147, 977, 978, 141, 978, 139, 137, 1374 129, 978, 979, 126, 979, 980, 125, 980, 121, 102, 1375 99, 980, 981, 96, 981, 982, 94, 982, 87, 73, 1376 71, 982, 983, 67, 983, 984, 36, 984, 33, 18, 1377 11, 984, 985, 4, 985, 986, 3, 986, 0, 0, 1378 0, 986, 987, 0, 987, 0, 0, 0, 987, 988, 1379 0, 988, 989, 0, 989, 0, 0, 0, 989, 990, 1380 0, 990, 991, 0, 991, 0, 991, 0, 991, 992, 1381 0, 992, 0, 0, 0, 992, 993, 0, 993, 0, 1382 0, 0, 993, 994, 0, 994, 995, 0, 995, 0, 1383 1384 0, 0, 995, 996, 0, 996, 997, 0, 997, 0, 1385 0, 0, 997, 998, 0, 998, 999, 0, 999, 0, 1386 0, 0, 999, 1000, 0, 1000, 1001, 0, 1001, 0, 1387 0, 0, 1001, 1002, 0, 1002, 1003, 0, 1003, 0, 1388 0, 0, 1003, 1004, 0, 1004, 1005, 0, 0, 1005, 1389 0, 1005, 1005, 1005, 1005, 1005, 1006, 1006, 1006, 1006, 1390 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007, 1391 0, 1007, 0, 0, 0, 1007, 1008, 0, 1008, 1009, 1392 0, 1009, 0, 0, 0, 1009, 1010, 0, 1010, 1011, 1393 0, 1011, 0, 0, 0, 1011, 1012, 0, 1012, 1013, 1394 1395 0, 1013, 0, 0, 0, 1013, 1014, 0, 1014, 1015, 1396 0, 1015, 0, 0, 0, 1015, 1016, 0, 1016, 1017, 1397 0, 1017, 0, 0, 0, 1017, 1018, 0, 1018, 1019, 1398 0, 1019, 0, 0, 0, 1019, 1020, 0, 1020, 1021, 1399 0, 1021, 0, 0, 0, 1021, 1022, 0, 1022, 1023, 1400 0, 1023, 0, 0, 0, 1023, 1024, 0, 1024, 0, 1401 0, 0, 1024, 1025, 0, 1025, 1026, 0, 1026, 0, 1402 0, 0, 1026, 1027, 0, 1027, 1028, 0, 1028, 0, 1403 0, 0, 1028, 1029, 0, 1029, 1030, 0, 1030, 0, 1404 0, 0, 1030, 1031, 0, 1031, 1032, 0, 1032, 1033, 1405 1406 0, 1033, 1034, 0, 0, 1034, 0, 1034, 1034, 1034, 1407 1034, 1034, 1035, 0, 1035, 1036, 1036, 1036, 1036, 1036, 1408 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 0, 1409 1037, 0, 0, 0, 1037, 1038, 0, 1038, 1039, 0, 1410 1039, 0, 0, 0, 1039, 1040, 0, 1040, 1041, 0, 1411 1041, 1042, 0, 1042, 1043, 0, 0, 1043, 0, 1043, 1412 1043, 1043, 1043, 1043, 1044, 0, 1044, 1045, 0, 1045, 1413 1046, 0, 1046, 1047, 0, 1047, 1048, 0, 1048, 1049, 1414 0, 1049, 1050, 0, 1050, 1051, 0, 1051, 0, 0, 1415 0, 1051, 1052, 0, 1052, 1053, 0, 1053, 0, 0, 1416 1417 0, 1053, 1054, 0, 1054, 1055, 0, 1055, 1056, 0, 1418 1056, 1057, 0, 1057, 1058, 0, 1058, 0, 0, 0, 1419 1058, 1059, 0, 0, 1059, 0, 1059, 1059, 1059, 1059, 1420 1059, 1060, 0, 1060, 1061, 0, 1061, 1062, 0, 1062, 1421 1063, 0, 1063, 0, 0, 0, 1063, 1064, 0, 1064, 1422 0, 0, 0, 1064, 1065, 0, 1065, 0, 0, 0, 1423 1065, 1066, 0, 1066, 1067, 0, 1067, 0, 0, 0, 1424 1067, 1068, 0, 1068, 0, 0, 0, 1068, 1069, 0, 1425 1069, 0, 0, 0, 1069, 1070, 0, 1070, 0, 0, 1426 0, 1070, 1071, 0, 1071, 0, 0, 0, 1071, 1072, 1427 1428 0, 1072, 0, 0, 0, 1072, 1073, 0, 1073, 0, 1429 0, 0, 1073, 1074, 0, 1074, 0, 0, 0, 1074, 1430 1075, 0, 1075, 0, 0, 0, 1075, 1076, 0, 1076, 1431 0, 0, 0, 1076, 1077, 0, 1077, 0, 0, 0, 1432 1077, 1078, 0, 1078, 0, 0, 0, 1078, 1079, 0, 1433 1079, 0, 0, 0, 1079, 1080, 0, 1080, 0, 0, 1434 0, 1080, 1081, 0, 1081, 0, 0, 0, 1081, 1082, 1435 0, 1082, 0, 0, 0, 1082, 908, 908, 908, 908, 1436 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1437 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1438 1439 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1440 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1441 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1442 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1443 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1444 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, 1445 908, 908 1152 109, 50, 52, 115, 31, 50, 54, 52, 182, 146, 1153 31, 56, 108, 182, 146, 52, 31, 52, 108, 88, 1154 52, 60, 31, 128, 52, 128, 60, 115, 56, 152, 1155 31, 38, 894, 56, 112, 38, 38, 58, 38, 60, 1156 38, 38, 114, 38, 108, 38, 59, 152, 114, 58, 1157 58, 117, 112, 146, 38, 38, 38, 189, 59, 58, 1158 112, 130, 58, 130, 143, 60, 59, 132, 60, 117, 1159 189, 69, 69, 59, 114, 38, 69, 117, 38, 132, 1160 1161 111, 132, 60, 68, 68, 68, 68, 68, 68, 893, 1162 143, 68, 69, 69, 69, 69, 69, 69, 81, 81, 1163 81, 81, 81, 81, 154, 38, 38, 78, 78, 133, 1164 111, 133, 78, 154, 78, 111, 135, 162, 135, 78, 1165 83, 83, 83, 83, 83, 83, 162, 890, 78, 78, 1166 78, 78, 84, 84, 84, 84, 84, 84, 111, 78, 1167 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 1168 134, 134, 138, 134, 138, 78, 131, 155, 78, 136, 1169 136, 136, 173, 78, 78, 153, 157, 78, 78, 140, 1170 131, 140, 131, 155, 105, 78, 151, 173, 78, 105, 1171 1172 78, 78, 78, 153, 78, 86, 156, 160, 157, 86, 1173 86, 151, 183, 158, 86, 86, 168, 86, 151, 86, 1174 161, 183, 105, 160, 156, 158, 163, 164, 86, 86, 1175 86, 106, 164, 106, 106, 106, 106, 106, 106, 168, 1176 169, 167, 161, 170, 166, 164, 165, 163, 163, 86, 1177 106, 107, 86, 107, 166, 172, 107, 107, 107, 107, 1178 107, 107, 167, 165, 170, 171, 106, 169, 177, 175, 1179 171, 176, 106, 174, 178, 181, 184, 172, 180, 889, 1180 86, 100, 100, 100, 100, 100, 100, 175, 171, 107, 1181 174, 176, 181, 180, 185, 177, 178, 100, 100, 100, 1182 1183 180, 100, 100, 184, 192, 185, 187, 186, 193, 221, 1184 190, 221, 887, 188, 100, 185, 185, 187, 188, 100, 1185 100, 100, 159, 192, 100, 186, 100, 159, 159, 159, 1186 190, 159, 159, 188, 187, 159, 191, 159, 194, 208, 1187 196, 191, 159, 159, 159, 195, 159, 197, 251, 212, 1188 212, 194, 193, 196, 212, 193, 201, 201, 195, 194, 1189 195, 201, 222, 191, 222, 208, 259, 197, 200, 200, 1190 200, 200, 200, 200, 251, 287, 200, 201, 201, 201, 1191 201, 201, 201, 203, 203, 223, 246, 223, 203, 205, 1192 205, 226, 259, 226, 205, 287, 205, 215, 215, 215, 1193 1194 215, 228, 224, 228, 203, 203, 203, 203, 203, 203, 1195 205, 205, 205, 205, 205, 205, 224, 225, 224, 227, 1196 227, 246, 227, 229, 229, 229, 231, 239, 231, 225, 1197 215, 225, 232, 291, 232, 237, 237, 238, 269, 238, 1198 269, 284, 238, 238, 238, 238, 238, 238, 273, 240, 1199 239, 240, 432, 270, 240, 270, 291, 284, 237, 244, 1200 244, 244, 244, 244, 244, 245, 432, 245, 245, 245, 1201 245, 240, 286, 240, 273, 238, 282, 286, 240, 247, 1202 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 1203 248, 283, 244, 285, 282, 281, 247, 250, 294, 250, 1204 1205 245, 293, 250, 250, 250, 250, 250, 250, 281, 283, 1206 285, 288, 247, 294, 289, 331, 288, 297, 247, 249, 1207 249, 249, 249, 249, 249, 256, 297, 293, 258, 258, 1208 258, 258, 258, 258, 289, 249, 298, 249, 331, 249, 1209 249, 263, 263, 263, 263, 263, 263, 292, 256, 298, 1210 256, 295, 249, 296, 256, 299, 290, 249, 296, 249, 1211 256, 258, 249, 300, 249, 292, 302, 295, 295, 306, 1212 303, 290, 256, 307, 263, 303, 256, 290, 290, 304, 1213 256, 300, 299, 305, 302, 308, 312, 309, 304, 306, 1214 305, 307, 309, 310, 311, 313, 314, 315, 310, 316, 1215 1216 311, 317, 314, 321, 313, 312, 308, 308, 316, 318, 1217 319, 322, 320, 315, 318, 319, 317, 320, 323, 325, 1218 326, 327, 321, 328, 327, 329, 330, 332, 333, 322, 1219 325, 323, 334, 335, 320, 326, 336, 339, 329, 337, 1220 338, 334, 328, 341, 342, 333, 343, 332, 330, 344, 1221 339, 346, 341, 347, 348, 335, 346, 345, 338, 336, 1222 387, 337, 344, 350, 343, 345, 349, 349, 347, 350, 1223 387, 349, 348, 349, 357, 357, 357, 357, 358, 358, 1224 358, 358, 367, 368, 367, 368, 387, 408, 342, 375, 1225 375, 375, 375, 375, 375, 377, 388, 377, 408, 392, 1226 1227 377, 377, 377, 377, 377, 377, 388, 357, 376, 376, 1228 376, 376, 376, 376, 379, 379, 379, 379, 379, 379, 1229 411, 409, 388, 392, 376, 410, 376, 413, 376, 376, 1230 382, 382, 382, 382, 382, 382, 390, 409, 413, 411, 1231 410, 376, 390, 394, 415, 419, 376, 379, 376, 417, 1232 886, 376, 420, 376, 380, 380, 380, 380, 380, 380, 1233 389, 394, 417, 382, 412, 420, 415, 419, 390, 394, 1234 380, 380, 380, 412, 380, 380, 383, 383, 383, 383, 1235 383, 383, 426, 389, 418, 389, 879, 380, 426, 389, 1236 878, 393, 380, 380, 380, 389, 391, 380, 391, 380, 1237 1238 418, 391, 391, 391, 391, 391, 391, 389, 414, 383, 1239 416, 389, 421, 422, 393, 389, 393, 414, 423, 416, 1240 393, 428, 424, 427, 429, 425, 393, 424, 421, 421, 1241 430, 436, 428, 437, 391, 422, 423, 434, 393, 439, 1242 425, 438, 393, 429, 427, 430, 393, 425, 441, 434, 1243 440, 442, 436, 444, 438, 437, 440, 446, 447, 448, 1244 442, 449, 439, 441, 450, 451, 452, 454, 444, 456, 1245 459, 457, 458, 462, 448, 452, 460, 446, 461, 450, 1246 447, 458, 464, 449, 454, 451, 465, 466, 463, 468, 1247 469, 459, 456, 457, 466, 462, 460, 463, 461, 465, 1248 1249 464, 467, 470, 474, 471, 472, 475, 477, 467, 877, 1250 470, 526, 469, 477, 468, 475, 472, 504, 505, 476, 1251 470, 471, 476, 876, 526, 474, 486, 486, 486, 486, 1252 497, 497, 497, 497, 497, 497, 499, 499, 499, 499, 1253 499, 499, 525, 504, 505, 528, 497, 529, 497, 530, 1254 497, 497, 500, 500, 500, 500, 500, 500, 875, 525, 1255 528, 501, 530, 497, 531, 538, 503, 529, 497, 499, 1256 497, 501, 502, 497, 502, 497, 503, 502, 502, 502, 1257 502, 502, 502, 533, 538, 500, 531, 501, 533, 532, 1258 871, 867, 503, 507, 507, 507, 507, 507, 507, 509, 1259 1260 535, 509, 532, 535, 509, 509, 509, 509, 509, 509, 1261 502, 508, 508, 508, 508, 508, 508, 534, 536, 537, 1262 539, 540, 542, 543, 864, 546, 547, 508, 534, 508, 1263 540, 508, 508, 542, 537, 541, 543, 545, 536, 548, 1264 541, 539, 554, 547, 508, 549, 545, 546, 548, 508, 1265 549, 508, 551, 552, 508, 555, 508, 556, 551, 554, 1266 557, 560, 552, 561, 559, 562, 564, 571, 567, 557, 1267 555, 565, 556, 559, 568, 561, 565, 567, 560, 572, 1268 562, 564, 573, 568, 576, 575, 578, 582, 577, 571, 1269 579, 580, 572, 575, 576, 577, 582, 580, 585, 573, 1270 1271 583, 586, 579, 588, 630, 863, 634, 728, 578, 630, 1272 583, 633, 613, 613, 586, 585, 606, 606, 606, 606, 1273 606, 606, 630, 634, 633, 588, 607, 607, 607, 607, 1274 607, 607, 609, 614, 609, 613, 728, 609, 609, 609, 1275 609, 609, 609, 612, 612, 612, 612, 612, 612, 606, 1276 608, 608, 608, 608, 608, 608, 614, 615, 631, 615, 1277 632, 635, 615, 638, 637, 631, 608, 636, 608, 632, 1278 608, 608, 637, 648, 636, 639, 612, 641, 639, 615, 1279 638, 615, 642, 608, 635, 640, 615, 643, 608, 644, 1280 608, 645, 649, 608, 647, 608, 650, 642, 640, 641, 1281 1282 646, 648, 652, 646, 653, 651, 644, 649, 654, 643, 1283 656, 647, 657, 645, 651, 658, 650, 654, 662, 663, 1284 652, 668, 665, 862, 658, 669, 653, 676, 679, 680, 1285 668, 677, 669, 656, 657, 713, 676, 679, 662, 665, 1286 712, 677, 718, 715, 680, 713, 663, 699, 699, 699, 1287 699, 699, 699, 703, 703, 703, 703, 703, 703, 716, 1288 721, 712, 718, 699, 734, 699, 716, 699, 699, 715, 1289 717, 719, 734, 720, 719, 717, 720, 723, 721, 725, 1290 699, 724, 727, 723, 731, 699, 703, 699, 725, 745, 1291 699, 730, 699, 726, 724, 729, 726, 735, 729, 732, 1292 1293 730, 733, 732, 727, 736, 737, 738, 735, 744, 741, 1294 731, 745, 746, 748, 733, 738, 749, 736, 769, 861, 1295 767, 748, 772, 769, 768, 749, 737, 741, 744, 770, 1296 773, 774, 741, 746, 756, 756, 756, 756, 756, 756, 1297 767, 768, 771, 775, 770, 772, 775, 773, 776, 777, 1298 779, 781, 771, 779, 781, 782, 783, 774, 785, 783, 1299 784, 776, 782, 784, 786, 788, 792, 756, 807, 809, 1300 817, 812, 811, 785, 810, 811, 813, 777, 814, 813, 1301 816, 814, 818, 820, 860, 818, 824, 786, 788, 792, 1302 809, 821, 810, 812, 821, 807, 817, 822, 816, 823, 1303 1304 822, 825, 824, 826, 841, 820, 842, 843, 823, 844, 1305 843, 845, 825, 842, 846, 847, 855, 846, 844, 826, 1306 850, 853, 854, 850, 853, 841, 859, 856, 855, 845, 1307 865, 854, 847, 866, 868, 845, 856, 868, 866, 865, 1308 869, 870, 872, 880, 873, 872, 870, 873, 874, 881, 1309 869, 874, 882, 888, 884, 882, 883, 884, 885, 891, 1310 895, 885, 892, 880, 881, 896, 883, 897, 899, 895, 1311 898, 900, 901, 858, 857, 888, 852, 892, 896, 851, 1312 891, 849, 901, 848, 840, 839, 899, 838, 837, 897, 1313 836, 898, 835, 900, 905, 905, 905, 905, 905, 905, 1314 1315 905, 905, 905, 905, 905, 905, 905, 906, 906, 906, 1316 906, 906, 906, 906, 906, 906, 906, 906, 906, 906, 1317 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, 1318 907, 907, 907, 908, 834, 833, 908, 832, 908, 908, 1319 908, 908, 908, 909, 831, 830, 829, 909, 909, 909, 1320 909, 909, 909, 910, 910, 910, 910, 910, 910, 910, 1321 910, 910, 910, 910, 910, 910, 911, 828, 827, 911, 1322 819, 911, 911, 911, 911, 911, 912, 815, 912, 912, 1323 808, 912, 912, 912, 912, 912, 912, 806, 912, 913, 1324 805, 804, 913, 913, 913, 913, 913, 913, 913, 913, 1325 1326 803, 913, 914, 914, 914, 914, 914, 914, 914, 914, 1327 914, 914, 914, 914, 914, 915, 915, 802, 915, 801, 1328 800, 799, 915, 916, 798, 797, 916, 796, 916, 916, 1329 916, 916, 916, 917, 795, 917, 794, 793, 791, 917, 1330 918, 790, 918, 789, 787, 780, 918, 919, 778, 919, 1331 766, 765, 764, 919, 920, 763, 920, 762, 761, 760, 1332 920, 921, 759, 921, 758, 755, 754, 921, 922, 753, 1333 922, 747, 743, 742, 922, 923, 740, 923, 739, 722, 1334 714, 923, 924, 711, 924, 706, 704, 700, 924, 925, 1335 690, 925, 686, 684, 682, 925, 926, 681, 926, 927, 1336 1337 927, 678, 927, 927, 927, 675, 927, 928, 928, 674, 1338 928, 929, 673, 672, 929, 671, 929, 929, 929, 929, 1339 929, 930, 670, 930, 667, 666, 664, 930, 931, 661, 1340 931, 660, 659, 655, 931, 932, 628, 932, 624, 622, 1341 620, 932, 933, 618, 933, 934, 616, 934, 610, 604, 1342 602, 934, 935, 600, 935, 936, 598, 596, 936, 594, 1343 936, 936, 936, 936, 936, 937, 937, 937, 937, 937, 1344 937, 937, 937, 937, 937, 937, 937, 937, 938, 938, 1345 938, 938, 938, 938, 938, 938, 938, 938, 938, 938, 1346 938, 939, 592, 939, 590, 589, 587, 939, 940, 584, 1347 1348 940, 581, 574, 570, 940, 941, 569, 941, 566, 563, 1349 558, 941, 942, 553, 942, 943, 550, 943, 527, 523, 1350 521, 943, 944, 519, 944, 945, 517, 945, 515, 513, 1351 512, 945, 946, 511, 946, 947, 510, 947, 498, 495, 1352 493, 947, 948, 492, 948, 949, 491, 949, 489, 487, 1353 484, 949, 950, 482, 950, 951, 480, 951, 478, 473, 1354 455, 951, 952, 453, 952, 953, 445, 953, 443, 435, 1355 433, 953, 954, 431, 954, 955, 405, 955, 403, 955, 1356 401, 955, 956, 399, 956, 398, 956, 397, 956, 957, 1357 957, 384, 957, 957, 957, 381, 957, 958, 372, 958, 1358 1359 370, 369, 365, 958, 959, 363, 959, 361, 359, 355, 1360 959, 960, 353, 960, 352, 351, 340, 960, 961, 324, 1361 961, 962, 301, 962, 280, 278, 276, 962, 963, 275, 1362 963, 964, 274, 964, 272, 271, 266, 964, 965, 262, 1363 965, 966, 261, 966, 257, 254, 253, 966, 967, 242, 1364 967, 968, 241, 234, 968, 233, 968, 968, 968, 968, 1365 968, 969, 969, 969, 969, 969, 969, 969, 969, 969, 1366 969, 969, 969, 969, 970, 230, 970, 220, 218, 217, 1367 970, 971, 216, 971, 972, 210, 972, 209, 207, 202, 1368 972, 973, 179, 973, 974, 150, 974, 148, 147, 141, 1369 1370 974, 975, 139, 975, 976, 137, 976, 129, 126, 125, 1371 976, 977, 121, 977, 978, 102, 978, 99, 96, 94, 1372 978, 979, 87, 979, 980, 73, 980, 71, 67, 36, 1373 980, 981, 33, 981, 982, 18, 982, 11, 4, 3, 1374 982, 983, 0, 983, 0, 0, 0, 983, 984, 0, 1375 984, 985, 0, 985, 0, 0, 0, 985, 986, 0, 1376 986, 987, 0, 987, 0, 987, 0, 987, 988, 0, 1377 988, 0, 0, 0, 988, 989, 0, 989, 0, 0, 1378 0, 989, 990, 0, 990, 991, 0, 991, 0, 0, 1379 0, 991, 992, 0, 992, 993, 0, 993, 0, 0, 1380 1381 0, 993, 994, 0, 994, 995, 0, 995, 0, 0, 1382 0, 995, 996, 0, 996, 997, 0, 997, 0, 0, 1383 0, 997, 998, 0, 998, 999, 0, 999, 0, 0, 1384 0, 999, 1000, 0, 1000, 1001, 0, 0, 1001, 0, 1385 1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002, 1386 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 0, 1387 1003, 0, 0, 0, 1003, 1004, 0, 1004, 1005, 0, 1388 1005, 0, 0, 0, 1005, 1006, 0, 1006, 1007, 0, 1389 1007, 0, 0, 0, 1007, 1008, 0, 1008, 1009, 0, 1390 1009, 0, 0, 0, 1009, 1010, 0, 1010, 1011, 0, 1391 1392 1011, 0, 0, 0, 1011, 1012, 0, 1012, 1013, 0, 1393 1013, 0, 0, 0, 1013, 1014, 0, 1014, 1015, 0, 1394 1015, 0, 0, 0, 1015, 1016, 0, 1016, 1017, 0, 1395 1017, 0, 0, 0, 1017, 1018, 0, 1018, 1019, 0, 1396 1019, 0, 0, 0, 1019, 1020, 0, 1020, 0, 0, 1397 0, 1020, 1021, 0, 1021, 1022, 0, 1022, 0, 0, 1398 0, 1022, 1023, 0, 1023, 1024, 0, 1024, 0, 0, 1399 0, 1024, 1025, 0, 1025, 1026, 0, 1026, 0, 0, 1400 0, 1026, 1027, 0, 1027, 1028, 0, 1028, 1029, 0, 1401 1029, 1030, 0, 0, 1030, 0, 1030, 1030, 1030, 1030, 1402 1403 1030, 1031, 0, 1031, 1032, 1032, 1032, 1032, 1032, 1032, 1404 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 0, 1033, 1405 0, 0, 0, 1033, 1034, 0, 1034, 1035, 0, 1035, 1406 0, 0, 0, 1035, 1036, 0, 1036, 1037, 0, 1037, 1407 1038, 0, 1038, 1039, 0, 0, 1039, 0, 1039, 1039, 1408 1039, 1039, 1039, 1040, 0, 1040, 1041, 0, 1041, 1042, 1409 0, 1042, 1043, 0, 1043, 1044, 0, 1044, 1045, 0, 1410 1045, 1046, 0, 1046, 1047, 0, 1047, 0, 0, 0, 1411 1047, 1048, 0, 1048, 1049, 0, 1049, 0, 0, 0, 1412 1049, 1050, 0, 1050, 1051, 0, 1051, 1052, 0, 1052, 1413 1414 1053, 0, 1053, 1054, 0, 1054, 0, 0, 0, 1054, 1415 1055, 0, 0, 1055, 0, 1055, 1055, 1055, 1055, 1055, 1416 1056, 0, 1056, 1057, 0, 1057, 1058, 0, 1058, 1059, 1417 0, 1059, 0, 0, 0, 1059, 1060, 0, 1060, 0, 1418 0, 0, 1060, 1061, 0, 1061, 0, 0, 0, 1061, 1419 1062, 0, 1062, 1063, 0, 1063, 0, 0, 0, 1063, 1420 1064, 0, 1064, 0, 0, 0, 1064, 1065, 0, 1065, 1421 0, 0, 0, 1065, 1066, 0, 1066, 0, 0, 0, 1422 1066, 1067, 0, 1067, 0, 0, 0, 1067, 1068, 0, 1423 1068, 0, 0, 0, 1068, 1069, 0, 1069, 0, 0, 1424 1425 0, 1069, 1070, 0, 1070, 0, 0, 0, 1070, 1071, 1426 0, 1071, 0, 0, 0, 1071, 1072, 0, 1072, 0, 1427 0, 0, 1072, 1073, 0, 1073, 0, 0, 0, 1073, 1428 1074, 0, 1074, 0, 0, 0, 1074, 1075, 0, 1075, 1429 0, 0, 0, 1075, 1076, 0, 1076, 0, 0, 0, 1430 1076, 1077, 0, 1077, 0, 0, 0, 1077, 1078, 0, 1431 1078, 0, 0, 0, 1078, 904, 904, 904, 904, 904, 1432 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1433 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1434 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1435 1436 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1437 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1438 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1439 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1440 904, 904, 904, 904, 904, 904, 904, 904, 904, 904, 1441 904 1446 1442 } ; 1447 1443 1448 1444 /* Table of booleans, true if rule could match eol. */ 1449 static yyconst flex_int32_t yy_rule_can_match_eol[18 7] =1445 static yyconst flex_int32_t yy_rule_can_match_eol[186] = 1450 1446 { 0, 1451 1447 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 1455 1451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1456 1452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1457 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1453 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1458 1454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1459 1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460 0, 0, 0, 0, 0, 0, 0,};1456 0, 0, 0, 0, 0, 0, }; 1461 1457 1462 1458 static yy_state_type yy_last_accepting_state; … … 1480 1476 * The contents of this file are covered under the licence agreement in the 1481 1477 * file "LICENCE" distributed with Cforall. 1482 * 1483 * lex.l -- 1484 * 1478 * 1479 * lex.l -- 1480 * 1485 1481 * Author : Peter A. Buhr 1486 1482 * Created On : Sat Sep 22 08:58:10 2001 … … 1548 1544 1549 1545 1550 #line 15 51"Parser/lex.cc"1546 #line 1547 "Parser/lex.cc" 1551 1547 1552 1548 #define INITIAL 0 … … 1743 1739 1744 1740 /* line directives */ 1745 #line 174 6"Parser/lex.cc"1741 #line 1742 "Parser/lex.cc" 1746 1742 1747 1743 if ( !(yy_init) ) … … 1797 1793 { 1798 1794 yy_current_state = (int) yy_def[yy_current_state]; 1799 if ( yy_current_state >= 90 9)1795 if ( yy_current_state >= 905 ) 1800 1796 yy_c = yy_meta[(unsigned int) yy_c]; 1801 1797 } … … 1803 1799 ++yy_cp; 1804 1800 } 1805 while ( yy_base[yy_current_state] != 28 77);1801 while ( yy_base[yy_current_state] != 2866 ); 1806 1802 1807 1803 yy_find_action: … … 2324 2320 YY_RULE_SETUP 2325 2321 #line 260 "lex.ll" 2326 { KEYWORD_RETURN(T TYPE); } // CFA2322 { KEYWORD_RETURN(TYPEDEF); } 2327 2323 YY_BREAK 2328 2324 case 93: 2329 2325 YY_RULE_SETUP 2330 2326 #line 261 "lex.ll" 2331 { KEYWORD_RETURN(TYPE DEF); }2327 { KEYWORD_RETURN(TYPEOF); } // GCC 2332 2328 YY_BREAK 2333 2329 case 94: … … 2344 2340 YY_RULE_SETUP 2345 2341 #line 264 "lex.ll" 2346 { KEYWORD_RETURN( TYPEOF); } // GCC2342 { KEYWORD_RETURN(UNION); } 2347 2343 YY_BREAK 2348 2344 case 97: 2349 2345 YY_RULE_SETUP 2350 2346 #line 265 "lex.ll" 2351 { KEYWORD_RETURN(UN ION); }2347 { KEYWORD_RETURN(UNSIGNED); } 2352 2348 YY_BREAK 2353 2349 case 98: 2354 2350 YY_RULE_SETUP 2355 2351 #line 266 "lex.ll" 2356 { KEYWORD_RETURN( UNSIGNED); }2352 { KEYWORD_RETURN(VALIST); } // GCC 2357 2353 YY_BREAK 2358 2354 case 99: 2359 2355 YY_RULE_SETUP 2360 2356 #line 267 "lex.ll" 2361 { KEYWORD_RETURN(V ALIST); } // GCC2357 { KEYWORD_RETURN(VOID); } 2362 2358 YY_BREAK 2363 2359 case 100: 2364 2360 YY_RULE_SETUP 2365 2361 #line 268 "lex.ll" 2366 { KEYWORD_RETURN(VO ID); }2362 { KEYWORD_RETURN(VOLATILE); } 2367 2363 YY_BREAK 2368 2364 case 101: 2369 2365 YY_RULE_SETUP 2370 2366 #line 269 "lex.ll" 2371 { KEYWORD_RETURN(VOLATILE); } 2367 { KEYWORD_RETURN(VOLATILE); } // GCC 2372 2368 YY_BREAK 2373 2369 case 102: … … 2379 2375 YY_RULE_SETUP 2380 2376 #line 271 "lex.ll" 2381 { KEYWORD_RETURN( VOLATILE); } // GCC2377 { KEYWORD_RETURN(WHILE); } 2382 2378 YY_BREAK 2383 2379 case 104: 2384 2380 YY_RULE_SETUP 2385 2381 #line 272 "lex.ll" 2386 { KEYWORD_RETURN(WHILE); } 2387 YY_BREAK 2382 { NUMERIC_RETURN(ZERO_T); } // CFA 2383 YY_BREAK 2384 /* identifier */ 2388 2385 case 105: 2389 2386 YY_RULE_SETUP 2390 #line 273 "lex.ll" 2391 { NUMERIC_RETURN(ZERO_T); } // CFA 2392 YY_BREAK 2393 /* identifier */ 2387 #line 275 "lex.ll" 2388 { IDENTIFIER_RETURN(); } 2389 YY_BREAK 2394 2390 case 106: 2395 2391 YY_RULE_SETUP 2396 2392 #line 276 "lex.ll" 2393 { ATTRIBUTE_RETURN(); } 2394 YY_BREAK 2395 case 107: 2396 YY_RULE_SETUP 2397 #line 277 "lex.ll" 2398 { BEGIN BKQUOTE; } 2399 YY_BREAK 2400 case 108: 2401 YY_RULE_SETUP 2402 #line 278 "lex.ll" 2397 2403 { IDENTIFIER_RETURN(); } 2398 2404 YY_BREAK 2399 case 107:2400 YY_RULE_SETUP2401 #line 277 "lex.ll"2402 { ATTRIBUTE_RETURN(); }2403 YY_BREAK2404 case 108:2405 YY_RULE_SETUP2406 #line 278 "lex.ll"2407 { BEGIN BKQUOTE; }2408 YY_BREAK2409 2405 case 109: 2410 2406 YY_RULE_SETUP 2411 2407 #line 279 "lex.ll" 2412 { IDENTIFIER_RETURN(); } 2413 YY_BREAK 2408 { BEGIN 0; } 2409 YY_BREAK 2410 /* numeric constants */ 2414 2411 case 110: 2415 2412 YY_RULE_SETUP 2416 #line 280 "lex.ll" 2417 { BEGIN 0; } 2418 YY_BREAK 2419 /* numeric constants */ 2413 #line 282 "lex.ll" 2414 { NUMERIC_RETURN(ZERO); } // CFA 2415 YY_BREAK 2420 2416 case 111: 2421 2417 YY_RULE_SETUP 2422 2418 #line 283 "lex.ll" 2423 { NUMERIC_RETURN( ZERO); } // CFA2419 { NUMERIC_RETURN(ONE); } // CFA 2424 2420 YY_BREAK 2425 2421 case 112: 2426 2422 YY_RULE_SETUP 2427 2423 #line 284 "lex.ll" 2428 { NUMERIC_RETURN( ONE); } // CFA2424 { NUMERIC_RETURN(INTEGERconstant); } 2429 2425 YY_BREAK 2430 2426 case 113: … … 2441 2437 YY_RULE_SETUP 2442 2438 #line 287 "lex.ll" 2443 { NUMERIC_RETURN( INTEGERconstant); }2439 { NUMERIC_RETURN(REALDECIMALconstant); } // must appear before floating_constant 2444 2440 YY_BREAK 2445 2441 case 116: 2446 2442 YY_RULE_SETUP 2447 2443 #line 288 "lex.ll" 2448 { NUMERIC_RETURN(REAL DECIMALconstant); } // must appear before floating_constant2444 { NUMERIC_RETURN(REALFRACTIONconstant); } // must appear before floating_constant 2449 2445 YY_BREAK 2450 2446 case 117: 2451 2447 YY_RULE_SETUP 2452 2448 #line 289 "lex.ll" 2453 { NUMERIC_RETURN( REALFRACTIONconstant); } // must appear before floating_constant2449 { NUMERIC_RETURN(FLOATINGconstant); } 2454 2450 YY_BREAK 2455 2451 case 118: … … 2458 2454 { NUMERIC_RETURN(FLOATINGconstant); } 2459 2455 YY_BREAK 2456 /* character constant, allows empty value */ 2460 2457 case 119: 2461 2458 YY_RULE_SETUP 2462 #line 291 "lex.ll" 2463 { NUMERIC_RETURN(FLOATINGconstant); } 2464 YY_BREAK 2465 /* character constant, allows empty value */ 2459 #line 293 "lex.ll" 2460 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 2461 YY_BREAK 2466 2462 case 120: 2467 2463 YY_RULE_SETUP 2468 2464 #line 294 "lex.ll" 2469 { BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }2465 { strtext->append( yytext, yyleng ); } 2470 2466 YY_BREAK 2471 2467 case 121: 2468 /* rule 121 can match eol */ 2472 2469 YY_RULE_SETUP 2473 2470 #line 295 "lex.ll" 2474 { strtext->append( yytext, yyleng ); }2475 YY_BREAK2476 case 122:2477 /* rule 122 can match eol */2478 YY_RULE_SETUP2479 #line 296 "lex.ll"2480 2471 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); } 2481 2472 YY_BREAK 2482 2473 /* ' stop highlighting */ 2483 2474 /* string constant */ 2475 case 122: 2476 YY_RULE_SETUP 2477 #line 299 "lex.ll" 2478 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); } 2479 YY_BREAK 2484 2480 case 123: 2485 2481 YY_RULE_SETUP 2486 2482 #line 300 "lex.ll" 2487 { BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }2483 { strtext->append( yytext, yyleng ); } 2488 2484 YY_BREAK 2489 2485 case 124: 2486 /* rule 124 can match eol */ 2490 2487 YY_RULE_SETUP 2491 2488 #line 301 "lex.ll" 2492 { strtext->append( yytext, yyleng ); }2493 YY_BREAK2494 case 125:2495 /* rule 125 can match eol */2496 YY_RULE_SETUP2497 #line 302 "lex.ll"2498 2489 { BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); } 2499 2490 YY_BREAK 2500 2491 /* " stop highlighting */ 2501 2492 /* common character/string constant */ 2493 case 125: 2494 YY_RULE_SETUP 2495 #line 305 "lex.ll" 2496 { rm_underscore(); strtext->append( yytext, yyleng ); } 2497 YY_BREAK 2502 2498 case 126: 2499 /* rule 126 can match eol */ 2503 2500 YY_RULE_SETUP 2504 2501 #line 306 "lex.ll" 2505 { rm_underscore(); strtext->append( yytext, yyleng ); }2502 {} // continuation (ALSO HANDLED BY CPP) 2506 2503 YY_BREAK 2507 2504 case 127: 2508 /* rule 127 can match eol */2509 2505 YY_RULE_SETUP 2510 2506 #line 307 "lex.ll" 2511 {} // continuation (ALSO HANDLED BY CPP) 2512 YY_BREAK 2507 { strtext->append( yytext, yyleng ); } // unknown escape character 2508 YY_BREAK 2509 /* punctuation */ 2513 2510 case 128: 2514 2511 YY_RULE_SETUP 2515 #line 308 "lex.ll" 2516 { strtext->append( yytext, yyleng ); } // unknown escape character 2517 YY_BREAK 2518 /* punctuation */ 2512 #line 310 "lex.ll" 2513 { ASCIIOP_RETURN(); } 2514 YY_BREAK 2519 2515 case 129: 2520 2516 YY_RULE_SETUP … … 2545 2541 YY_RULE_SETUP 2546 2542 #line 316 "lex.ll" 2543 { ASCIIOP_RETURN(); } // also operator 2544 YY_BREAK 2545 case 135: 2546 YY_RULE_SETUP 2547 #line 317 "lex.ll" 2547 2548 { ASCIIOP_RETURN(); } 2548 YY_BREAK2549 case 135:2550 YY_RULE_SETUP2551 #line 317 "lex.ll"2552 { ASCIIOP_RETURN(); } // also operator2553 2549 YY_BREAK 2554 2550 case 136: … … 2560 2556 YY_RULE_SETUP 2561 2557 #line 319 "lex.ll" 2558 { ASCIIOP_RETURN(); } // also operator 2559 YY_BREAK 2560 case 138: 2561 YY_RULE_SETUP 2562 #line 320 "lex.ll" 2563 { NAMEDOP_RETURN(ELLIPSIS); } 2564 YY_BREAK 2565 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */ 2566 case 139: 2567 YY_RULE_SETUP 2568 #line 323 "lex.ll" 2569 { RETURN_VAL('['); } 2570 YY_BREAK 2571 case 140: 2572 YY_RULE_SETUP 2573 #line 324 "lex.ll" 2574 { RETURN_VAL(']'); } 2575 YY_BREAK 2576 case 141: 2577 YY_RULE_SETUP 2578 #line 325 "lex.ll" 2579 { RETURN_VAL('{'); } 2580 YY_BREAK 2581 case 142: 2582 YY_RULE_SETUP 2583 #line 326 "lex.ll" 2584 { RETURN_VAL('}'); } 2585 YY_BREAK 2586 /* operators */ 2587 case 143: 2588 YY_RULE_SETUP 2589 #line 329 "lex.ll" 2562 2590 { ASCIIOP_RETURN(); } 2563 2591 YY_BREAK 2564 case 138:2565 YY_RULE_SETUP2566 #line 320 "lex.ll"2567 { ASCIIOP_RETURN(); } // also operator2568 YY_BREAK2569 case 139:2570 YY_RULE_SETUP2571 #line 321 "lex.ll"2572 { NAMEDOP_RETURN(ELLIPSIS); }2573 YY_BREAK2574 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */2575 case 140:2576 YY_RULE_SETUP2577 #line 324 "lex.ll"2578 { RETURN_VAL('['); }2579 YY_BREAK2580 case 141:2581 YY_RULE_SETUP2582 #line 325 "lex.ll"2583 { RETURN_VAL(']'); }2584 YY_BREAK2585 case 142:2586 YY_RULE_SETUP2587 #line 326 "lex.ll"2588 { RETURN_VAL('{'); }2589 YY_BREAK2590 case 143:2591 YY_RULE_SETUP2592 #line 327 "lex.ll"2593 { RETURN_VAL('}'); }2594 YY_BREAK2595 /* operators */2596 2592 case 144: 2597 2593 YY_RULE_SETUP … … 2661 2657 case 157: 2662 2658 YY_RULE_SETUP 2663 #line 34 3"lex.ll"2664 { ASCIIOP_RETURN(); }2659 #line 344 "lex.ll" 2660 { NAMEDOP_RETURN(ICR); } 2665 2661 YY_BREAK 2666 2662 case 158: 2667 2663 YY_RULE_SETUP 2668 2664 #line 345 "lex.ll" 2669 { NAMEDOP_RETURN( ICR); }2665 { NAMEDOP_RETURN(DECR); } 2670 2666 YY_BREAK 2671 2667 case 159: 2672 2668 YY_RULE_SETUP 2673 2669 #line 346 "lex.ll" 2674 { NAMEDOP_RETURN( DECR); }2670 { NAMEDOP_RETURN(EQ); } 2675 2671 YY_BREAK 2676 2672 case 160: 2677 2673 YY_RULE_SETUP 2678 2674 #line 347 "lex.ll" 2679 { NAMEDOP_RETURN( EQ); }2675 { NAMEDOP_RETURN(NE); } 2680 2676 YY_BREAK 2681 2677 case 161: 2682 2678 YY_RULE_SETUP 2683 2679 #line 348 "lex.ll" 2684 { NAMEDOP_RETURN( NE); }2680 { NAMEDOP_RETURN(LS); } 2685 2681 YY_BREAK 2686 2682 case 162: 2687 2683 YY_RULE_SETUP 2688 2684 #line 349 "lex.ll" 2689 { NAMEDOP_RETURN( LS); }2685 { NAMEDOP_RETURN(RS); } 2690 2686 YY_BREAK 2691 2687 case 163: 2692 2688 YY_RULE_SETUP 2693 2689 #line 350 "lex.ll" 2694 { NAMEDOP_RETURN( RS); }2690 { NAMEDOP_RETURN(LE); } 2695 2691 YY_BREAK 2696 2692 case 164: 2697 2693 YY_RULE_SETUP 2698 2694 #line 351 "lex.ll" 2699 { NAMEDOP_RETURN( LE); }2695 { NAMEDOP_RETURN(GE); } 2700 2696 YY_BREAK 2701 2697 case 165: 2702 2698 YY_RULE_SETUP 2703 2699 #line 352 "lex.ll" 2704 { NAMEDOP_RETURN( GE); }2700 { NAMEDOP_RETURN(ANDAND); } 2705 2701 YY_BREAK 2706 2702 case 166: 2707 2703 YY_RULE_SETUP 2708 2704 #line 353 "lex.ll" 2709 { NAMEDOP_RETURN( ANDAND); }2705 { NAMEDOP_RETURN(OROR); } 2710 2706 YY_BREAK 2711 2707 case 167: 2712 2708 YY_RULE_SETUP 2713 2709 #line 354 "lex.ll" 2714 { NAMEDOP_RETURN( OROR); }2710 { NAMEDOP_RETURN(ARROW); } 2715 2711 YY_BREAK 2716 2712 case 168: 2717 2713 YY_RULE_SETUP 2718 2714 #line 355 "lex.ll" 2719 { NAMEDOP_RETURN( ARROW); }2715 { NAMEDOP_RETURN(PLUSassign); } 2720 2716 YY_BREAK 2721 2717 case 169: 2722 2718 YY_RULE_SETUP 2723 2719 #line 356 "lex.ll" 2724 { NAMEDOP_RETURN( PLUSassign); }2720 { NAMEDOP_RETURN(MINUSassign); } 2725 2721 YY_BREAK 2726 2722 case 170: 2727 2723 YY_RULE_SETUP 2728 2724 #line 357 "lex.ll" 2729 { NAMEDOP_RETURN(M INUSassign); }2725 { NAMEDOP_RETURN(MULTassign); } 2730 2726 YY_BREAK 2731 2727 case 171: 2732 2728 YY_RULE_SETUP 2733 2729 #line 358 "lex.ll" 2734 { NAMEDOP_RETURN( MULTassign); }2730 { NAMEDOP_RETURN(DIVassign); } 2735 2731 YY_BREAK 2736 2732 case 172: 2737 2733 YY_RULE_SETUP 2738 2734 #line 359 "lex.ll" 2739 { NAMEDOP_RETURN( DIVassign); }2735 { NAMEDOP_RETURN(MODassign); } 2740 2736 YY_BREAK 2741 2737 case 173: 2742 2738 YY_RULE_SETUP 2743 2739 #line 360 "lex.ll" 2744 { NAMEDOP_RETURN( MODassign); }2740 { NAMEDOP_RETURN(ANDassign); } 2745 2741 YY_BREAK 2746 2742 case 174: 2747 2743 YY_RULE_SETUP 2748 2744 #line 361 "lex.ll" 2749 { NAMEDOP_RETURN( ANDassign); }2745 { NAMEDOP_RETURN(ORassign); } 2750 2746 YY_BREAK 2751 2747 case 175: 2752 2748 YY_RULE_SETUP 2753 2749 #line 362 "lex.ll" 2754 { NAMEDOP_RETURN( ORassign); }2750 { NAMEDOP_RETURN(ERassign); } 2755 2751 YY_BREAK 2756 2752 case 176: 2757 2753 YY_RULE_SETUP 2758 2754 #line 363 "lex.ll" 2759 { NAMEDOP_RETURN( ERassign); }2755 { NAMEDOP_RETURN(LSassign); } 2760 2756 YY_BREAK 2761 2757 case 177: 2762 2758 YY_RULE_SETUP 2763 2759 #line 364 "lex.ll" 2764 { NAMEDOP_RETURN( LSassign); }2760 { NAMEDOP_RETURN(RSassign); } 2765 2761 YY_BREAK 2766 2762 case 178: 2767 2763 YY_RULE_SETUP 2768 #line 365 "lex.ll" 2769 { NAMEDOP_RETURN(RSassign); } 2770 YY_BREAK 2764 #line 366 "lex.ll" 2765 { NAMEDOP_RETURN(ATassign); } // CFA 2766 YY_BREAK 2767 /* CFA, operator identifier */ 2771 2768 case 179: 2772 2769 YY_RULE_SETUP 2773 #line 367 "lex.ll" 2774 { NAMEDOP_RETURN(ATassign); } // CFA 2775 YY_BREAK 2776 /* CFA, operator identifier */ 2770 #line 369 "lex.ll" 2771 { IDENTIFIER_RETURN(); } // unary 2772 YY_BREAK 2777 2773 case 180: 2778 2774 YY_RULE_SETUP 2779 2775 #line 370 "lex.ll" 2780 { IDENTIFIER_RETURN(); } // unary2776 { IDENTIFIER_RETURN(); } 2781 2777 YY_BREAK 2782 2778 case 181: … … 2788 2784 YY_RULE_SETUP 2789 2785 #line 372 "lex.ll" 2790 { IDENTIFIER_RETURN(); }2791 YY_BREAK2792 case 183:2793 YY_RULE_SETUP2794 #line 373 "lex.ll"2795 2786 { IDENTIFIER_RETURN(); } // binary 2796 2787 YY_BREAK … … 2821 2812 an argument list. 2822 2813 */ 2823 case 18 4:2824 YY_RULE_SETUP 2825 #line 400"lex.ll"2814 case 183: 2815 YY_RULE_SETUP 2816 #line 399 "lex.ll" 2826 2817 { 2827 2818 // 1 or 2 character unary operator ? … … 2836 2827 YY_BREAK 2837 2828 /* unknown characters */ 2829 case 184: 2830 YY_RULE_SETUP 2831 #line 411 "lex.ll" 2832 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2833 YY_BREAK 2838 2834 case 185: 2839 2835 YY_RULE_SETUP 2840 #line 412 "lex.ll" 2841 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); } 2842 YY_BREAK 2843 case 186: 2844 YY_RULE_SETUP 2845 #line 414 "lex.ll" 2836 #line 413 "lex.ll" 2846 2837 ECHO; 2847 2838 YY_BREAK 2848 #line 284 9"Parser/lex.cc"2839 #line 2840 "Parser/lex.cc" 2849 2840 case YY_STATE_EOF(INITIAL): 2850 2841 case YY_STATE_EOF(COMMENT): … … 3143 3134 { 3144 3135 yy_current_state = (int) yy_def[yy_current_state]; 3145 if ( yy_current_state >= 90 9)3136 if ( yy_current_state >= 905 ) 3146 3137 yy_c = yy_meta[(unsigned int) yy_c]; 3147 3138 } … … 3171 3162 { 3172 3163 yy_current_state = (int) yy_def[yy_current_state]; 3173 if ( yy_current_state >= 90 9)3164 if ( yy_current_state >= 905 ) 3174 3165 yy_c = yy_meta[(unsigned int) yy_c]; 3175 3166 } 3176 3167 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 3177 yy_is_jam = (yy_current_state == 90 8);3168 yy_is_jam = (yy_current_state == 904); 3178 3169 3179 3170 return yy_is_jam ? 0 : yy_current_state; … … 3821 3812 #define YYTABLES_NAME "yytables" 3822 3813 3823 #line 41 4"lex.ll"3814 #line 413 "lex.ll" 3824 3815 3825 3816 -
src/Parser/lex.ll
r2162c2c rbb82c03 4 4 * The contents of this file are covered under the licence agreement in the 5 5 * file "LICENCE" distributed with Cforall. 6 * 7 * lex.l -- 8 * 6 * 7 * lex.l -- 8 * 9 9 * Author : Peter A. Buhr 10 10 * Created On : Sat Sep 22 08:58:10 2001 … … 258 258 trait { KEYWORD_RETURN(TRAIT); } // CFA 259 259 try { KEYWORD_RETURN(TRY); } // CFA 260 ttype { KEYWORD_RETURN(TTYPE); } // CFA261 260 typedef { KEYWORD_RETURN(TYPEDEF); } 262 261 typeof { KEYWORD_RETURN(TYPEOF); } // GCC -
src/Parser/parser.cc
r2162c2c rbb82c03 159 159 FTYPE = 291, 160 160 DTYPE = 292, 161 TTYPE = 293, 162 TRAIT = 294, 163 SIZEOF = 295, 164 OFFSETOF = 296, 165 ATTRIBUTE = 297, 166 EXTENSION = 298, 167 IF = 299, 168 ELSE = 300, 169 SWITCH = 301, 170 CASE = 302, 171 DEFAULT = 303, 172 DO = 304, 173 WHILE = 305, 174 FOR = 306, 175 BREAK = 307, 176 CONTINUE = 308, 177 GOTO = 309, 178 RETURN = 310, 179 CHOOSE = 311, 180 DISABLE = 312, 181 ENABLE = 313, 182 FALLTHRU = 314, 183 TRY = 315, 184 CATCH = 316, 185 CATCHRESUME = 317, 186 FINALLY = 318, 187 THROW = 319, 188 THROWRESUME = 320, 189 AT = 321, 190 ASM = 322, 191 ALIGNAS = 323, 192 ALIGNOF = 324, 193 ATOMIC = 325, 194 GENERIC = 326, 195 NORETURN = 327, 196 STATICASSERT = 328, 197 THREADLOCAL = 329, 198 IDENTIFIER = 330, 199 QUOTED_IDENTIFIER = 331, 200 TYPEDEFname = 332, 201 TYPEGENname = 333, 202 ATTR_IDENTIFIER = 334, 203 ATTR_TYPEDEFname = 335, 204 ATTR_TYPEGENname = 336, 205 INTEGERconstant = 337, 206 CHARACTERconstant = 338, 207 STRINGliteral = 339, 208 REALDECIMALconstant = 340, 209 REALFRACTIONconstant = 341, 210 FLOATINGconstant = 342, 211 ZERO = 343, 212 ONE = 344, 213 ARROW = 345, 214 ICR = 346, 215 DECR = 347, 216 LS = 348, 217 RS = 349, 218 LE = 350, 219 GE = 351, 220 EQ = 352, 221 NE = 353, 222 ANDAND = 354, 223 OROR = 355, 224 ELLIPSIS = 356, 225 MULTassign = 357, 226 DIVassign = 358, 227 MODassign = 359, 228 PLUSassign = 360, 229 MINUSassign = 361, 230 LSassign = 362, 231 RSassign = 363, 232 ANDassign = 364, 233 ERassign = 365, 234 ORassign = 366, 235 ATassign = 367, 236 THEN = 368 161 TRAIT = 293, 162 SIZEOF = 294, 163 OFFSETOF = 295, 164 ATTRIBUTE = 296, 165 EXTENSION = 297, 166 IF = 298, 167 ELSE = 299, 168 SWITCH = 300, 169 CASE = 301, 170 DEFAULT = 302, 171 DO = 303, 172 WHILE = 304, 173 FOR = 305, 174 BREAK = 306, 175 CONTINUE = 307, 176 GOTO = 308, 177 RETURN = 309, 178 CHOOSE = 310, 179 DISABLE = 311, 180 ENABLE = 312, 181 FALLTHRU = 313, 182 TRY = 314, 183 CATCH = 315, 184 CATCHRESUME = 316, 185 FINALLY = 317, 186 THROW = 318, 187 THROWRESUME = 319, 188 AT = 320, 189 ASM = 321, 190 ALIGNAS = 322, 191 ALIGNOF = 323, 192 ATOMIC = 324, 193 GENERIC = 325, 194 NORETURN = 326, 195 STATICASSERT = 327, 196 THREADLOCAL = 328, 197 IDENTIFIER = 329, 198 QUOTED_IDENTIFIER = 330, 199 TYPEDEFname = 331, 200 TYPEGENname = 332, 201 ATTR_IDENTIFIER = 333, 202 ATTR_TYPEDEFname = 334, 203 ATTR_TYPEGENname = 335, 204 INTEGERconstant = 336, 205 CHARACTERconstant = 337, 206 STRINGliteral = 338, 207 REALDECIMALconstant = 339, 208 REALFRACTIONconstant = 340, 209 FLOATINGconstant = 341, 210 ZERO = 342, 211 ONE = 343, 212 ARROW = 344, 213 ICR = 345, 214 DECR = 346, 215 LS = 347, 216 RS = 348, 217 LE = 349, 218 GE = 350, 219 EQ = 351, 220 NE = 352, 221 ANDAND = 353, 222 OROR = 354, 223 ELLIPSIS = 355, 224 MULTassign = 356, 225 DIVassign = 357, 226 MODassign = 358, 227 PLUSassign = 359, 228 MINUSassign = 360, 229 LSassign = 361, 230 RSassign = 362, 231 ANDassign = 363, 232 ERassign = 364, 233 ORassign = 365, 234 ATassign = 366, 235 THEN = 367 237 236 }; 238 237 #endif … … 273 272 #define FTYPE 291 274 273 #define DTYPE 292 275 #define TTYPE 293 276 #define TRAIT 294 277 #define SIZEOF 295 278 #define OFFSETOF 296 279 #define ATTRIBUTE 297 280 #define EXTENSION 298 281 #define IF 299 282 #define ELSE 300 283 #define SWITCH 301 284 #define CASE 302 285 #define DEFAULT 303 286 #define DO 304 287 #define WHILE 305 288 #define FOR 306 289 #define BREAK 307 290 #define CONTINUE 308 291 #define GOTO 309 292 #define RETURN 310 293 #define CHOOSE 311 294 #define DISABLE 312 295 #define ENABLE 313 296 #define FALLTHRU 314 297 #define TRY 315 298 #define CATCH 316 299 #define CATCHRESUME 317 300 #define FINALLY 318 301 #define THROW 319 302 #define THROWRESUME 320 303 #define AT 321 304 #define ASM 322 305 #define ALIGNAS 323 306 #define ALIGNOF 324 307 #define ATOMIC 325 308 #define GENERIC 326 309 #define NORETURN 327 310 #define STATICASSERT 328 311 #define THREADLOCAL 329 312 #define IDENTIFIER 330 313 #define QUOTED_IDENTIFIER 331 314 #define TYPEDEFname 332 315 #define TYPEGENname 333 316 #define ATTR_IDENTIFIER 334 317 #define ATTR_TYPEDEFname 335 318 #define ATTR_TYPEGENname 336 319 #define INTEGERconstant 337 320 #define CHARACTERconstant 338 321 #define STRINGliteral 339 322 #define REALDECIMALconstant 340 323 #define REALFRACTIONconstant 341 324 #define FLOATINGconstant 342 325 #define ZERO 343 326 #define ONE 344 327 #define ARROW 345 328 #define ICR 346 329 #define DECR 347 330 #define LS 348 331 #define RS 349 332 #define LE 350 333 #define GE 351 334 #define EQ 352 335 #define NE 353 336 #define ANDAND 354 337 #define OROR 355 338 #define ELLIPSIS 356 339 #define MULTassign 357 340 #define DIVassign 358 341 #define MODassign 359 342 #define PLUSassign 360 343 #define MINUSassign 361 344 #define LSassign 362 345 #define RSassign 363 346 #define ANDassign 364 347 #define ERassign 365 348 #define ORassign 366 349 #define ATassign 367 350 #define THEN 368 274 #define TRAIT 293 275 #define SIZEOF 294 276 #define OFFSETOF 295 277 #define ATTRIBUTE 296 278 #define EXTENSION 297 279 #define IF 298 280 #define ELSE 299 281 #define SWITCH 300 282 #define CASE 301 283 #define DEFAULT 302 284 #define DO 303 285 #define WHILE 304 286 #define FOR 305 287 #define BREAK 306 288 #define CONTINUE 307 289 #define GOTO 308 290 #define RETURN 309 291 #define CHOOSE 310 292 #define DISABLE 311 293 #define ENABLE 312 294 #define FALLTHRU 313 295 #define TRY 314 296 #define CATCH 315 297 #define CATCHRESUME 316 298 #define FINALLY 317 299 #define THROW 318 300 #define THROWRESUME 319 301 #define AT 320 302 #define ASM 321 303 #define ALIGNAS 322 304 #define ALIGNOF 323 305 #define ATOMIC 324 306 #define GENERIC 325 307 #define NORETURN 326 308 #define STATICASSERT 327 309 #define THREADLOCAL 328 310 #define IDENTIFIER 329 311 #define QUOTED_IDENTIFIER 330 312 #define TYPEDEFname 331 313 #define TYPEGENname 332 314 #define ATTR_IDENTIFIER 333 315 #define ATTR_TYPEDEFname 334 316 #define ATTR_TYPEGENname 335 317 #define INTEGERconstant 336 318 #define CHARACTERconstant 337 319 #define STRINGliteral 338 320 #define REALDECIMALconstant 339 321 #define REALFRACTIONconstant 340 322 #define FLOATINGconstant 341 323 #define ZERO 342 324 #define ONE 343 325 #define ARROW 344 326 #define ICR 345 327 #define DECR 346 328 #define LS 347 329 #define RS 348 330 #define LE 349 331 #define GE 350 332 #define EQ 351 333 #define NE 352 334 #define ANDAND 353 335 #define OROR 354 336 #define ELLIPSIS 355 337 #define MULTassign 356 338 #define DIVassign 357 339 #define MODassign 358 340 #define PLUSassign 359 341 #define MINUSassign 360 342 #define LSassign 361 343 #define RSassign 362 344 #define ANDassign 363 345 #define ERassign 364 346 #define ORassign 365 347 #define ATassign 366 348 #define THEN 367 351 349 352 350 … … 378 376 379 377 /* Line 293 of yacc.c */ 380 #line 3 81"Parser/parser.cc"378 #line 379 "Parser/parser.cc" 381 379 } YYSTYPE; 382 380 # define YYSTYPE_IS_TRIVIAL 1 … … 390 388 391 389 /* Line 343 of yacc.c */ 392 #line 39 3"Parser/parser.cc"390 #line 391 "Parser/parser.cc" 393 391 394 392 #ifdef short … … 609 607 #define YYFINAL 251 610 608 /* YYLAST -- Last index in YYTABLE. */ 611 #define YYLAST 10 466609 #define YYLAST 10624 612 610 613 611 /* YYNTOKENS -- Number of terminals. */ 614 #define YYNTOKENS 13 8612 #define YYNTOKENS 137 615 613 /* YYNNTS -- Number of nonterminals. */ 616 614 #define YYNNTS 243 617 615 /* YYNRULES -- Number of rules. */ 618 #define YYNRULES 75 8616 #define YYNRULES 757 619 617 /* YYNRULES -- Number of states. */ 620 #define YYNSTATES 154 1618 #define YYNSTATES 1540 621 619 622 620 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 623 621 #define YYUNDEFTOK 2 624 #define YYMAXUTOK 36 8622 #define YYMAXUTOK 367 625 623 626 624 #define YYTRANSLATE(YYX) \ … … 633 631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 634 632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 635 2, 2, 2, 12 6, 2, 2, 2, 129, 123, 2,636 11 4, 115, 122, 124, 121, 125, 118, 128, 2, 2,637 2, 2, 2, 2, 2, 2, 2, 2, 13 5, 137,638 1 30, 136, 131, 134, 2, 2, 2, 2, 2, 2,633 2, 2, 2, 125, 2, 2, 2, 128, 122, 2, 634 113, 114, 121, 123, 120, 124, 117, 127, 2, 2, 635 2, 2, 2, 2, 2, 2, 2, 2, 134, 136, 636 129, 135, 130, 133, 2, 2, 2, 2, 2, 2, 639 637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 640 638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 641 2, 11 6, 2, 117, 132, 2, 2, 2, 2, 2,639 2, 115, 2, 116, 131, 2, 2, 2, 2, 2, 642 640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 643 641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 644 2, 2, 2, 11 9, 133, 120, 127, 2, 2, 2,642 2, 2, 2, 118, 132, 119, 126, 2, 2, 2, 645 643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 646 644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … … 666 664 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 667 665 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 668 105, 106, 107, 108, 109, 110, 111, 112 , 113666 105, 106, 107, 108, 109, 110, 111, 112 669 667 }; 670 668 … … 723 721 1597, 1600, 1603, 1605, 1608, 1611, 1617, 1623, 1631, 1638, 724 722 1640, 1643, 1646, 1650, 1652, 1655, 1658, 1663, 1666, 1671, 725 1672, 1677, 1680, 1682, 1684, 1686, 168 8, 1689, 1692, 1698,726 17 04, 1718, 1720, 1722, 1726, 1730, 1733, 1737, 1741, 1744,727 1749, 175 1, 1758, 1768, 1769, 1781, 1783, 1787, 1791, 1795,728 1797, 1 799, 1805, 1808, 1814, 1815, 1817, 1819, 1823, 1824,729 1826, 1828, 1830, 183 2, 1833, 1840, 1843, 1845, 1848, 1853,730 185 6, 1860, 1864, 1868, 1873, 1879, 1885, 1891, 1898, 1900,731 1902, 190 4, 1908, 1909, 1915, 1916, 1918, 1920, 1923, 1930,732 193 2, 1936, 1937, 1939, 1944, 1946, 1948, 1950, 1952, 1955,733 195 7, 1960, 1963, 1965, 1969, 1972, 1976, 1980, 1983, 1988,734 199 3, 1997, 2006, 2010, 2013, 2015, 2018, 2025, 2034, 2038,735 204 1, 2045, 2049, 2054, 2059, 2063, 2065, 2067, 2069, 2074,736 208 1, 2085, 2088, 2092, 2096, 2101, 2106, 2110, 2113, 2115,737 211 8, 2121, 2123, 2127, 2130, 2134, 2138, 2141, 2146, 2151,738 21 55, 2162, 2171, 2175, 2178, 2180, 2183, 2186, 2189, 2193,739 219 7, 2200, 2205, 2210, 2214, 2221, 2230, 2234, 2237, 2239,740 224 2, 2245, 2247, 2249, 2252, 2256, 2260, 2263, 2268, 2275,741 2284, 228 6, 2289, 2292, 2294, 2297, 2300, 2304, 2308, 2310,742 231 5, 2320, 2324, 2330, 2339, 2343, 2346, 2350, 2352, 2358,743 236 4, 2371, 2378, 2380, 2383, 2386, 2388, 2391, 2394, 2398,744 2402, 240 4, 2409, 2414, 2418, 2424, 2433, 2437, 2439, 2442,745 244 4, 2447, 2454, 2460, 2467, 2475, 2483, 2485, 2488, 2491,746 249 3, 2496, 2499, 2503, 2507, 2509, 2514, 2519, 2523, 2532,747 2536, 2538, 254 0, 2543, 2545, 2547, 2550, 2554, 2557, 2561,748 256 4, 2568, 2572, 2575, 2580, 2584, 2587, 2591, 2594, 2599,749 260 3, 2606, 2613, 2620, 2627, 2635, 2637, 2640, 2642, 2644,750 264 6, 2649, 2653, 2656, 2660, 2663, 2667, 2671, 2676, 2679,751 268 3, 2688, 2691, 2697, 2704, 2711, 2712, 2714, 2715723 1672, 1677, 1680, 1682, 1684, 1686, 1687, 1690, 1696, 1702, 724 1716, 1718, 1720, 1724, 1728, 1731, 1735, 1739, 1742, 1747, 725 1749, 1756, 1766, 1767, 1779, 1781, 1785, 1789, 1793, 1795, 726 1797, 1803, 1806, 1812, 1813, 1815, 1817, 1821, 1822, 1824, 727 1826, 1828, 1830, 1831, 1838, 1841, 1843, 1846, 1851, 1854, 728 1858, 1862, 1866, 1871, 1877, 1883, 1889, 1896, 1898, 1900, 729 1902, 1906, 1907, 1913, 1914, 1916, 1918, 1921, 1928, 1930, 730 1934, 1935, 1937, 1942, 1944, 1946, 1948, 1950, 1953, 1955, 731 1958, 1961, 1963, 1967, 1970, 1974, 1978, 1981, 1986, 1991, 732 1995, 2004, 2008, 2011, 2013, 2016, 2023, 2032, 2036, 2039, 733 2043, 2047, 2052, 2057, 2061, 2063, 2065, 2067, 2072, 2079, 734 2083, 2086, 2090, 2094, 2099, 2104, 2108, 2111, 2113, 2116, 735 2119, 2121, 2125, 2128, 2132, 2136, 2139, 2144, 2149, 2153, 736 2160, 2169, 2173, 2176, 2178, 2181, 2184, 2187, 2191, 2195, 737 2198, 2203, 2208, 2212, 2219, 2228, 2232, 2235, 2237, 2240, 738 2243, 2245, 2247, 2250, 2254, 2258, 2261, 2266, 2273, 2282, 739 2284, 2287, 2290, 2292, 2295, 2298, 2302, 2306, 2308, 2313, 740 2318, 2322, 2328, 2337, 2341, 2344, 2348, 2350, 2356, 2362, 741 2369, 2376, 2378, 2381, 2384, 2386, 2389, 2392, 2396, 2400, 742 2402, 2407, 2412, 2416, 2422, 2431, 2435, 2437, 2440, 2442, 743 2445, 2452, 2458, 2465, 2473, 2481, 2483, 2486, 2489, 2491, 744 2494, 2497, 2501, 2505, 2507, 2512, 2517, 2521, 2530, 2534, 745 2536, 2538, 2541, 2543, 2545, 2548, 2552, 2555, 2559, 2562, 746 2566, 2570, 2573, 2578, 2582, 2585, 2589, 2592, 2597, 2601, 747 2604, 2611, 2618, 2625, 2633, 2635, 2638, 2640, 2642, 2644, 748 2647, 2651, 2654, 2658, 2661, 2665, 2669, 2674, 2677, 2681, 749 2686, 2689, 2695, 2702, 2709, 2710, 2712, 2713 752 750 }; 753 751 … … 755 753 static const yytype_int16 yyrhs[] = 756 754 { 757 30 9, 0, -1, -1, -1, 82, -1, 85, -1, 86,758 -1, 8 7, -1, 83, -1, 75, -1, 79, -1, 145,759 -1, 7 5, -1, 79, -1, 75, -1, 145, -1, 88,760 -1, 8 9, -1, 147, -1, 84, -1, 147, 84, -1,761 7 5, -1, 145, -1, 175, -1, 114, 177, 115, -1,762 11 4, 181, 115, -1, 148, -1, 149, 116, 139, 172,763 1 40, 117, -1, 149, 114, 150, 115, -1, 149, 118,764 14 4, -1, 149, 118, 116, 139, 152, 140, 117, -1,765 14 9, 86, -1, 149, 90, 144, -1, 149, 90, 116,766 13 9, 152, 140, 117, -1, 149, 91, -1, 149, 92,767 -1, 11 4, 282, 115, 119, 286, 379, 120, -1, 149,768 11 9, 150, 120, -1, 151, -1, 150, 121, 151, -1,769 -1, 17 2, -1, 153, -1, 152, 121, 153, -1, 154,770 -1, 8 5, 153, -1, 85, 116, 139, 152, 140, 117,771 -1, 15 4, 118, 153, -1, 154, 118, 116, 139, 152,772 1 40, 117, -1, 154, 90, 153, -1, 154, 90, 116,773 13 9, 152, 140, 117, -1, 82, 155, -1, 87, 155,774 -1, 14 4, 155, -1, -1, 155, 86, -1, 149, -1,775 14 1, -1, 146, -1, 43, 159, -1, 157, 159, -1,776 15 8, 159, -1, 91, 156, -1, 92, 156, -1, 40,777 15 6, -1, 40, 114, 282, 115, -1, 69, 156, -1,778 6 9, 114, 282, 115, -1, 41, 114, 282, 121, 144,779 11 5, -1, 79, -1, 79, 114, 151, 115, -1, 79,780 11 4, 283, 115, -1, 122, -1, 123, -1, 124, -1,781 12 5, -1, 126, -1, 127, -1, 156, -1, 114, 282,782 11 5, 159, -1, 159, -1, 160, 122, 159, -1, 160,783 12 8, 159, -1, 160, 129, 159, -1, 160, -1, 161,784 12 4, 160, -1, 161, 125, 160, -1, 161, -1, 162,785 9 3, 161, -1, 162, 94, 161, -1, 162, -1, 163,786 1 30, 162, -1, 163, 131, 162, -1, 163, 95, 162,787 -1, 16 3, 96, 162, -1, 163, -1, 164, 97, 163,788 -1, 16 4, 98, 163, -1, 164, -1, 165, 123, 164,789 -1, 16 5, -1, 166, 132, 165, -1, 166, -1, 167,790 13 3, 166, -1, 167, -1, 168, 99, 167, -1, 168,791 -1, 16 9, 100, 168, -1, 169, -1, 169, 134, 177,792 13 5, 170, -1, 169, 134, 135, 170, -1, 170, -1,793 1 70, -1, 156, 174, 172, -1, -1, 172, -1, 136,794 -1, 11 2, -1, 102, -1, 103, -1, 104, -1, 105,795 -1, 10 6, -1, 107, -1, 108, -1, 109, -1, 110,796 -1, 11 1, -1, 116, 139, 121, 176, 140, 117, -1,797 11 6, 139, 172, 121, 176, 140, 117, -1, 173, -1,798 17 6, 121, 173, -1, 172, -1, 177, 121, 172, -1,799 -1, 17 7, -1, 180, -1, 181, -1, 185, -1, 186,800 -1, 19 8, -1, 200, -1, 201, -1, 206, -1, 132,801 14 9, 119, 150, 120, 137, -1, 75, 135, 319, 179,802 -1, 11 9, 120, -1, 119, 139, 139, 217, 182, 140,803 1 20, -1, 183, -1, 182, 139, 183, -1, 220, -1,804 4 3, 220, -1, 315, -1, 179, 140, -1, 179, -1,805 18 4, 179, -1, 178, 137, -1, 44, 114, 177, 115,806 17 9, -1, 44, 114, 177, 115, 179, 45, 179, -1,807 4 6, 114, 177, 115, 191, -1, 46, 114, 177, 115,808 11 9, 139, 213, 192, 120, -1, 56, 114, 177, 115,809 19 1, -1, 56, 114, 177, 115, 119, 139, 213, 194,810 1 20, -1, 171, -1, 171, 101, 171, -1, 317, -1,811 18 7, -1, 188, 121, 187, -1, 47, 188, 135, -1,812 4 8, 135, -1, 189, -1, 190, 189, -1, 190, 179,813 -1, -1, 19 3, -1, 190, 184, -1, 193, 190, 184,814 -1, -1, 19 5, -1, 190, 197, -1, 190, 184, 196,815 -1, 19 5, 190, 197, -1, 195, 190, 184, 196, -1,816 -1, 19 7, -1, 59, -1, 59, 137, -1, 50, 114,817 17 7, 115, 179, -1, 49, 179, 50, 114, 177, 115,818 13 7, -1, 51, 114, 139, 199, 115, 179, -1, 178,819 1 40, 137, 178, 137, 178, -1, 220, 178, 137, 178,820 -1, 5 4, 75, 137, -1, 54, 122, 177, 137, -1,821 5 3, 137, -1, 53, 75, 137, -1, 52, 137, -1,822 5 2, 75, 137, -1, 55, 178, 137, -1, 64, 173,823 13 7, -1, 65, 173, 137, -1, 65, 173, 66, 172,824 13 7, -1, 60, 181, 202, -1, 60, 181, 204, -1,825 60, 181, 202, 204, -1, 203, -1, 61, 114, 101,826 11 5, 181, -1, 203, 61, 114, 101, 115, 181, -1,827 6 2, 114, 101, 115, 181, -1, 203, 62, 114, 101,828 11 5, 181, -1, 61, 114, 139, 139, 205, 140, 115,829 18 1, 140, -1, 203, 61, 114, 139, 139, 205, 140,830 11 5, 181, 140, -1, 62, 114, 139, 139, 205, 140,831 11 5, 181, 140, -1, 203, 62, 114, 139, 139, 205,832 1 40, 115, 181, 140, -1, 63, 181, -1, 233, -1,833 23 3, 316, -1, 233, 364, -1, 373, 144, -1, 373,834 -1, 6 7, 207, 114, 146, 115, 137, -1, 67, 207,835 11 4, 146, 135, 208, 115, 137, -1, 67, 207, 114,836 14 6, 135, 208, 135, 208, 115, 137, -1, 67, 207,837 11 4, 146, 135, 208, 135, 208, 135, 211, 115, 137,838 -1, 6 7, 207, 54, 114, 146, 135, 135, 208, 135,839 21 1, 135, 212, 115, 137, -1, -1, 11, -1, -1,840 20 9, -1, 210, -1, 209, 121, 210, -1, 146, 114,841 17 1, 115, -1, 116, 171, 117, 146, 114, 171, 115,842 -1, -1, 14 6, -1, 211, 121, 146, -1, 144, -1,843 21 2, 121, 144, -1, 140, -1, 214, -1, 220, -1,844 21 4, 139, 220, -1, 140, -1, 216, -1, 230, -1,845 21 6, 139, 230, -1, -1, 218, -1, 31, 219, 137,846 -1, 21 8, 31, 219, 137, -1, 281, -1, 219, 121,847 28 1, -1, 221, -1, 230, -1, 222, 140, 137, -1,848 22 7, 140, 137, -1, 224, 140, 137, -1, 300, 140,849 13 7, -1, 303, 140, 137, -1, 223, 284, -1, 239,850 22 3, 284, -1, 222, 140, 121, 139, 279, 284, -1,851 37 4, 279, 318, -1, 377, 279, 318, -1, 235, 377,852 27 9, 318, -1, 225, -1, 235, 225, -1, 239, 225,853 -1, 23 9, 235, 225, -1, 224, 140, 121, 139, 279,854 -1, 37 7, 279, 114, 139, 267, 140, 115, -1, 226,855 27 9, 114, 139, 267, 140, 115, -1, 116, 139, 269,856 1 40, 117, -1, 116, 139, 269, 140, 121, 139, 270,857 1 40, 117, -1, 3, 223, -1, 3, 225, -1, 227,858 1 40, 121, 139, 144, -1, 3, 233, 316, -1, 228,859 1 40, 121, 139, 316, -1, 235, 3, 233, 316, -1,860 23 3, 3, 316, -1, 233, 3, 235, 316, -1, 3,861 14 4, 136, 172, -1, 229, 140, 121, 139, 144, 136,862 17 2, -1, 231, 140, 137, -1, 228, 140, 137, -1,863 22 9, 140, 137, -1, 247, 140, 137, -1, 232, 316,864 31 8, 284, -1, 231, 121, 319, 316, 318, 284, -1,865 24 3, -1, 247, -1, 249, -1, 290, -1, 244, -1,866 24 8, -1, 250, -1, 291, -1, -1, 235, -1, 236,867 -1, 23 5, 236, -1, 237, -1, 321, -1, 10, -1,868 12, -1, 11, -1, 14, -1, 70, -1, -1, 13,869 11 4, 238, 293, 115, -1, 240, -1, 235, 240, -1,870 23 9, 235, 240, -1, 241, -1, 240, 241, -1, 5,755 308, 0, -1, -1, -1, 81, -1, 84, -1, 85, 756 -1, 86, -1, 82, -1, 74, -1, 78, -1, 144, 757 -1, 74, -1, 78, -1, 74, -1, 144, -1, 87, 758 -1, 88, -1, 146, -1, 83, -1, 146, 83, -1, 759 74, -1, 144, -1, 174, -1, 113, 176, 114, -1, 760 113, 180, 114, -1, 147, -1, 148, 115, 138, 171, 761 139, 116, -1, 148, 113, 149, 114, -1, 148, 117, 762 143, -1, 148, 117, 115, 138, 151, 139, 116, -1, 763 148, 85, -1, 148, 89, 143, -1, 148, 89, 115, 764 138, 151, 139, 116, -1, 148, 90, -1, 148, 91, 765 -1, 113, 281, 114, 118, 285, 378, 119, -1, 148, 766 118, 149, 119, -1, 150, -1, 149, 120, 150, -1, 767 -1, 171, -1, 152, -1, 151, 120, 152, -1, 153, 768 -1, 84, 152, -1, 84, 115, 138, 151, 139, 116, 769 -1, 153, 117, 152, -1, 153, 117, 115, 138, 151, 770 139, 116, -1, 153, 89, 152, -1, 153, 89, 115, 771 138, 151, 139, 116, -1, 81, 154, -1, 86, 154, 772 -1, 143, 154, -1, -1, 154, 85, -1, 148, -1, 773 140, -1, 145, -1, 42, 158, -1, 156, 158, -1, 774 157, 158, -1, 90, 155, -1, 91, 155, -1, 39, 775 155, -1, 39, 113, 281, 114, -1, 68, 155, -1, 776 68, 113, 281, 114, -1, 40, 113, 281, 120, 143, 777 114, -1, 78, -1, 78, 113, 150, 114, -1, 78, 778 113, 282, 114, -1, 121, -1, 122, -1, 123, -1, 779 124, -1, 125, -1, 126, -1, 155, -1, 113, 281, 780 114, 158, -1, 158, -1, 159, 121, 158, -1, 159, 781 127, 158, -1, 159, 128, 158, -1, 159, -1, 160, 782 123, 159, -1, 160, 124, 159, -1, 160, -1, 161, 783 92, 160, -1, 161, 93, 160, -1, 161, -1, 162, 784 129, 161, -1, 162, 130, 161, -1, 162, 94, 161, 785 -1, 162, 95, 161, -1, 162, -1, 163, 96, 162, 786 -1, 163, 97, 162, -1, 163, -1, 164, 122, 163, 787 -1, 164, -1, 165, 131, 164, -1, 165, -1, 166, 788 132, 165, -1, 166, -1, 167, 98, 166, -1, 167, 789 -1, 168, 99, 167, -1, 168, -1, 168, 133, 176, 790 134, 169, -1, 168, 133, 134, 169, -1, 169, -1, 791 169, -1, 155, 173, 171, -1, -1, 171, -1, 135, 792 -1, 111, -1, 101, -1, 102, -1, 103, -1, 104, 793 -1, 105, -1, 106, -1, 107, -1, 108, -1, 109, 794 -1, 110, -1, 115, 138, 120, 175, 139, 116, -1, 795 115, 138, 171, 120, 175, 139, 116, -1, 172, -1, 796 175, 120, 172, -1, 171, -1, 176, 120, 171, -1, 797 -1, 176, -1, 179, -1, 180, -1, 184, -1, 185, 798 -1, 197, -1, 199, -1, 200, -1, 205, -1, 131, 799 148, 118, 149, 119, 136, -1, 74, 134, 318, 178, 800 -1, 118, 119, -1, 118, 138, 138, 216, 181, 139, 801 119, -1, 182, -1, 181, 138, 182, -1, 219, -1, 802 42, 219, -1, 314, -1, 178, 139, -1, 178, -1, 803 183, 178, -1, 177, 136, -1, 43, 113, 176, 114, 804 178, -1, 43, 113, 176, 114, 178, 44, 178, -1, 805 45, 113, 176, 114, 190, -1, 45, 113, 176, 114, 806 118, 138, 212, 191, 119, -1, 55, 113, 176, 114, 807 190, -1, 55, 113, 176, 114, 118, 138, 212, 193, 808 119, -1, 170, -1, 170, 100, 170, -1, 316, -1, 809 186, -1, 187, 120, 186, -1, 46, 187, 134, -1, 810 47, 134, -1, 188, -1, 189, 188, -1, 189, 178, 811 -1, -1, 192, -1, 189, 183, -1, 192, 189, 183, 812 -1, -1, 194, -1, 189, 196, -1, 189, 183, 195, 813 -1, 194, 189, 196, -1, 194, 189, 183, 195, -1, 814 -1, 196, -1, 58, -1, 58, 136, -1, 49, 113, 815 176, 114, 178, -1, 48, 178, 49, 113, 176, 114, 816 136, -1, 50, 113, 138, 198, 114, 178, -1, 177, 817 139, 136, 177, 136, 177, -1, 219, 177, 136, 177, 818 -1, 53, 74, 136, -1, 53, 121, 176, 136, -1, 819 52, 136, -1, 52, 74, 136, -1, 51, 136, -1, 820 51, 74, 136, -1, 54, 177, 136, -1, 63, 172, 821 136, -1, 64, 172, 136, -1, 64, 172, 65, 171, 822 136, -1, 59, 180, 201, -1, 59, 180, 203, -1, 823 59, 180, 201, 203, -1, 202, -1, 60, 113, 100, 824 114, 180, -1, 202, 60, 113, 100, 114, 180, -1, 825 61, 113, 100, 114, 180, -1, 202, 61, 113, 100, 826 114, 180, -1, 60, 113, 138, 138, 204, 139, 114, 827 180, 139, -1, 202, 60, 113, 138, 138, 204, 139, 828 114, 180, 139, -1, 61, 113, 138, 138, 204, 139, 829 114, 180, 139, -1, 202, 61, 113, 138, 138, 204, 830 139, 114, 180, 139, -1, 62, 180, -1, 232, -1, 831 232, 315, -1, 232, 363, -1, 372, 143, -1, 372, 832 -1, 66, 206, 113, 145, 114, 136, -1, 66, 206, 833 113, 145, 134, 207, 114, 136, -1, 66, 206, 113, 834 145, 134, 207, 134, 207, 114, 136, -1, 66, 206, 835 113, 145, 134, 207, 134, 207, 134, 210, 114, 136, 836 -1, 66, 206, 53, 113, 145, 134, 134, 207, 134, 837 210, 134, 211, 114, 136, -1, -1, 11, -1, -1, 838 208, -1, 209, -1, 208, 120, 209, -1, 145, 113, 839 170, 114, -1, 115, 170, 116, 145, 113, 170, 114, 840 -1, -1, 145, -1, 210, 120, 145, -1, 143, -1, 841 211, 120, 143, -1, 139, -1, 213, -1, 219, -1, 842 213, 138, 219, -1, 139, -1, 215, -1, 229, -1, 843 215, 138, 229, -1, -1, 217, -1, 31, 218, 136, 844 -1, 217, 31, 218, 136, -1, 280, -1, 218, 120, 845 280, -1, 220, -1, 229, -1, 221, 139, 136, -1, 846 226, 139, 136, -1, 223, 139, 136, -1, 299, 139, 847 136, -1, 302, 139, 136, -1, 222, 283, -1, 238, 848 222, 283, -1, 221, 139, 120, 138, 278, 283, -1, 849 373, 278, 317, -1, 376, 278, 317, -1, 234, 376, 850 278, 317, -1, 224, -1, 234, 224, -1, 238, 224, 851 -1, 238, 234, 224, -1, 223, 139, 120, 138, 278, 852 -1, 376, 278, 113, 138, 266, 139, 114, -1, 225, 853 278, 113, 138, 266, 139, 114, -1, 115, 138, 268, 854 139, 116, -1, 115, 138, 268, 139, 120, 138, 269, 855 139, 116, -1, 3, 222, -1, 3, 224, -1, 226, 856 139, 120, 138, 143, -1, 3, 232, 315, -1, 227, 857 139, 120, 138, 315, -1, 234, 3, 232, 315, -1, 858 232, 3, 315, -1, 232, 3, 234, 315, -1, 3, 859 143, 135, 171, -1, 228, 139, 120, 138, 143, 135, 860 171, -1, 230, 139, 136, -1, 227, 139, 136, -1, 861 228, 139, 136, -1, 246, 139, 136, -1, 231, 315, 862 317, 283, -1, 230, 120, 318, 315, 317, 283, -1, 863 242, -1, 246, -1, 248, -1, 289, -1, 243, -1, 864 247, -1, 249, -1, 290, -1, -1, 234, -1, 235, 865 -1, 234, 235, -1, 236, -1, 320, -1, 10, -1, 866 12, -1, 11, -1, 14, -1, 69, -1, -1, 13, 867 113, 237, 292, 114, -1, 239, -1, 234, 239, -1, 868 238, 234, 239, -1, 240, -1, 239, 240, -1, 5, 871 869 -1, 7, -1, 4, -1, 6, -1, 8, -1, 9, 872 -1, 7 2, -1, 74, -1, 16, -1, 21, -1, 20,870 -1, 71, -1, 73, -1, 16, -1, 21, -1, 20, 873 871 -1, 18, -1, 19, -1, 17, -1, 22, -1, 23, 874 872 -1, 15, -1, 27, -1, 28, -1, 29, -1, 26, 875 -1, 24, -1, 25, -1, 24 4, -1, 239, 244, -1,876 24 3, 241, -1, 243, 241, 235, -1, 243, 241, 244,877 -1, 24 5, -1, 234, 246, 234, -1, 242, -1, 235,878 24 2, -1, 245, 236, -1, 245, 242, -1, 30, 114,879 28 3, 115, -1, 30, 114, 177, 115, -1, 81, 114,880 28 3, 115, -1, 81, 114, 177, 115, -1, 248, -1,881 23 9, 248, -1, 247, 241, -1, 247, 241, 235, -1,882 25 1, -1, 235, 251, -1, 248, 236, -1, 250, -1,883 23 9, 250, -1, 249, 241, -1, 249, 241, 235, -1,884 7 7, -1, 235, 77, -1, 250, 236, -1, 252, -1,885 26 3, -1, 254, 119, 255, 120, -1, 254, 281, -1,886 -1, 25 4, 281, 253, 119, 255, 120, -1, 254, 114,887 29 9, 115, 119, 255, 120, -1, 254, 292, -1, 33,888 31 9, -1, 34, 319, -1, -1, 255, 256, -1, 257,889 13 7, -1, 43, 257, 137, -1, 258, 137, -1, 43,890 25 8, 137, -1, 373, -1, 373, 281, -1, 257, 121,891 28 1, -1, 257, 121, -1, 233, 259, -1, 258, 121,892 31 9, 259, -1, -1, 261, -1, 325, 260, -1, 338,893 2 60, -1, 364, -1, -1, 261, -1, 135, 171, -1,894 32, 31 9, -1, 262, 119, 265, 379, 120, -1, 262,895 28 1, -1, -1, 262, 281, 264, 119, 265, 379, 120,896 -1, 28 1, 266, -1, 265, 121, 281, 266, -1, -1,897 13 6, 171, -1, -1, 268, -1, 270, -1, 269, -1,898 26 9, 140, 121, 139, 270, -1, 270, 140, 121, 139,899 10 1, -1, 269, 140, 121, 139, 101, -1, 274, -1,900 2 70, 140, 121, 139, 274, -1, 269, 140, 121, 139,901 27 4, -1, 269, 140, 121, 139, 270, 140, 121, 139,902 27 4, -1, 275, -1, 270, 140, 121, 139, 275, -1,903 -1, 27 2, -1, 273, -1, 273, 140, 121, 139, 101,904 -1, 27 7, -1, 276, -1, 273, 140, 121, 139, 277,905 -1, 27 3, 140, 121, 139, 276, -1, 276, -1, 369,906 27 9, 380, -1, 377, 279, 380, -1, 235, 377, 279,907 3 80, -1, 225, -1, 277, -1, 369, -1, 377, -1,908 23 5, 377, -1, 378, -1, 232, 343, 380, -1, 232,909 34 7, 380, -1, 232, -1, 232, 358, -1, 144, -1,910 27 8, 121, 144, -1, 142, -1, 77, -1, 78, -1,911 14 3, -1, 77, -1, 78, -1, 144, -1, 77, -1,912 7 8, -1, 373, -1, 233, -1, 233, 364, -1, 373,913 -1, 37 8, -1, 233, -1, 233, 352, -1, -1, 136,914 28 5, -1, 112, 285, -1, 172, -1, 119, 286, 379,915 1 20, -1, -1, 285, -1, 287, 285, -1, 286, 121,916 28 5, -1, 286, 121, 287, 285, -1, 288, 135, -1,917 28 1, 135, -1, 289, -1, 288, 289, -1, 118, 281,918 -1, 11 6, 139, 172, 140, 117, -1, 116, 139, 317,919 1 40, 117, -1, 116, 139, 171, 101, 171, 140, 117,920 -1, 11 8, 116, 139, 152, 140, 117, -1, 291, -1,921 23 9, 291, -1, 290, 241, -1, 290, 241, 235, -1,922 29 2, -1, 235, 292, -1, 291, 236, -1, 78, 114,923 29 9, 115, -1, 294, 380, -1, 293, 121, 294, 380,924 -1, -1, 29 6, 281, 295, 297, -1, 233, 343, -1,925 35, -1, 37, -1, 36, -1, 38, -1, -1, 297,926 298, -1, 133, 281, 114, 299, 115, -1, 133, 119,927 1 39, 305, 120, -1, 133, 114, 139, 293, 140, 115,928 119, 139, 305, 120, 114, 299, 115, -1, 283, -1,929 172, -1, 299, 121, 283, -1, 299, 121, 172, -1,930 35, 301, -1, 240, 35, 301, -1, 300, 121, 301,931 -1, 302, 297, -1, 302, 297, 136, 283, -1, 281,932 -1, 280, 114, 139, 293, 140, 115, -1, 39, 281,933 114, 139, 293, 140, 115, 119, 120, -1, -1, 39,934 281, 114, 139, 293, 140, 115, 119, 304, 305, 120,935 -1, 30 6, -1, 305, 139, 306, -1, 307, 140, 137,936 -1, 308, 140, 137, -1, 223, -1, 225, -1, 307,937 1 40, 121, 139, 279, -1, 233, 316, -1, 308, 140,938 121, 139, 316, -1, -1, 310, -1, 312, -1, 310,939 139, 312, -1, -1, 310, -1, 220, -1, 314, -1,940 206, -1, -1, 5, 84, 313, 119, 311, 120, -1,941 43, 312, -1, 315, -1, 330, 181, -1, 334, 139,942 215, 181, -1, 224, 181, -1, 232, 330, 181, -1,943 235, 330, 181, -1, 239, 330, 181, -1, 239, 235,944 330, 181, -1, 232, 334, 139, 215, 181, -1, 235,945 334, 139, 215, 181, -1, 239, 334, 139, 215, 181,946 -1, 239, 235, 334, 139, 215, 181, -1, 325, -1,947 3 38, -1, 330, -1, 171, 127, 171, -1, -1, 67,948 114, 146, 115, 319, -1, -1, 320, -1, 321, -1,949 320, 321, -1, 42, 114, 114, 322, 115, 115, -1,950 32 3, -1, 322, 121, 323, -1, -1, 324, -1, 324,951 114, 178, 115, -1, 279, -1, 241, -1, 242, -1,952 236, -1, 326, 319, -1, 327, -1, 328, 319, -1,953 329, 319, -1, 142, -1, 114, 326, 115, -1, 157,954 325, -1, 157, 235, 325, -1, 114, 327, 115, -1,955 326, 356, -1, 114, 327, 115, 356, -1, 114, 328,956 115, 357, -1, 114, 328, 115, -1, 114, 327, 115,957 114, 139, 271, 140, 115, -1, 114, 329, 115, -1,958 331, 319, -1, 332, -1, 333, 319, -1, 326, 114,959 139, 271, 140, 115, -1, 114, 332, 115, 114, 139,960 271, 140, 115, -1, 114, 331, 115, -1, 157, 330,961 -1, 157, 235, 330, -1, 114, 332, 115, -1, 114,962 3 32, 115, 356, -1, 114, 333, 115, 357, -1, 114,963 333, 115, -1, 335, -1, 336, -1, 337, -1, 326,964 114, 278, 115, -1, 114, 336, 115, 114, 278, 115,965 -1, 114, 335, 115, -1, 157, 334, -1, 157, 235,966 334, -1, 114, 336, 115, -1, 114, 336, 115, 356,967 -1, 114, 337, 115, 357, -1, 114, 337, 115, -1,968 339, 319, -1, 340, -1, 341, 319, -1, 342, 319,969 -1, 348, -1, 114, 339, 115, -1, 157, 338, -1,970 157, 235, 338, -1, 114, 340, 115, -1, 339, 356,971 -1, 114, 340, 115, 356, -1, 114, 341, 115, 357,972 -1, 114, 341, 115, -1, 339, 114, 139, 271, 140,973 11 5, -1, 114, 340, 115, 114, 139, 271, 140, 115,974 -1, 114, 342, 115, -1, 326, 319, -1, 344, -1,975 345, 319, -1, 346, 319, -1, 157, 343, -1, 157,976 235, 343, -1, 114, 344, 115, -1, 326, 362, -1,977 114, 3 44, 115, 356, -1, 114, 345, 115, 357, -1,978 114, 345, 115, -1, 326, 114, 139, 271, 140, 115,979 -1, 114, 344, 115, 114, 139, 271, 140, 115, -1,980 114, 346, 115, -1, 348, 319, -1, 349, -1, 350,981 3 19, -1, 351, 319, -1, 77, -1, 78, -1, 157,982 347, -1, 157, 235, 347, -1, 114, 349, 115, -1,983 348, 362, -1, 114, 349, 115, 362, -1, 348, 114,984 139, 271, 140, 115, -1, 114, 349, 115, 114, 139,985 271, 140, 115, -1, 353, -1, 354, 319, -1, 355,986 319, -1, 157, -1, 157, 235, -1, 157, 352, -1,987 157, 235, 352, -1, 114, 353, 115, -1, 356, -1,988 114, 35 3, 115, 356, -1, 114, 354, 115, 357, -1,989 114, 354, 115, -1, 114, 139, 271, 140, 115, -1,990 114, 353, 115, 114, 139, 271, 140, 115, -1, 114,991 355, 115, -1, 116, 117, -1, 116, 117, 357, -1,992 357, -1, 116, 139, 172, 140, 117, -1, 116, 139,993 1 22, 140, 117, -1, 357, 116, 139, 172, 140, 117,994 -1, 357, 116, 139, 122, 140, 117, -1, 359, -1,995 360, 319, -1, 361, 319, -1, 157, -1, 157, 235,996 -1, 157, 358, -1, 157, 235, 358, -1, 114, 359,997 115, -1, 362, -1, 114, 359, 115, 362, -1, 114,998 3 60, 115, 357, -1, 114, 360, 115, -1, 114, 139,999 271, 140, 115, -1, 114, 359, 115, 114, 139, 271,1000 140, 115, -1, 114, 361, 115, -1, 363, -1, 363,1001 35 7, -1, 357, -1, 116, 117, -1, 116, 139, 235,1002 1 22, 140, 117, -1, 116, 139, 235, 140, 117, -1,1003 116, 139, 235, 172, 140, 117, -1, 116, 139, 7,1004 234, 172, 140, 117, -1, 116, 139, 235, 7, 172,1005 140, 117, -1, 365, -1, 366, 319, -1, 367, 319,1006 -1, 15 7, -1, 157, 235, -1, 157, 364, -1, 157,1007 235, 364, -1, 114, 365, 115, -1, 356, -1, 114,1008 3 65, 115, 356, -1, 114, 366, 115, 357, -1, 114,1009 366, 115, -1, 114, 365, 115, 114, 139, 271, 140,1010 11 5, -1, 114, 367, 115, -1, 369, -1, 377, -1,1011 235, 377, -1, 370, -1, 371, -1, 157, 233, -1,1012 23 5, 157, 233, -1, 157, 378, -1, 235, 157, 378,1013 -1, 157, 368, -1, 235, 157, 368, -1, 116, 117,1014 233, -1, 372, 233, -1, 116, 117, 357, 233, -1,1015 372, 357, 233, -1, 357, 233, -1, 116, 117, 370,1016 -1, 372, 370, -1, 116, 117, 357, 370, -1, 372,1017 357, 370, -1, 357, 370, -1, 116, 139, 235, 122,1018 140, 117, -1, 116, 139, 235, 172, 140, 117, -1,1019 116, 139, 239, 172, 140, 117, -1, 116, 139, 239,1020 235, 172, 140, 117, -1, 377, -1, 235, 377, -1,1021 374, -1, 375, -1, 376, -1, 157, 233, -1, 235,1022 157, 233, -1, 157, 378, -1, 235, 157, 378, -1,1023 157, 373, -1, 235, 157, 373, -1, 116, 117, 233,1024 -1, 116, 117, 357, 233, -1, 357, 233, -1, 116,1025 117, 375, -1, 116, 117, 357, 375, -1, 357, 375,1026 -1, 116, 139, 270, 140, 117, -1, 377, 114, 139,1027 267, 140, 115, -1, 226, 114, 139, 267, 140, 115,1028 -1, -1, 121, -1, -1, 136, 172, -1873 -1, 24, -1, 25, -1, 243, -1, 238, 243, -1, 874 242, 240, -1, 242, 240, 234, -1, 242, 240, 243, 875 -1, 244, -1, 233, 245, 233, -1, 241, -1, 234, 876 241, -1, 244, 235, -1, 244, 241, -1, 30, 113, 877 282, 114, -1, 30, 113, 176, 114, -1, 80, 113, 878 282, 114, -1, 80, 113, 176, 114, -1, 247, -1, 879 238, 247, -1, 246, 240, -1, 246, 240, 234, -1, 880 250, -1, 234, 250, -1, 247, 235, -1, 249, -1, 881 238, 249, -1, 248, 240, -1, 248, 240, 234, -1, 882 76, -1, 234, 76, -1, 249, 235, -1, 251, -1, 883 262, -1, 253, 118, 254, 119, -1, 253, 280, -1, 884 -1, 253, 280, 252, 118, 254, 119, -1, 253, 113, 885 298, 114, 118, 254, 119, -1, 253, 291, -1, 33, 886 318, -1, 34, 318, -1, -1, 254, 255, -1, 256, 887 136, -1, 42, 256, 136, -1, 257, 136, -1, 42, 888 257, 136, -1, 372, -1, 372, 280, -1, 256, 120, 889 280, -1, 256, 120, -1, 232, 258, -1, 257, 120, 890 318, 258, -1, -1, 260, -1, 324, 259, -1, 337, 891 259, -1, 363, -1, -1, 260, -1, 134, 170, -1, 892 32, 318, -1, 261, 118, 264, 378, 119, -1, 261, 893 280, -1, -1, 261, 280, 263, 118, 264, 378, 119, 894 -1, 280, 265, -1, 264, 120, 280, 265, -1, -1, 895 135, 170, -1, -1, 267, -1, 269, -1, 268, -1, 896 268, 139, 120, 138, 269, -1, 269, 139, 120, 138, 897 100, -1, 268, 139, 120, 138, 100, -1, 273, -1, 898 269, 139, 120, 138, 273, -1, 268, 139, 120, 138, 899 273, -1, 268, 139, 120, 138, 269, 139, 120, 138, 900 273, -1, 274, -1, 269, 139, 120, 138, 274, -1, 901 -1, 271, -1, 272, -1, 272, 139, 120, 138, 100, 902 -1, 276, -1, 275, -1, 272, 139, 120, 138, 276, 903 -1, 272, 139, 120, 138, 275, -1, 275, -1, 368, 904 278, 379, -1, 376, 278, 379, -1, 234, 376, 278, 905 379, -1, 224, -1, 276, -1, 368, -1, 376, -1, 906 234, 376, -1, 377, -1, 231, 342, 379, -1, 231, 907 346, 379, -1, 231, -1, 231, 357, -1, 143, -1, 908 277, 120, 143, -1, 141, -1, 76, -1, 77, -1, 909 142, -1, 76, -1, 77, -1, 143, -1, 76, -1, 910 77, -1, 372, -1, 232, -1, 232, 363, -1, 372, 911 -1, 377, -1, 232, -1, 232, 351, -1, -1, 135, 912 284, -1, 111, 284, -1, 171, -1, 118, 285, 378, 913 119, -1, -1, 284, -1, 286, 284, -1, 285, 120, 914 284, -1, 285, 120, 286, 284, -1, 287, 134, -1, 915 280, 134, -1, 288, -1, 287, 288, -1, 117, 280, 916 -1, 115, 138, 171, 139, 116, -1, 115, 138, 316, 917 139, 116, -1, 115, 138, 170, 100, 170, 139, 116, 918 -1, 117, 115, 138, 151, 139, 116, -1, 290, -1, 919 238, 290, -1, 289, 240, -1, 289, 240, 234, -1, 920 291, -1, 234, 291, -1, 290, 235, -1, 77, 113, 921 298, 114, -1, 293, 379, -1, 292, 120, 293, 379, 922 -1, -1, 295, 280, 294, 296, -1, 232, 342, -1, 923 35, -1, 37, -1, 36, -1, -1, 296, 297, -1, 924 132, 280, 113, 298, 114, -1, 132, 118, 138, 304, 925 119, -1, 132, 113, 138, 292, 139, 114, 118, 138, 926 304, 119, 113, 298, 114, -1, 282, -1, 171, -1, 927 298, 120, 282, -1, 298, 120, 171, -1, 35, 300, 928 -1, 239, 35, 300, -1, 299, 120, 300, -1, 301, 929 296, -1, 301, 296, 135, 282, -1, 280, -1, 279, 930 113, 138, 292, 139, 114, -1, 38, 280, 113, 138, 931 292, 139, 114, 118, 119, -1, -1, 38, 280, 113, 932 138, 292, 139, 114, 118, 303, 304, 119, -1, 305, 933 -1, 304, 138, 305, -1, 306, 139, 136, -1, 307, 934 139, 136, -1, 222, -1, 224, -1, 306, 139, 120, 935 138, 278, -1, 232, 315, -1, 307, 139, 120, 138, 936 315, -1, -1, 309, -1, 311, -1, 309, 138, 311, 937 -1, -1, 309, -1, 219, -1, 313, -1, 205, -1, 938 -1, 5, 83, 312, 118, 310, 119, -1, 42, 311, 939 -1, 314, -1, 329, 180, -1, 333, 138, 214, 180, 940 -1, 223, 180, -1, 231, 329, 180, -1, 234, 329, 941 180, -1, 238, 329, 180, -1, 238, 234, 329, 180, 942 -1, 231, 333, 138, 214, 180, -1, 234, 333, 138, 943 214, 180, -1, 238, 333, 138, 214, 180, -1, 238, 944 234, 333, 138, 214, 180, -1, 324, -1, 337, -1, 945 329, -1, 170, 126, 170, -1, -1, 66, 113, 145, 946 114, 318, -1, -1, 319, -1, 320, -1, 319, 320, 947 -1, 41, 113, 113, 321, 114, 114, -1, 322, -1, 948 321, 120, 322, -1, -1, 323, -1, 323, 113, 177, 949 114, -1, 278, -1, 240, -1, 241, -1, 235, -1, 950 325, 318, -1, 326, -1, 327, 318, -1, 328, 318, 951 -1, 141, -1, 113, 325, 114, -1, 156, 324, -1, 952 156, 234, 324, -1, 113, 326, 114, -1, 325, 355, 953 -1, 113, 326, 114, 355, -1, 113, 327, 114, 356, 954 -1, 113, 327, 114, -1, 113, 326, 114, 113, 138, 955 270, 139, 114, -1, 113, 328, 114, -1, 330, 318, 956 -1, 331, -1, 332, 318, -1, 325, 113, 138, 270, 957 139, 114, -1, 113, 331, 114, 113, 138, 270, 139, 958 114, -1, 113, 330, 114, -1, 156, 329, -1, 156, 959 234, 329, -1, 113, 331, 114, -1, 113, 331, 114, 960 355, -1, 113, 332, 114, 356, -1, 113, 332, 114, 961 -1, 334, -1, 335, -1, 336, -1, 325, 113, 277, 962 114, -1, 113, 335, 114, 113, 277, 114, -1, 113, 963 334, 114, -1, 156, 333, -1, 156, 234, 333, -1, 964 113, 335, 114, -1, 113, 335, 114, 355, -1, 113, 965 336, 114, 356, -1, 113, 336, 114, -1, 338, 318, 966 -1, 339, -1, 340, 318, -1, 341, 318, -1, 347, 967 -1, 113, 338, 114, -1, 156, 337, -1, 156, 234, 968 337, -1, 113, 339, 114, -1, 338, 355, -1, 113, 969 339, 114, 355, -1, 113, 340, 114, 356, -1, 113, 970 340, 114, -1, 338, 113, 138, 270, 139, 114, -1, 971 113, 339, 114, 113, 138, 270, 139, 114, -1, 113, 972 341, 114, -1, 325, 318, -1, 343, -1, 344, 318, 973 -1, 345, 318, -1, 156, 342, -1, 156, 234, 342, 974 -1, 113, 343, 114, -1, 325, 361, -1, 113, 343, 975 114, 355, -1, 113, 344, 114, 356, -1, 113, 344, 976 114, -1, 325, 113, 138, 270, 139, 114, -1, 113, 977 343, 114, 113, 138, 270, 139, 114, -1, 113, 345, 978 114, -1, 347, 318, -1, 348, -1, 349, 318, -1, 979 350, 318, -1, 76, -1, 77, -1, 156, 346, -1, 980 156, 234, 346, -1, 113, 348, 114, -1, 347, 361, 981 -1, 113, 348, 114, 361, -1, 347, 113, 138, 270, 982 139, 114, -1, 113, 348, 114, 113, 138, 270, 139, 983 114, -1, 352, -1, 353, 318, -1, 354, 318, -1, 984 156, -1, 156, 234, -1, 156, 351, -1, 156, 234, 985 351, -1, 113, 352, 114, -1, 355, -1, 113, 352, 986 114, 355, -1, 113, 353, 114, 356, -1, 113, 353, 987 114, -1, 113, 138, 270, 139, 114, -1, 113, 352, 988 114, 113, 138, 270, 139, 114, -1, 113, 354, 114, 989 -1, 115, 116, -1, 115, 116, 356, -1, 356, -1, 990 115, 138, 171, 139, 116, -1, 115, 138, 121, 139, 991 116, -1, 356, 115, 138, 171, 139, 116, -1, 356, 992 115, 138, 121, 139, 116, -1, 358, -1, 359, 318, 993 -1, 360, 318, -1, 156, -1, 156, 234, -1, 156, 994 357, -1, 156, 234, 357, -1, 113, 358, 114, -1, 995 361, -1, 113, 358, 114, 361, -1, 113, 359, 114, 996 356, -1, 113, 359, 114, -1, 113, 138, 270, 139, 997 114, -1, 113, 358, 114, 113, 138, 270, 139, 114, 998 -1, 113, 360, 114, -1, 362, -1, 362, 356, -1, 999 356, -1, 115, 116, -1, 115, 138, 234, 121, 139, 1000 116, -1, 115, 138, 234, 139, 116, -1, 115, 138, 1001 234, 171, 139, 116, -1, 115, 138, 7, 233, 171, 1002 139, 116, -1, 115, 138, 234, 7, 171, 139, 116, 1003 -1, 364, -1, 365, 318, -1, 366, 318, -1, 156, 1004 -1, 156, 234, -1, 156, 363, -1, 156, 234, 363, 1005 -1, 113, 364, 114, -1, 355, -1, 113, 364, 114, 1006 355, -1, 113, 365, 114, 356, -1, 113, 365, 114, 1007 -1, 113, 364, 114, 113, 138, 270, 139, 114, -1, 1008 113, 366, 114, -1, 368, -1, 376, -1, 234, 376, 1009 -1, 369, -1, 370, -1, 156, 232, -1, 234, 156, 1010 232, -1, 156, 377, -1, 234, 156, 377, -1, 156, 1011 367, -1, 234, 156, 367, -1, 115, 116, 232, -1, 1012 371, 232, -1, 115, 116, 356, 232, -1, 371, 356, 1013 232, -1, 356, 232, -1, 115, 116, 369, -1, 371, 1014 369, -1, 115, 116, 356, 369, -1, 371, 356, 369, 1015 -1, 356, 369, -1, 115, 138, 234, 121, 139, 116, 1016 -1, 115, 138, 234, 171, 139, 116, -1, 115, 138, 1017 238, 171, 139, 116, -1, 115, 138, 238, 234, 171, 1018 139, 116, -1, 376, -1, 234, 376, -1, 373, -1, 1019 374, -1, 375, -1, 156, 232, -1, 234, 156, 232, 1020 -1, 156, 377, -1, 234, 156, 377, -1, 156, 372, 1021 -1, 234, 156, 372, -1, 115, 116, 232, -1, 115, 1022 116, 356, 232, -1, 356, 232, -1, 115, 116, 374, 1023 -1, 115, 116, 356, 374, -1, 356, 374, -1, 115, 1024 138, 269, 139, 116, -1, 376, 113, 138, 266, 139, 1025 114, -1, 225, 113, 138, 266, 139, 114, -1, -1, 1026 120, -1, -1, 135, 171, -1 1029 1027 }; 1030 1028 … … 1081 1079 1810, 1811, 1816, 1817, 1823, 1825, 1828, 1830, 1832, 1855, 1082 1080 1856, 1858, 1860, 1865, 1866, 1868, 1873, 1878, 1879, 1885, 1083 1884, 1888, 1892, 1894, 1896, 1 898, 1904, 1905, 1910, 1915,1084 19 17, 1922, 1924, 1925, 1927, 1932, 1934, 1936, 1941, 1943,1085 19 48, 1953, 1961, 1967, 1966, 1980, 1981, 1986, 1987, 1991,1086 199 6, 2001, 2009, 2014, 2025, 2026, 2031, 2032, 2038, 2039,1087 204 3, 2044, 2045, 2048, 2047, 2058, 2067, 2073, 2079, 2088,1088 209 4, 2100, 2106, 2112, 2120, 2126, 2134, 2140, 2149, 2150,1089 215 1, 2155, 2161, 2162, 2168, 2169, 2173, 2174, 2179, 2185,1090 218 6, 2189, 2191, 2192, 2196, 2197, 2198, 2199, 2233, 2235,1091 2236, 22 38, 2243, 2248, 2253, 2255, 2257, 2262, 2264, 2266,1092 22 68, 2273, 2275, 2284, 2286, 2287, 2292, 2294, 2296, 2301,1093 2303, 230 5, 2310, 2312, 2314, 2323, 2324, 2325, 2329, 2331,1094 233 3, 2338, 2340, 2342, 2347, 2349, 2351, 2366, 2368, 2369,1095 237 1, 2376, 2377, 2382, 2384, 2386, 2391, 2393, 2395, 2397,1096 2402, 2404, 24 06, 2416, 2418, 2419, 2421, 2426, 2428, 2430,1097 2435, 2437, 2439, 244 1, 2446, 2448, 2450, 2481, 2483, 2484,1098 248 6, 2491, 2496, 2504, 2506, 2508, 2513, 2515, 2520, 2522,1099 253 6, 2537, 2539, 2544, 2546, 2548, 2550, 2552, 2557, 2558,1100 2560, 256 2, 2567, 2569, 2571, 2577, 2579, 2581, 2585, 2587,1101 2589, 2 591, 2605, 2606, 2608, 2613, 2615, 2617, 2619, 2621,1102 262 6, 2627, 2629, 2631, 2636, 2638, 2640, 2646, 2647, 2649,1103 265 8, 2661, 2663, 2666, 2668, 2670, 2683, 2684, 2686, 2691,1104 2693, 2695, 2697, 2 699, 2704, 2705, 2707, 2709, 2714, 2716,1105 272 4, 2725, 2726, 2731, 2732, 2736, 2738, 2740, 2742, 2744,1106 27 46, 2753, 2755, 2757, 2759, 2761, 2764, 2766, 2768, 2770,1107 277 2, 2777, 2779, 2781, 2786, 2812, 2813, 2815, 2819, 2820,1108 2824, 2826, 2828, 2830, 2832, 283 4, 2841, 2843, 2845, 2847,1109 2849, 285 1, 2856, 2863, 2865, 2883, 2885, 2890, 28911081 1884, 1888, 1892, 1894, 1896, 1902, 1903, 1908, 1913, 1915, 1082 1920, 1922, 1923, 1925, 1930, 1932, 1934, 1939, 1941, 1946, 1083 1951, 1959, 1965, 1964, 1978, 1979, 1984, 1985, 1989, 1994, 1084 1999, 2007, 2012, 2023, 2024, 2029, 2030, 2036, 2037, 2041, 1085 2042, 2043, 2046, 2045, 2056, 2065, 2071, 2077, 2086, 2092, 1086 2098, 2104, 2110, 2118, 2124, 2132, 2138, 2147, 2148, 2149, 1087 2153, 2159, 2160, 2166, 2167, 2171, 2172, 2177, 2183, 2184, 1088 2187, 2189, 2190, 2194, 2195, 2196, 2197, 2231, 2233, 2234, 1089 2236, 2241, 2246, 2251, 2253, 2255, 2260, 2262, 2264, 2266, 1090 2271, 2273, 2282, 2284, 2285, 2290, 2292, 2294, 2299, 2301, 1091 2303, 2308, 2310, 2312, 2321, 2322, 2323, 2327, 2329, 2331, 1092 2336, 2338, 2340, 2345, 2347, 2349, 2364, 2366, 2367, 2369, 1093 2374, 2375, 2380, 2382, 2384, 2389, 2391, 2393, 2395, 2400, 1094 2402, 2404, 2414, 2416, 2417, 2419, 2424, 2426, 2428, 2433, 1095 2435, 2437, 2439, 2444, 2446, 2448, 2479, 2481, 2482, 2484, 1096 2489, 2494, 2502, 2504, 2506, 2511, 2513, 2518, 2520, 2534, 1097 2535, 2537, 2542, 2544, 2546, 2548, 2550, 2555, 2556, 2558, 1098 2560, 2565, 2567, 2569, 2575, 2577, 2579, 2583, 2585, 2587, 1099 2589, 2603, 2604, 2606, 2611, 2613, 2615, 2617, 2619, 2624, 1100 2625, 2627, 2629, 2634, 2636, 2638, 2644, 2645, 2647, 2656, 1101 2659, 2661, 2664, 2666, 2668, 2681, 2682, 2684, 2689, 2691, 1102 2693, 2695, 2697, 2702, 2703, 2705, 2707, 2712, 2714, 2722, 1103 2723, 2724, 2729, 2730, 2734, 2736, 2738, 2740, 2742, 2744, 1104 2751, 2753, 2755, 2757, 2759, 2762, 2764, 2766, 2768, 2770, 1105 2775, 2777, 2779, 2784, 2810, 2811, 2813, 2817, 2818, 2822, 1106 2824, 2826, 2828, 2830, 2832, 2839, 2841, 2843, 2845, 2847, 1107 2849, 2854, 2861, 2863, 2881, 2883, 2888, 2889 1110 1108 }; 1111 1109 #endif … … 1121 1119 "SIGNED", "UNSIGNED", "ZERO_T", "ONE_T", "VALIST", "BOOL", "COMPLEX", 1122 1120 "IMAGINARY", "TYPEOF", "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", 1123 "FTYPE", "DTYPE", "T TYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE",1121 "FTYPE", "DTYPE", "TRAIT", "SIZEOF", "OFFSETOF", "ATTRIBUTE", 1124 1122 "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "DO", "WHILE", 1125 1123 "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE", "DISABLE", … … 1242 1240 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 1243 1241 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 1244 365, 366, 367, 368, 40, 41, 91, 93, 46, 123,1245 125, 44, 42, 38, 43, 45, 33, 126, 47, 37,1246 6 0, 62, 94, 124, 63, 58, 61, 591242 365, 366, 367, 40, 41, 91, 93, 46, 123, 125, 1243 44, 42, 38, 43, 45, 33, 126, 47, 37, 60, 1244 62, 94, 124, 63, 58, 61, 59 1247 1245 }; 1248 1246 # endif … … 1251 1249 static const yytype_uint16 yyr1[] = 1252 1250 { 1253 0, 13 8, 139, 140, 141, 141, 141, 141, 141, 142,1254 14 2, 142, 143, 143, 144, 144, 145, 145, 146, 147,1255 14 7, 148, 148, 148, 148, 148, 149, 149, 149, 149,1256 14 9, 149, 149, 149, 149, 149, 149, 149, 150, 150,1257 15 1, 151, 152, 152, 153, 153, 153, 153, 153, 153,1258 15 3, 154, 154, 154, 155, 155, 156, 156, 156, 156,1259 15 6, 156, 156, 156, 156, 156, 156, 156, 156, 156,1260 15 6, 156, 157, 157, 158, 158, 158, 158, 159, 159,1261 1 60, 160, 160, 160, 161, 161, 161, 162, 162, 162,1262 16 3, 163, 163, 163, 163, 164, 164, 164, 165, 165,1263 16 6, 166, 167, 167, 168, 168, 169, 169, 170, 170,1264 1 70, 171, 172, 172, 173, 173, 174, 174, 174, 174,1265 17 4, 174, 174, 174, 174, 174, 174, 174, 175, 175,1266 17 6, 176, 177, 177, 178, 178, 179, 179, 179, 179,1267 17 9, 179, 179, 179, 179, 180, 181, 181, 182, 182,1268 18 3, 183, 183, 183, 184, 184, 185, 186, 186, 186,1269 18 6, 186, 186, 187, 187, 187, 188, 188, 189, 189,1270 1 90, 190, 191, 192, 192, 193, 193, 194, 194, 195,1271 19 5, 195, 195, 196, 196, 197, 197, 198, 198, 198,1272 19 9, 199, 200, 200, 200, 200, 200, 200, 200, 200,1273 200, 200, 201, 201, 201, 202, 202, 202, 202, 202,1274 20 3, 203, 203, 203, 204, 205, 205, 205, 205, 205,1275 20 6, 206, 206, 206, 206, 207, 207, 208, 208, 209,1276 20 9, 210, 210, 211, 211, 211, 212, 212, 213, 213,1277 21 4, 214, 215, 215, 216, 216, 217, 217, 218, 218,1278 21 9, 219, 220, 220, 221, 221, 221, 221, 221, 222,1279 22 2, 222, 223, 223, 223, 224, 224, 224, 224, 224,1280 22 5, 225, 226, 226, 227, 227, 227, 228, 228, 228,1281 22 8, 228, 229, 229, 230, 230, 230, 230, 231, 231,1282 23 2, 232, 232, 232, 233, 233, 233, 233, 234, 234,1283 23 5, 235, 236, 236, 237, 237, 237, 237, 237, 238,1284 23 7, 239, 239, 239, 240, 240, 241, 241, 241, 241,1285 24 1, 241, 241, 241, 242, 242, 242, 242, 242, 242,1286 24 2, 242, 242, 242, 242, 242, 242, 242, 242, 243,1287 24 3, 243, 243, 243, 244, 244, 245, 245, 245, 245,1288 24 6, 246, 246, 246, 247, 247, 247, 247, 248, 248,1289 24 8, 249, 249, 249, 249, 250, 250, 250, 251, 251,1290 25 2, 252, 253, 252, 252, 252, 254, 254, 255, 255,1291 25 6, 256, 256, 256, 257, 257, 257, 257, 258, 258,1292 25 9, 259, 259, 259, 259, 260, 260, 261, 262, 263,1293 26 3, 264, 263, 265, 265, 266, 266, 267, 267, 268,1294 26 8, 268, 268, 268, 269, 269, 269, 269, 270, 270,1295 27 1, 271, 272, 272, 273, 273, 273, 273, 274, 274,1296 27 4, 274, 274, 275, 275, 275, 275, 275, 276, 276,1297 27 7, 277, 278, 278, 279, 279, 279, 280, 280, 280,1298 28 1, 281, 281, 282, 282, 282, 283, 283, 283, 283,1299 28 4, 284, 284, 285, 285, 286, 286, 286, 286, 286,1300 28 7, 287, 288, 288, 289, 289, 289, 289, 289, 290,1301 2 90, 290, 290, 291, 291, 291, 292, 293, 293, 295,1302 29 4, 294, 296, 296, 296, 296, 297, 297, 298, 298,1303 298, 29 9, 299, 299, 299, 300, 300, 300, 301, 301,1304 30 2, 302, 303, 304, 303, 305, 305, 306, 306, 307,1305 30 7, 307, 308, 308, 309, 309, 310, 310, 311, 311,1306 31 2, 312, 312, 313, 312, 312, 314, 314, 314, 315,1307 31 5, 315, 315, 315, 315, 315, 315, 315, 316, 316,1308 316, 317, 31 8, 318, 319, 319, 320, 320, 321, 322,1309 322, 32 3, 323, 323, 324, 324, 324, 324, 325, 325,1310 32 5, 325, 326, 326, 327, 327, 327, 328, 328, 328,1311 328, 32 9, 329, 330, 330, 330, 331, 331, 331, 332,1312 33 2, 332, 333, 333, 333, 334, 334, 334, 335, 335,1313 335, 33 6, 336, 336, 337, 337, 337, 338, 338, 338,1314 338, 33 9, 339, 340, 340, 340, 341, 341, 341, 341,1315 34 2, 342, 342, 343, 343, 343, 343, 344, 344, 344,1316 34 5, 345, 345, 345, 346, 346, 346, 347, 347, 347,1317 347, 34 8, 348, 349, 349, 349, 350, 350, 351, 351,1318 35 2, 352, 352, 353, 353, 353, 353, 353, 354, 354,1319 35 4, 354, 355, 355, 355, 356, 356, 356, 357, 357,1320 35 7, 357, 358, 358, 358, 359, 359, 359, 359, 359,1321 3 60, 360, 360, 360, 361, 361, 361, 362, 362, 362,1322 36 3, 363, 363, 363, 363, 363, 364, 364, 364, 365,1323 36 5, 365, 365, 365, 366, 366, 366, 366, 367, 367,1324 36 8, 368, 368, 369, 369, 370, 370, 370, 370, 370,1325 370, 37 1, 371, 371, 371, 371, 371, 371, 371, 371,1326 371, 37 2, 372, 372, 372, 373, 373, 373, 374, 374,1327 37 5, 375, 375, 375, 375, 375, 376, 376, 376, 376,1328 37 6, 376, 377, 378, 378, 379, 379, 380, 3801251 0, 137, 138, 139, 140, 140, 140, 140, 140, 141, 1252 141, 141, 142, 142, 143, 143, 144, 144, 145, 146, 1253 146, 147, 147, 147, 147, 147, 148, 148, 148, 148, 1254 148, 148, 148, 148, 148, 148, 148, 148, 149, 149, 1255 150, 150, 151, 151, 152, 152, 152, 152, 152, 152, 1256 152, 153, 153, 153, 154, 154, 155, 155, 155, 155, 1257 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 1258 155, 155, 156, 156, 157, 157, 157, 157, 158, 158, 1259 159, 159, 159, 159, 160, 160, 160, 161, 161, 161, 1260 162, 162, 162, 162, 162, 163, 163, 163, 164, 164, 1261 165, 165, 166, 166, 167, 167, 168, 168, 169, 169, 1262 169, 170, 171, 171, 172, 172, 173, 173, 173, 173, 1263 173, 173, 173, 173, 173, 173, 173, 173, 174, 174, 1264 175, 175, 176, 176, 177, 177, 178, 178, 178, 178, 1265 178, 178, 178, 178, 178, 179, 180, 180, 181, 181, 1266 182, 182, 182, 182, 183, 183, 184, 185, 185, 185, 1267 185, 185, 185, 186, 186, 186, 187, 187, 188, 188, 1268 189, 189, 190, 191, 191, 192, 192, 193, 193, 194, 1269 194, 194, 194, 195, 195, 196, 196, 197, 197, 197, 1270 198, 198, 199, 199, 199, 199, 199, 199, 199, 199, 1271 199, 199, 200, 200, 200, 201, 201, 201, 201, 201, 1272 202, 202, 202, 202, 203, 204, 204, 204, 204, 204, 1273 205, 205, 205, 205, 205, 206, 206, 207, 207, 208, 1274 208, 209, 209, 210, 210, 210, 211, 211, 212, 212, 1275 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, 1276 218, 218, 219, 219, 220, 220, 220, 220, 220, 221, 1277 221, 221, 222, 222, 222, 223, 223, 223, 223, 223, 1278 224, 224, 225, 225, 226, 226, 226, 227, 227, 227, 1279 227, 227, 228, 228, 229, 229, 229, 229, 230, 230, 1280 231, 231, 231, 231, 232, 232, 232, 232, 233, 233, 1281 234, 234, 235, 235, 236, 236, 236, 236, 236, 237, 1282 236, 238, 238, 238, 239, 239, 240, 240, 240, 240, 1283 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 1284 241, 241, 241, 241, 241, 241, 241, 241, 241, 242, 1285 242, 242, 242, 242, 243, 243, 244, 244, 244, 244, 1286 245, 245, 245, 245, 246, 246, 246, 246, 247, 247, 1287 247, 248, 248, 248, 248, 249, 249, 249, 250, 250, 1288 251, 251, 252, 251, 251, 251, 253, 253, 254, 254, 1289 255, 255, 255, 255, 256, 256, 256, 256, 257, 257, 1290 258, 258, 258, 258, 258, 259, 259, 260, 261, 262, 1291 262, 263, 262, 264, 264, 265, 265, 266, 266, 267, 1292 267, 267, 267, 267, 268, 268, 268, 268, 269, 269, 1293 270, 270, 271, 271, 272, 272, 272, 272, 273, 273, 1294 273, 273, 273, 274, 274, 274, 274, 274, 275, 275, 1295 276, 276, 277, 277, 278, 278, 278, 279, 279, 279, 1296 280, 280, 280, 281, 281, 281, 282, 282, 282, 282, 1297 283, 283, 283, 284, 284, 285, 285, 285, 285, 285, 1298 286, 286, 287, 287, 288, 288, 288, 288, 288, 289, 1299 289, 289, 289, 290, 290, 290, 291, 292, 292, 294, 1300 293, 293, 295, 295, 295, 296, 296, 297, 297, 297, 1301 298, 298, 298, 298, 299, 299, 299, 300, 300, 301, 1302 301, 302, 303, 302, 304, 304, 305, 305, 306, 306, 1303 306, 307, 307, 308, 308, 309, 309, 310, 310, 311, 1304 311, 311, 312, 311, 311, 313, 313, 313, 314, 314, 1305 314, 314, 314, 314, 314, 314, 314, 315, 315, 315, 1306 316, 317, 317, 318, 318, 319, 319, 320, 321, 321, 1307 322, 322, 322, 323, 323, 323, 323, 324, 324, 324, 1308 324, 325, 325, 326, 326, 326, 327, 327, 327, 327, 1309 328, 328, 329, 329, 329, 330, 330, 330, 331, 331, 1310 331, 332, 332, 332, 333, 333, 333, 334, 334, 334, 1311 335, 335, 335, 336, 336, 336, 337, 337, 337, 337, 1312 338, 338, 339, 339, 339, 340, 340, 340, 340, 341, 1313 341, 341, 342, 342, 342, 342, 343, 343, 343, 344, 1314 344, 344, 344, 345, 345, 345, 346, 346, 346, 346, 1315 347, 347, 348, 348, 348, 349, 349, 350, 350, 351, 1316 351, 351, 352, 352, 352, 352, 352, 353, 353, 353, 1317 353, 354, 354, 354, 355, 355, 355, 356, 356, 356, 1318 356, 357, 357, 357, 358, 358, 358, 358, 358, 359, 1319 359, 359, 359, 360, 360, 360, 361, 361, 361, 362, 1320 362, 362, 362, 362, 362, 363, 363, 363, 364, 364, 1321 364, 364, 364, 365, 365, 365, 365, 366, 366, 367, 1322 367, 367, 368, 368, 369, 369, 369, 369, 369, 369, 1323 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 1324 371, 371, 371, 371, 372, 372, 372, 373, 373, 374, 1325 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, 1326 375, 376, 377, 377, 378, 378, 379, 379 1329 1327 }; 1330 1328 … … 1381 1379 2, 2, 1, 2, 2, 5, 5, 7, 6, 1, 1382 1380 2, 2, 3, 1, 2, 2, 4, 2, 4, 0, 1383 4, 2, 1, 1, 1, 1, 0, 2, 5, 5, 1384 13, 1, 1, 3, 3, 2, 3, 3, 2, 4, 1385 1, 6, 9, 0, 11, 1, 3, 3, 3, 1, 1386 1, 5, 2, 5, 0, 1, 1, 3, 0, 1, 1387 1, 1, 1, 0, 6, 2, 1, 2, 4, 2, 1388 3, 3, 3, 4, 5, 5, 5, 6, 1, 1, 1389 1, 3, 0, 5, 0, 1, 1, 2, 6, 1, 1390 3, 0, 1, 4, 1, 1, 1, 1, 2, 1, 1391 2, 2, 1, 3, 2, 3, 3, 2, 4, 4, 1392 3, 8, 3, 2, 1, 2, 6, 8, 3, 2, 1393 3, 3, 4, 4, 3, 1, 1, 1, 4, 6, 1394 3, 2, 3, 3, 4, 4, 3, 2, 1, 2, 1381 4, 2, 1, 1, 1, 0, 2, 5, 5, 13, 1382 1, 1, 3, 3, 2, 3, 3, 2, 4, 1, 1383 6, 9, 0, 11, 1, 3, 3, 3, 1, 1, 1384 5, 2, 5, 0, 1, 1, 3, 0, 1, 1, 1385 1, 1, 0, 6, 2, 1, 2, 4, 2, 3, 1386 3, 3, 4, 5, 5, 5, 6, 1, 1, 1, 1387 3, 0, 5, 0, 1, 1, 2, 6, 1, 3, 1388 0, 1, 4, 1, 1, 1, 1, 2, 1, 2, 1395 1389 2, 1, 3, 2, 3, 3, 2, 4, 4, 3, 1396 6, 8, 3, 2, 1, 2, 2, 2, 3, 3, 1397 2, 4, 4, 3, 6, 8, 3, 2, 1, 2, 1398 2, 1, 1, 2, 3, 3, 2, 4, 6, 8, 1399 1, 2, 2, 1, 2, 2, 3, 3, 1, 4, 1400 4, 3, 5, 8, 3, 2, 3, 1, 5, 5, 1401 6, 6, 1, 2, 2, 1, 2, 2, 3, 3, 1402 1, 4, 4, 3, 5, 8, 3, 1, 2, 1, 1403 2, 6, 5, 6, 7, 7, 1, 2, 2, 1, 1404 2, 2, 3, 3, 1, 4, 4, 3, 8, 3, 1405 1, 1, 2, 1, 1, 2, 3, 2, 3, 2, 1406 3, 3, 2, 4, 3, 2, 3, 2, 4, 3, 1407 2, 6, 6, 6, 7, 1, 2, 1, 1, 1, 1408 2, 3, 2, 3, 2, 3, 3, 4, 2, 3, 1409 4, 2, 5, 6, 6, 0, 1, 0, 2 1390 8, 3, 2, 1, 2, 6, 8, 3, 2, 3, 1391 3, 4, 4, 3, 1, 1, 1, 4, 6, 3, 1392 2, 3, 3, 4, 4, 3, 2, 1, 2, 2, 1393 1, 3, 2, 3, 3, 2, 4, 4, 3, 6, 1394 8, 3, 2, 1, 2, 2, 2, 3, 3, 2, 1395 4, 4, 3, 6, 8, 3, 2, 1, 2, 2, 1396 1, 1, 2, 3, 3, 2, 4, 6, 8, 1, 1397 2, 2, 1, 2, 2, 3, 3, 1, 4, 4, 1398 3, 5, 8, 3, 2, 3, 1, 5, 5, 6, 1399 6, 1, 2, 2, 1, 2, 2, 3, 3, 1, 1400 4, 4, 3, 5, 8, 3, 1, 2, 1, 2, 1401 6, 5, 6, 7, 7, 1, 2, 2, 1, 2, 1402 2, 3, 3, 1, 4, 4, 3, 8, 3, 1, 1403 1, 2, 1, 1, 2, 3, 2, 3, 2, 3, 1404 3, 2, 4, 3, 2, 3, 2, 4, 3, 2, 1405 6, 6, 6, 7, 1, 2, 1, 1, 1, 2, 1406 3, 2, 3, 2, 3, 3, 4, 2, 3, 4, 1407 2, 5, 6, 6, 0, 1, 0, 2 1410 1408 }; 1411 1409 … … 1417 1415 298, 298, 318, 316, 319, 317, 320, 321, 304, 306, 1418 1416 305, 0, 307, 332, 324, 329, 327, 328, 326, 325, 1419 330, 331, 337, 338, 336, 333, 334, 335, 55 4, 554,1420 55 4, 0, 0, 0, 298, 225, 308, 322, 323, 9,1421 365, 0, 10, 16, 17, 0, 2, 72, 73, 57 2,1422 11, 298, 53 2, 530, 252, 3, 460, 3, 265, 0,1417 330, 331, 337, 338, 336, 333, 334, 335, 553, 553, 1418 553, 0, 0, 0, 298, 225, 308, 322, 323, 9, 1419 365, 0, 10, 16, 17, 0, 2, 72, 73, 571, 1420 11, 298, 531, 529, 252, 3, 460, 3, 265, 0, 1423 1421 3, 3, 3, 253, 3, 0, 0, 0, 299, 300, 1424 1422 302, 298, 311, 314, 346, 290, 339, 344, 291, 354, 1425 1423 292, 361, 358, 368, 0, 0, 369, 293, 479, 483, 1426 3, 3, 0, 2, 52 6, 531, 536, 303, 0, 0,1427 55 4, 584, 554, 2, 595, 596, 597, 298, 0, 738,1428 73 9, 0, 14, 0, 15, 298, 274, 275, 0, 299,1429 294, 295, 296, 297, 53 3, 309, 398, 555, 556, 376,1430 377, 14, 451, 452, 13, 447, 450, 0, 5 10, 505,1431 49 6, 451, 452, 0, 0, 535, 226, 0, 298, 0,1424 3, 3, 0, 2, 525, 530, 535, 303, 0, 0, 1425 553, 583, 553, 2, 594, 595, 596, 298, 0, 737, 1426 738, 0, 14, 0, 15, 298, 274, 275, 0, 299, 1427 294, 295, 296, 297, 532, 309, 398, 554, 555, 376, 1428 377, 14, 451, 452, 13, 447, 450, 0, 509, 504, 1429 495, 451, 452, 0, 0, 534, 226, 0, 298, 0, 1432 1430 0, 0, 0, 0, 0, 0, 0, 298, 298, 0, 1433 7 40, 299, 589, 601, 744, 737, 735, 742, 0, 0,1434 0, 259, 2, 0, 53 9, 445, 446, 444, 0, 0,1435 0, 0, 55 4, 0, 641, 642, 0, 0, 552, 548,1436 55 4, 569, 554, 554, 550, 2, 549, 554, 608, 554,1437 55 4, 611, 0, 0, 0, 298, 298, 316, 366, 2,1431 739, 299, 588, 600, 743, 736, 734, 741, 0, 0, 1432 0, 259, 2, 0, 538, 445, 446, 444, 0, 0, 1433 0, 0, 553, 0, 640, 641, 0, 0, 551, 547, 1434 553, 568, 553, 553, 549, 2, 548, 553, 607, 553, 1435 553, 610, 0, 0, 0, 298, 298, 316, 366, 2, 1438 1436 298, 266, 301, 312, 347, 359, 484, 0, 2, 0, 1439 1437 460, 267, 299, 340, 355, 362, 480, 0, 2, 0, 1440 1438 315, 341, 348, 349, 0, 356, 360, 363, 367, 452, 1441 1439 298, 378, 371, 375, 0, 400, 481, 485, 0, 0, 1442 0, 1, 298, 2, 53 7, 583, 585, 298, 2, 748,1443 299, 75 1, 552, 552, 0, 299, 0, 0, 277, 554,1444 5 50, 2, 298, 0, 0, 298, 557, 2, 508, 2,1445 56 1, 0, 0, 0, 0, 0, 0, 21, 69, 4,1440 0, 1, 298, 2, 536, 582, 584, 298, 2, 747, 1441 299, 750, 551, 551, 0, 299, 0, 0, 277, 553, 1442 549, 2, 298, 0, 0, 298, 556, 2, 507, 2, 1443 560, 0, 0, 0, 0, 0, 0, 21, 69, 4, 1446 1444 8, 19, 5, 6, 7, 0, 0, 298, 2, 74, 1447 1445 75, 76, 77, 57, 22, 58, 18, 26, 56, 78, 1448 1446 298, 0, 80, 84, 87, 90, 95, 98, 100, 102, 1449 104, 106, 108, 112, 50 2, 23, 458, 501, 0, 456,1450 457, 0, 57 3, 588, 591, 594, 600, 603, 606, 2,1451 74 6, 298, 749, 2, 72, 298, 3, 432, 0, 440,1447 104, 106, 108, 112, 501, 23, 458, 500, 0, 456, 1448 457, 0, 572, 587, 590, 593, 599, 602, 605, 2, 1449 745, 298, 748, 2, 72, 298, 3, 432, 0, 440, 1452 1450 299, 298, 311, 339, 291, 354, 361, 3, 3, 414, 1453 418, 428, 433, 479, 298, 434, 71 3, 714, 298, 435,1454 437, 2, 5 90, 602, 736, 2, 2, 254, 2, 465,1451 418, 428, 433, 479, 298, 434, 712, 713, 298, 435, 1452 437, 2, 589, 601, 735, 2, 2, 254, 2, 465, 1455 1453 0, 463, 462, 461, 146, 2, 2, 256, 2, 2, 1456 1454 255, 2, 285, 2, 286, 0, 284, 0, 0, 0, 1457 0, 0, 0, 0, 0, 0, 57 4, 613, 0, 460,1458 2, 56 8, 577, 667, 570, 571, 540, 298, 2, 607,1459 61 6, 609, 610, 0, 280, 298, 298, 345, 299, 0,1460 299, 298, 74 1, 745, 743, 541, 298, 552, 260, 268,1461 313, 0, 2, 54 2, 298, 506, 342, 343, 287, 357,1462 364, 0, 298, 0, 75 5, 405, 0, 482, 507, 257,1463 258, 52 7, 298, 442, 0, 298, 242, 0, 2, 244,1455 0, 0, 0, 0, 0, 0, 573, 612, 0, 460, 1456 2, 567, 576, 666, 569, 570, 539, 298, 2, 606, 1457 615, 608, 609, 0, 280, 298, 298, 345, 299, 0, 1458 299, 298, 740, 744, 742, 540, 298, 551, 260, 268, 1459 313, 0, 2, 541, 298, 505, 342, 343, 287, 357, 1460 364, 0, 298, 0, 754, 405, 0, 482, 506, 257, 1461 258, 526, 298, 442, 0, 298, 242, 0, 2, 244, 1464 1462 0, 299, 0, 262, 2, 263, 282, 0, 0, 2, 1465 298, 55 2, 298, 492, 494, 493, 495, 0, 0, 757,1466 0, 298, 0, 298, 497, 298, 567, 565, 566, 564,1467 0, 559, 562, 0, 0, 298, 64, 298, 78, 59,1468 298, 66, 298, 298, 62, 63, 2, 132, 0, 0,1469 454, 0, 453, 735, 298, 20, 31, 0, 34, 35,1470 40, 2, 0, 40, 118, 119, 120, 121, 122, 123,1471 12 4, 125, 126, 127, 117, 116, 0, 60, 61, 0,1463 298, 551, 298, 492, 494, 493, 0, 0, 756, 0, 1464 298, 0, 298, 496, 298, 566, 564, 565, 563, 0, 1465 558, 561, 0, 0, 298, 64, 298, 78, 59, 298, 1466 66, 298, 298, 62, 63, 2, 132, 0, 0, 454, 1467 0, 453, 734, 298, 20, 31, 0, 34, 35, 40, 1468 2, 0, 40, 118, 119, 120, 121, 122, 123, 124, 1469 125, 126, 127, 117, 116, 0, 60, 61, 0, 0, 1472 1470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1473 0, 0, 0, 0, 0, 0, 0, 0, 2, 653, 1474 459, 650, 554, 554, 658, 486, 298, 2, 592, 593, 1475 0, 604, 605, 0, 747, 750, 298, 298, 0, 715, 1476 299, 719, 710, 711, 717, 0, 2, 2, 675, 554, 1477 757, 624, 554, 554, 757, 554, 638, 554, 554, 689, 1478 441, 672, 554, 554, 680, 687, 298, 436, 299, 0, 1479 0, 298, 725, 299, 730, 757, 722, 298, 727, 757, 1480 298, 298, 0, 0, 21, 2, 0, 22, 0, 466, 1481 755, 0, 0, 472, 246, 0, 298, 0, 0, 0, 1482 552, 576, 580, 582, 612, 615, 619, 622, 575, 614, 1483 0, 288, 665, 0, 298, 281, 0, 0, 0, 0, 1484 279, 2, 0, 264, 543, 298, 0, 0, 298, 2, 1485 370, 390, 379, 0, 0, 384, 378, 756, 0, 0, 1486 403, 0, 299, 3, 421, 3, 425, 424, 598, 0, 1487 538, 298, 72, 3, 298, 440, 299, 3, 434, 435, 1488 2, 0, 0, 0, 491, 310, 298, 0, 487, 489, 1489 3, 2, 2, 0, 509, 3, 0, 561, 134, 0, 1490 0, 227, 0, 0, 0, 0, 41, 0, 0, 298, 1491 24, 0, 25, 0, 699, 704, 455, 696, 554, 554, 1492 0, 114, 3, 2, 32, 0, 38, 0, 2, 29, 1493 0, 113, 81, 82, 83, 85, 86, 88, 89, 93, 1494 94, 91, 92, 96, 97, 99, 101, 103, 105, 107, 1495 0, 0, 298, 0, 0, 0, 654, 655, 651, 652, 1496 504, 503, 298, 0, 721, 298, 726, 299, 298, 669, 1497 712, 668, 2, 298, 0, 0, 0, 0, 0, 0, 1498 0, 0, 690, 0, 676, 627, 643, 677, 2, 623, 1499 630, 438, 625, 626, 439, 2, 637, 646, 639, 640, 1500 673, 674, 688, 716, 720, 718, 757, 272, 2, 752, 1501 2, 429, 724, 729, 430, 3, 408, 3, 3, 3, 1502 460, 0, 0, 2, 474, 471, 756, 0, 467, 2, 1503 470, 473, 0, 298, 247, 269, 3, 276, 278, 0, 1504 460, 2, 578, 579, 2, 617, 618, 0, 666, 544, 1505 3, 351, 350, 353, 352, 298, 545, 0, 546, 378, 1506 0, 0, 298, 0, 0, 699, 388, 391, 395, 554, 1507 395, 394, 387, 380, 554, 382, 385, 298, 405, 399, 1508 111, 406, 755, 0, 0, 443, 245, 0, 0, 3, 1509 2, 675, 436, 0, 534, 0, 757, 758, 496, 0, 1510 298, 298, 298, 0, 558, 560, 135, 0, 0, 220, 1511 0, 0, 0, 228, 229, 65, 0, 67, 70, 71, 1512 0, 133, 0, 0, 0, 700, 701, 697, 698, 465, 1513 79, 115, 130, 3, 114, 0, 28, 40, 3, 0, 1514 37, 110, 0, 3, 657, 661, 664, 656, 3, 599, 1515 723, 728, 2, 72, 298, 3, 3, 299, 0, 3, 1516 629, 633, 636, 645, 679, 683, 686, 298, 3, 628, 1517 644, 678, 298, 298, 431, 298, 298, 0, 0, 0, 1518 0, 261, 111, 0, 3, 3, 0, 468, 0, 464, 1519 0, 0, 250, 298, 0, 0, 134, 0, 0, 0, 1520 0, 0, 134, 0, 0, 114, 114, 21, 0, 0, 1521 3, 136, 137, 2, 148, 138, 139, 140, 141, 142, 1522 143, 150, 152, 0, 0, 0, 289, 298, 298, 554, 1523 0, 547, 298, 381, 383, 0, 397, 700, 392, 396, 1524 393, 386, 390, 373, 404, 0, 586, 2, 671, 670, 1525 0, 676, 2, 488, 490, 511, 3, 519, 520, 0, 1526 2, 515, 3, 3, 0, 0, 563, 227, 0, 0, 1527 0, 227, 0, 0, 703, 707, 709, 702, 755, 114, 1528 0, 3, 54, 0, 54, 54, 3, 42, 44, 39, 1529 0, 3, 109, 0, 2, 659, 660, 0, 298, 0, 1530 0, 0, 3, 645, 0, 2, 631, 632, 2, 647, 1531 2, 681, 682, 0, 0, 72, 0, 3, 3, 3, 1532 3, 416, 415, 419, 754, 2, 2, 753, 0, 0, 1533 0, 0, 3, 469, 3, 0, 248, 151, 3, 299, 1534 298, 0, 0, 0, 0, 2, 0, 196, 0, 194, 1535 0, 0, 0, 0, 0, 0, 0, 554, 0, 156, 1536 153, 298, 0, 0, 271, 283, 3, 3, 553, 620, 1537 374, 389, 402, 298, 270, 298, 0, 522, 499, 298, 1538 0, 0, 498, 513, 0, 0, 0, 221, 0, 230, 1539 68, 2, 705, 706, 0, 131, 128, 0, 51, 2, 1540 45, 52, 53, 0, 0, 0, 0, 27, 0, 662, 1541 298, 587, 731, 732, 733, 0, 684, 298, 298, 298, 1542 3, 3, 0, 692, 0, 0, 0, 0, 298, 298, 1543 3, 551, 475, 476, 0, 251, 299, 0, 0, 0, 1544 0, 298, 197, 195, 192, 0, 198, 0, 0, 0, 1545 0, 202, 205, 203, 199, 0, 200, 134, 40, 149, 1546 147, 249, 0, 0, 423, 427, 426, 0, 516, 2, 1547 517, 2, 518, 512, 298, 233, 0, 231, 0, 233, 1548 298, 36, 129, 55, 0, 43, 33, 2, 49, 2, 1549 47, 30, 3, 734, 3, 3, 3, 0, 0, 691, 1550 693, 634, 648, 273, 2, 413, 3, 412, 0, 478, 1551 134, 0, 0, 134, 3, 0, 134, 193, 0, 2, 1552 2, 214, 204, 0, 0, 0, 145, 0, 581, 621, 1553 2, 0, 0, 2, 234, 0, 0, 222, 0, 3, 1554 3, 0, 0, 0, 0, 0, 0, 694, 695, 298, 1555 0, 477, 157, 0, 0, 2, 170, 134, 159, 0, 1556 187, 0, 134, 0, 2, 161, 0, 2, 0, 2, 1557 2, 2, 201, 37, 298, 521, 523, 514, 0, 0, 1558 0, 0, 0, 0, 3, 3, 663, 635, 649, 685, 1559 417, 134, 163, 166, 0, 165, 169, 3, 172, 171, 1560 0, 134, 189, 134, 3, 0, 298, 0, 298, 0, 1561 2, 0, 2, 144, 2, 235, 236, 0, 232, 223, 1562 708, 46, 0, 0, 158, 0, 0, 168, 238, 173, 1563 2, 240, 188, 0, 191, 177, 206, 3, 215, 219, 1564 208, 3, 0, 298, 0, 298, 0, 0, 0, 50, 1565 48, 164, 167, 134, 0, 174, 298, 134, 134, 0, 1566 178, 0, 0, 699, 216, 217, 218, 0, 207, 3, 1567 209, 3, 298, 224, 237, 154, 175, 160, 134, 241, 1568 190, 185, 183, 179, 162, 134, 0, 700, 0, 0, 1569 0, 0, 155, 176, 186, 180, 184, 183, 181, 3, 1570 3, 0, 0, 500, 182, 210, 212, 3, 3, 211, 1571 213 1471 0, 0, 0, 0, 0, 0, 0, 2, 652, 459, 1472 649, 553, 553, 657, 486, 298, 2, 591, 592, 0, 1473 603, 604, 0, 746, 749, 298, 298, 0, 714, 299, 1474 718, 709, 710, 716, 0, 2, 2, 674, 553, 756, 1475 623, 553, 553, 756, 553, 637, 553, 553, 688, 441, 1476 671, 553, 553, 679, 686, 298, 436, 299, 0, 0, 1477 298, 724, 299, 729, 756, 721, 298, 726, 756, 298, 1478 298, 0, 0, 21, 2, 0, 22, 0, 466, 754, 1479 0, 0, 472, 246, 0, 298, 0, 0, 0, 551, 1480 575, 579, 581, 611, 614, 618, 621, 574, 613, 0, 1481 288, 664, 0, 298, 281, 0, 0, 0, 0, 279, 1482 2, 0, 264, 542, 298, 0, 0, 298, 2, 370, 1483 390, 379, 0, 0, 384, 378, 755, 0, 0, 403, 1484 0, 299, 3, 421, 3, 425, 424, 597, 0, 537, 1485 298, 72, 3, 298, 440, 299, 3, 434, 435, 2, 1486 0, 0, 0, 491, 310, 298, 0, 487, 489, 3, 1487 2, 2, 0, 508, 3, 0, 560, 134, 0, 0, 1488 227, 0, 0, 0, 0, 41, 0, 0, 298, 24, 1489 0, 25, 0, 698, 703, 455, 695, 553, 553, 0, 1490 114, 3, 2, 32, 0, 38, 0, 2, 29, 0, 1491 113, 81, 82, 83, 85, 86, 88, 89, 93, 94, 1492 91, 92, 96, 97, 99, 101, 103, 105, 107, 0, 1493 0, 298, 0, 0, 0, 653, 654, 650, 651, 503, 1494 502, 298, 0, 720, 298, 725, 299, 298, 668, 711, 1495 667, 2, 298, 0, 0, 0, 0, 0, 0, 0, 1496 0, 689, 0, 675, 626, 642, 676, 2, 622, 629, 1497 438, 624, 625, 439, 2, 636, 645, 638, 639, 672, 1498 673, 687, 715, 719, 717, 756, 272, 2, 751, 2, 1499 429, 723, 728, 430, 3, 408, 3, 3, 3, 460, 1500 0, 0, 2, 474, 471, 755, 0, 467, 2, 470, 1501 473, 0, 298, 247, 269, 3, 276, 278, 0, 460, 1502 2, 577, 578, 2, 616, 617, 0, 665, 543, 3, 1503 351, 350, 353, 352, 298, 544, 0, 545, 378, 0, 1504 0, 298, 0, 0, 698, 388, 391, 395, 553, 395, 1505 394, 387, 380, 553, 382, 385, 298, 405, 399, 111, 1506 406, 754, 0, 0, 443, 245, 0, 0, 3, 2, 1507 674, 436, 0, 533, 0, 756, 757, 495, 0, 298, 1508 298, 298, 0, 557, 559, 135, 0, 0, 220, 0, 1509 0, 0, 228, 229, 65, 0, 67, 70, 71, 0, 1510 133, 0, 0, 0, 699, 700, 696, 697, 465, 79, 1511 115, 130, 3, 114, 0, 28, 40, 3, 0, 37, 1512 110, 0, 3, 656, 660, 663, 655, 3, 598, 722, 1513 727, 2, 72, 298, 3, 3, 299, 0, 3, 628, 1514 632, 635, 644, 678, 682, 685, 298, 3, 627, 643, 1515 677, 298, 298, 431, 298, 298, 0, 0, 0, 0, 1516 261, 111, 0, 3, 3, 0, 468, 0, 464, 0, 1517 0, 250, 298, 0, 0, 134, 0, 0, 0, 0, 1518 0, 134, 0, 0, 114, 114, 21, 0, 0, 3, 1519 136, 137, 2, 148, 138, 139, 140, 141, 142, 143, 1520 150, 152, 0, 0, 0, 289, 298, 298, 553, 0, 1521 546, 298, 381, 383, 0, 397, 699, 392, 396, 393, 1522 386, 390, 373, 404, 0, 585, 2, 670, 669, 0, 1523 675, 2, 488, 490, 510, 3, 518, 519, 0, 2, 1524 514, 3, 3, 0, 0, 562, 227, 0, 0, 0, 1525 227, 0, 0, 702, 706, 708, 701, 754, 114, 0, 1526 3, 54, 0, 54, 54, 3, 42, 44, 39, 0, 1527 3, 109, 0, 2, 658, 659, 0, 298, 0, 0, 1528 0, 3, 644, 0, 2, 630, 631, 2, 646, 2, 1529 680, 681, 0, 0, 72, 0, 3, 3, 3, 3, 1530 416, 415, 419, 753, 2, 2, 752, 0, 0, 0, 1531 0, 3, 469, 3, 0, 248, 151, 3, 299, 298, 1532 0, 0, 0, 0, 2, 0, 196, 0, 194, 0, 1533 0, 0, 0, 0, 0, 0, 553, 0, 156, 153, 1534 298, 0, 0, 271, 283, 3, 3, 552, 619, 374, 1535 389, 402, 298, 270, 298, 0, 521, 498, 298, 0, 1536 0, 497, 512, 0, 0, 0, 221, 0, 230, 68, 1537 2, 704, 705, 0, 131, 128, 0, 51, 2, 45, 1538 52, 53, 0, 0, 0, 0, 27, 0, 661, 298, 1539 586, 730, 731, 732, 0, 683, 298, 298, 298, 3, 1540 3, 0, 691, 0, 0, 0, 0, 298, 298, 3, 1541 550, 475, 476, 0, 251, 299, 0, 0, 0, 0, 1542 298, 197, 195, 192, 0, 198, 0, 0, 0, 0, 1543 202, 205, 203, 199, 0, 200, 134, 40, 149, 147, 1544 249, 0, 0, 423, 427, 426, 0, 515, 2, 516, 1545 2, 517, 511, 298, 233, 0, 231, 0, 233, 298, 1546 36, 129, 55, 0, 43, 33, 2, 49, 2, 47, 1547 30, 3, 733, 3, 3, 3, 0, 0, 690, 692, 1548 633, 647, 273, 2, 413, 3, 412, 0, 478, 134, 1549 0, 0, 134, 3, 0, 134, 193, 0, 2, 2, 1550 214, 204, 0, 0, 0, 145, 0, 580, 620, 2, 1551 0, 0, 2, 234, 0, 0, 222, 0, 3, 3, 1552 0, 0, 0, 0, 0, 0, 693, 694, 298, 0, 1553 477, 157, 0, 0, 2, 170, 134, 159, 0, 187, 1554 0, 134, 0, 2, 161, 0, 2, 0, 2, 2, 1555 2, 201, 37, 298, 520, 522, 513, 0, 0, 0, 1556 0, 0, 0, 3, 3, 662, 634, 648, 684, 417, 1557 134, 163, 166, 0, 165, 169, 3, 172, 171, 0, 1558 134, 189, 134, 3, 0, 298, 0, 298, 0, 2, 1559 0, 2, 144, 2, 235, 236, 0, 232, 223, 707, 1560 46, 0, 0, 158, 0, 0, 168, 238, 173, 2, 1561 240, 188, 0, 191, 177, 206, 3, 215, 219, 208, 1562 3, 0, 298, 0, 298, 0, 0, 0, 50, 48, 1563 164, 167, 134, 0, 174, 298, 134, 134, 0, 178, 1564 0, 0, 698, 216, 217, 218, 0, 207, 3, 209, 1565 3, 298, 224, 237, 154, 175, 160, 134, 241, 190, 1566 185, 183, 179, 162, 134, 0, 699, 0, 0, 0, 1567 0, 155, 176, 186, 180, 184, 183, 181, 3, 3, 1568 0, 0, 499, 182, 210, 212, 3, 3, 211, 213 1572 1569 }; 1573 1570 … … 1575 1572 static const yytype_int16 yydefgoto[] = 1576 1573 { 1577 -1, 80 3, 466, 303, 49, 135, 136, 304, 305, 306,1578 307, 308, 75 5, 756, 1116, 1117, 1118, 1228, 309, 380,1574 -1, 802, 466, 303, 49, 135, 136, 304, 305, 306, 1575 307, 308, 754, 755, 1115, 1116, 1117, 1227, 309, 380, 1579 1576 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 1580 321, 322, 323, 101 3, 517, 962, 546, 325, 963, 936,1581 103 9, 1505, 1041, 1042, 1043, 1044, 1506, 1045, 1046, 1423,1582 142 4, 1386, 1387, 1388, 1484, 1485, 1489, 1490, 1525, 1526,1583 104 7, 1345, 1048, 1049, 1281, 1282, 1283, 1467, 1050, 147,1584 94 2, 943, 944, 1365, 1447, 1459, 1460, 467, 468, 863,1585 86 4, 1021, 53, 54, 55, 56, 57, 347, 159, 60,1577 321, 322, 323, 1012, 516, 961, 545, 325, 962, 935, 1578 1038, 1504, 1040, 1041, 1042, 1043, 1505, 1044, 1045, 1422, 1579 1423, 1385, 1386, 1387, 1483, 1484, 1488, 1489, 1524, 1525, 1580 1046, 1344, 1047, 1048, 1280, 1281, 1282, 1466, 1049, 147, 1581 941, 942, 943, 1364, 1446, 1458, 1459, 467, 468, 862, 1582 863, 1020, 53, 54, 55, 56, 57, 347, 159, 60, 1586 1583 61, 62, 63, 64, 349, 66, 67, 265, 69, 70, 1587 1584 275, 351, 352, 73, 74, 75, 120, 77, 205, 354, 1588 121, 80, 122, 82, 83, 453, 84, 452, 68 2, 683,1589 68 4, 896, 1068, 897, 85, 86, 456, 454, 690, 845,1590 84 6, 357, 358, 693, 694, 695, 359, 360, 361, 362,1591 464, 178, 137, 138, 52 1, 327, 171, 639, 640, 641,1592 64 2, 643, 87, 123, 89, 488, 489, 928, 490, 278,1593 49 4, 328, 90, 139, 140, 91, 1304, 1090, 1091, 1092,1594 109 3, 92, 93, 711, 94, 274, 95, 96, 188, 1015,1595 67 3, 411, 127, 97, 500, 501, 502, 189, 269, 191,1585 121, 80, 122, 82, 83, 453, 84, 452, 681, 682, 1586 683, 895, 1067, 896, 85, 86, 456, 454, 689, 844, 1587 845, 357, 358, 692, 693, 694, 359, 360, 361, 362, 1588 464, 178, 137, 138, 520, 327, 171, 638, 639, 640, 1589 641, 642, 87, 123, 89, 487, 488, 927, 489, 278, 1590 493, 328, 90, 139, 140, 91, 1303, 1089, 1090, 1091, 1591 1092, 92, 93, 710, 94, 274, 95, 96, 188, 1014, 1592 672, 411, 127, 97, 499, 500, 501, 189, 269, 191, 1596 1593 192, 193, 270, 100, 101, 102, 103, 104, 105, 106, 1597 196, 197, 198, 199, 200, 81 5, 601, 602, 603, 604,1598 201, 60 6, 607, 608, 570, 571, 572, 573, 745, 107,1599 6 10, 611, 612, 613, 614, 615, 956, 747, 748, 749,1600 59 1, 365, 366, 367, 368, 329, 165, 109, 110, 111,1601 370, 68 8, 7181594 196, 197, 198, 199, 200, 814, 600, 601, 602, 603, 1595 201, 605, 606, 607, 569, 570, 571, 572, 744, 107, 1596 609, 610, 611, 612, 613, 614, 955, 746, 747, 748, 1597 590, 365, 366, 367, 368, 329, 165, 109, 110, 111, 1598 370, 687, 717 1602 1599 }; 1603 1600 1604 1601 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 1605 1602 STATE-NUM. */ 1606 #define YYPACT_NINF -126 31603 #define YYPACT_NINF -1267 1607 1604 static const yytype_int16 yypact[] = 1608 1605 { 1609 6864, 4432, -1263, 10, -1263, -1263, -1263, -1263, -1263, -1263, 1610 -1263, -12, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1611 -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 67, 67, 1612 67, 564, 950, 20, 6985, 166, -1263, -1263, -1263, -1263, 1613 -1263, 71, -1263, -1263, -1263, 1431, 111, -1263, -1263, -1263, 1614 -1263, 3253, -1263, -1263, -1263, -1263, 83, 193, -1263, 1119, 1615 -1263, -1263, -1263, -1263, 213, 1691, 349, 98, 7106, -1263, 1616 -1263, 3253, 817, -1263, -1263, 596, 492, 5210, 1011, 1044, 1617 596, 1122, -1263, -1263, 838, 957, -1263, 596, 1203, -1263, 1618 236, -1263, 406, 508, -1263, -1263, -1263, -1263, 429, 193, 1619 67, -1263, 67, -1263, -1263, -1263, -1263, 4697, 1119, -1263, 1620 -1263, 1119, -1263, 434, -1263, 7806, -1263, -1263, 2149, 8896, 1621 -1263, 644, 644, 644, -1263, -1263, -1263, 67, -1263, -1263, 1622 -1263, 436, 458, 468, -1263, -1263, -1263, 480, -1263, -1263, 1623 -1263, -1263, -1263, 498, 503, -1263, -1263, 77, 8347, 2436, 1624 255, 519, 522, 535, 547, 585, 603, 8929, 6488, 597, 1625 -1263, 4574, -1263, -1263, -1263, -1263, 608, -1263, -37, 5487, 1626 5487, -1263, 539, 241, -1263, -1263, -1263, -1263, 624, 287, 1627 313, 327, 67, 621, -1263, -1263, 1691, 2813, 734, -1263, 1628 120, -1263, 67, 67, 193, -1263, -1263, 204, -1263, 67, 1629 67, -1263, 2931, 664, 675, 644, 6274, -1263, -1263, -1263, 1630 3253, -1263, -1263, 596, -1263, -1263, -1263, 193, -1263, 1119, 1631 83, -1263, 7457, -1263, 644, 644, 644, 193, -1263, 564, 1632 -1263, 3379, -1263, -1263, 671, 644, -1263, 644, -1263, 71, 1633 8347, -1263, 715, -1263, 950, 724, 644, -1263, 564, 704, 1634 714, -1263, 6985, 544, -1263, -1263, -1263, 8708, -1263, -1263, 1635 8263, -1263, 734, 123, 9697, 8896, 2149, 2931, -1263, 205, 1636 -1263, -1263, 7806, 1119, 738, 5343, -1263, -1263, 211, -1263, 1637 10116, 739, 650, 9756, 757, 9697, 9815, -1263, 763, -1263, 1638 -1263, -1263, -1263, -1263, -1263, 9874, 9874, 8111, 111, -1263, 1639 -1263, -1263, -1263, -1263, -1263, -1263, 795, -1263, 1259, 2219, 1640 8347, 9697, -1263, 496, 315, 375, 430, 719, 760, 770, 1641 771, 807, 114, -1263, -1263, -1263, 814, -1263, 402, -1263, 1642 -1263, 2436, -1263, -1263, 104, 792, -1263, 372, 792, -1263, 1643 -1263, 4697, -1263, 802, 812, 8465, -1263, -1263, 721, 1811, 1644 7892, 6274, 596, -1263, 596, 644, 644, -1263, -1263, -1263, 1645 -1263, -1263, -1263, 644, 4697, 1119, -1263, -1263, 8929, 1749, 1646 -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 4858, 1647 9697, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1648 -1263, -1263, -1263, -1263, -1263, 2149, -1263, 677, 823, 827, 1649 829, 862, 831, 834, 836, 2813, -1263, -1263, 842, 83, 1650 841, -1263, -1263, 837, -1263, -1263, -1263, 8708, -1263, -1263, 1651 -1263, -1263, -1263, 2931, -1263, 8347, 8347, -1263, 644, 2149, 1652 6398, 7967, -1263, -1263, -1263, -1263, 8708, 123, -1263, -1263, 1653 596, 193, -1263, -1263, 8708, -1263, 5038, -1263, -1263, 644, 1654 644, 474, 8741, 848, 849, 824, 850, 644, -1263, -1263, 1655 -1263, -1263, 9167, -1263, 507, 10150, -1263, 193, 853, -1263, 1656 2149, 10237, 9933, -1263, -1263, -1263, -1263, 898, 2931, -1263, 1657 7967, 734, 5424, -1263, -1263, -1263, -1263, 1676, 514, 844, 1658 950, 5343, 1027, 7806, -1263, 5343, -1263, -1263, -1263, -1263, 1659 545, -1263, 859, 650, 244, 8111, -1263, 9014, -1263, -1263, 1660 8111, -1263, 8229, 8111, -1263, -1263, 111, -1263, 548, 867, 1661 926, 872, -1263, -1263, 6240, -1263, -1263, 387, -1263, -1263, 1662 9697, -1263, 467, 9697, -1263, -1263, -1263, -1263, -1263, -1263, 1663 -1263, -1263, -1263, -1263, -1263, -1263, 9697, -1263, -1263, 9697, 1664 9697, 9697, 9697, 9697, 9697, 9697, 9697, 9697, 9697, 9697, 1665 9697, 9697, 9697, 9697, 9697, 9697, 9697, 4047, 814, 1636, 1666 -1263, -1263, 67, 67, -1263, -1263, 8347, -1263, -1263, 837, 1667 544, -1263, 837, 9992, -1263, -1263, 8929, 6240, 873, -1263, 1668 8896, -1263, -1263, 608, -1263, 880, 787, 882, 2301, 259, 1669 844, -1263, 67, 67, 844, 286, -1263, 67, 67, 837, 1670 -1263, -1263, 67, 67, -1263, 792, 9047, 1119, 10388, 450, 1671 493, 9047, -1263, 8263, -1263, 844, -1263, 4697, -1263, -35, 1672 7577, 7577, 1119, 5632, 869, -1263, 326, 874, 889, -1263, 1673 881, 5487, 342, -1263, 977, 1119, 7577, 544, 2149, 544, 1674 734, 382, 792, -1263, -1263, 405, 792, -1263, -1263, -1263, 1675 650, -1263, 792, 193, 9167, -1263, 570, 918, 602, 921, 1676 -1263, 802, 193, -1263, -1263, 8708, 193, 940, 9014, 111, 1677 -1263, 1310, -1263, 353, 395, 950, -1263, 950, 941, 9697, 1678 -1263, 950, 10388, -1263, -1263, 948, -1263, -1263, -1263, 544, 1679 -1263, 10313, 812, -1263, 7577, 987, 7892, -1263, -1263, 608, 1680 955, 960, 1676, 3085, -1263, -1263, 5343, 9697, -1263, -1263, 1681 947, -1263, -1263, 956, -1263, 947, 967, 10116, 9697, 949, 1682 954, 180, 972, 975, 984, 993, -1263, 1002, 1005, 6240, 1683 -1263, 9697, -1263, 926, 1965, -1263, -1263, -1263, 67, 67, 1684 9638, 9697, 992, -1263, -1263, 615, -1263, 9697, -1263, -1263, 1685 711, -1263, -1263, -1263, -1263, 496, 496, 315, 315, 375, 1686 375, 375, 375, 430, 430, 719, 760, 770, 771, 807, 1687 9697, 330, 9167, 1006, 1007, 1008, 1636, -1263, -1263, -1263, 1688 -1263, -1263, 9167, 620, -1263, 4697, -1263, 6612, 8583, -1263, 1689 -1263, -1263, 787, 9167, 937, 1012, 1014, 1022, 1023, 1024, 1690 1029, 1036, -1263, 3424, 2301, -1263, -1263, -1263, -1263, -1263, 1691 -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1692 -1263, -1263, 837, -1263, -1263, -1263, 844, -1263, -1263, -1263, 1693 -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1039, 1043, -1263, 1694 83, 992, 5632, -1263, -1263, -1263, 4858, 1042, -1263, -1263, 1695 -1263, -1263, 950, 5809, 1095, -1263, -1263, -1263, -1263, 1030, 1696 83, -1263, -1263, 837, -1263, -1263, 837, 1048, 837, -1263, 1697 -1263, -1263, -1263, -1263, -1263, 6488, -1263, 193, -1263, -1263, 1698 407, 410, 6488, 2038, 9697, 2697, -1263, -1263, 1037, 53, 1699 1037, -1263, 950, -1263, 67, -1263, -1263, 8781, 824, -1263, 1700 -1263, -1263, 849, 1059, 1021, -1263, -1263, 1062, 1063, -1263, 1701 987, 2296, -1263, 528, -1263, 3085, 844, -1263, -1263, 1071, 1702 5343, 7806, 8347, 1073, -1263, -1263, 1074, 1084, 1066, -1263, 1703 9697, 1088, 282, 1083, -1263, 1091, 544, 1091, -1263, -1263, 1704 1091, -1263, 1097, 1105, 1115, 1965, -1263, -1263, -1263, 4858, 1705 -1263, -1263, -1263, 1113, 9697, 605, -1263, 9697, -1263, 605, 1706 -1263, -1263, 9697, -1263, 424, 792, -1263, -1263, -1263, -1263, 1707 -1263, -1263, -1263, 812, 8465, -1263, -1263, 6736, 1120, -1263, 1708 568, 792, -1263, 594, 631, 792, -1263, 644, 3969, -1263, 1709 -1263, -1263, 9167, 9167, -1263, 7967, 7967, 1123, 1118, 1127, 1710 1125, -1263, 558, 212, 992, -1263, 605, -1263, 5487, -1263, 1711 9697, 420, -1263, 6116, 1129, 1135, 9579, 1136, 1137, 146, 1712 206, 181, 9697, 1140, 193, 9697, 9697, 1106, 305, 1124, 1713 -1263, -1263, -1263, 1143, -1263, -1263, -1263, -1263, -1263, -1263, 1714 -1263, -1263, -1263, 950, 1141, 9697, -1263, 9167, 9167, 67, 1715 1150, -1263, 8856, -1263, -1263, 722, -1263, 2697, -1263, -1263, 1716 -1263, -1263, 1310, -1263, -1263, 1148, -1263, -1263, -1263, -1263, 1717 1154, 2296, -1263, -1263, 1139, -1263, 947, -1263, -1263, 2149, 1718 1158, -1263, -1263, -1263, 627, 1151, -1263, 180, 1138, 9697, 1719 1146, 180, 180, 1165, 653, 792, -1263, -1263, 881, 9697, 1720 1164, 1113, -1263, 1068, -1263, -1263, 1163, -1263, 219, -1263, 1721 1168, 1163, -1263, 1171, -1263, -1263, 837, 1173, 6364, 1172, 1722 1175, 1177, -1263, -1263, 1180, -1263, -1263, 837, -1263, -1263, 1723 -1263, -1263, 837, 9697, 9697, 812, 1179, -1263, -1263, -1263, 1724 -1263, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 9697, 9697, 1725 1182, 1184, 1163, -1263, -1263, 950, -1263, -1263, -1263, 7382, 1726 7806, 9697, 9697, 1240, 9697, -1263, 1160, -1263, 1170, -1263, 1727 1174, 9697, 1178, 9697, 1032, 1185, 59, 67, 1380, -1263, 1728 -1263, 5809, 1189, 442, -1263, -1263, -1263, -1263, -1263, -1263, 1729 -1263, -1263, -1263, 9395, -1263, 7967, 1190, -1263, -1263, 7806, 1730 454, 456, -1263, 1197, 1193, 650, 1210, -1263, 295, -1263, 1731 -1263, -1263, -1263, 837, 1213, -1263, -1263, 1220, 1252, -1263, 1732 -1263, 1252, 1252, 605, 1222, 1144, 1570, -1263, 1237, -1263, 1733 9167, -1263, -1263, -1263, -1263, 1238, -1263, 9167, 9167, 9167, 1734 -1263, -1263, 1239, -1263, 1241, 1242, 1245, 586, 7652, 7772, 1735 -1263, -1263, -1263, -1263, 1244, -1263, 8042, 635, 640, 1249, 1736 662, 5981, -1263, -1263, -1263, 460, -1263, 666, 1250, 1251, 1737 193, 1306, 785, -1263, -1263, 9697, -1263, 9579, 9697, -1263, 1738 -1263, -1263, 1255, 1257, -1263, -1263, -1263, 1262, -1263, -1263, 1739 -1263, -1263, -1263, -1263, 7806, 650, 1270, -1263, 1254, 650, 1740 9167, -1263, -1263, -1263, 605, -1263, -1263, -1263, -1263, -1263, 1741 -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1278, 1279, -1263, 1742 -1263, -1263, -1263, -1263, -1263, -1263, 1282, -1263, 1284, -1263, 1743 9579, 89, 9697, 9579, -1263, 1287, 9697, -1263, 136, 1302, 1744 1311, -1263, -1263, 1297, 1299, 1280, -1263, 753, -1263, -1263, 1745 -1263, 1119, 2149, 1300, -1263, 338, 9697, -1263, 667, -1263, 1746 1163, 605, 605, 1314, 1315, 1320, 1328, -1263, -1263, 7967, 1747 1304, -1263, 1376, 9697, 1309, -1263, -1263, 9489, -1263, 690, 1748 -1263, 1313, 9579, 1321, -1263, -1263, 1331, -1263, 1333, -1263, 1749 1351, 1361, -1263, 1337, 7806, -1263, -1263, -1263, 650, 544, 1750 1362, 1339, 1365, 1364, 1163, 1163, -1263, -1263, -1263, -1263, 1751 -1263, 9579, 234, -1263, 427, -1263, -1263, 7227, -1263, -1263, 1752 1346, 9697, -1263, 9697, 7227, 193, 9014, 193, 9014, 1369, 1753 -1263, 1370, -1263, -1263, 1367, -1263, -1263, 697, -1263, -1263, 1754 -1263, -1263, 1371, 1373, -1263, 9697, 9697, -1263, -1263, 839, 1755 85, -1263, -1263, 1358, -1263, 839, -1263, -1263, 2097, 544, 1756 -1263, -1263, 193, 9014, 193, 9014, 1387, 1366, 544, -1263, 1757 -1263, -1263, -1263, 9489, 1384, 839, 7306, 9697, 9399, 1388, 1758 839, 1392, 2097, 3030, -1263, -1263, -1263, 1399, -1263, -1263, 1759 -1263, -1263, 8347, -1263, -1263, -1263, 9261, -1263, 9489, -1263, 1760 -1263, 1378, 9171, -1263, -1263, 9399, 193, 3030, 193, 1401, 1761 1403, 712, -1263, 9261, -1263, -1263, -1263, 9171, -1263, -1263, 1762 -1263, 193, 193, -1263, -1263, -1263, -1263, -1263, -1263, -1263, 1763 -1263 1606 5235, 8510, -1267, -14, -1267, -1267, -1267, -1267, -1267, -1267, 1607 -1267, -27, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1608 -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 84, 84, 1609 84, 1541, 905, 123, 6677, 163, -1267, -1267, -1267, -1267, 1610 -1267, 157, -1267, -1267, -1267, 1043, 81, -1267, -1267, -1267, 1611 -1267, 4048, -1267, -1267, -1267, -1267, 225, 198, -1267, 1956, 1612 -1267, -1267, -1267, -1267, 217, 1716, 371, 37, 6797, -1267, 1613 -1267, 4048, 829, -1267, -1267, 1101, 380, 3172, 661, 839, 1614 1101, 977, -1267, -1267, 1289, 340, -1267, 1101, 1140, -1267, 1615 273, -1267, 439, 447, -1267, -1267, -1267, -1267, 337, 198, 1616 84, -1267, 84, -1267, -1267, -1267, -1267, 7269, 1956, -1267, 1617 -1267, 1956, -1267, 325, -1267, 7582, -1267, -1267, 2178, 8744, 1618 -1267, 675, 675, 675, -1267, -1267, -1267, 84, -1267, -1267, 1619 -1267, 360, 395, 436, -1267, -1267, -1267, 466, -1267, -1267, 1620 -1267, -1267, -1267, 503, 515, -1267, -1267, 272, 8119, 1675, 1621 307, 370, 377, 524, 565, 568, 580, 8828, 6307, 594, 1622 -1267, 4677, -1267, -1267, -1267, -1267, 613, -1267, 271, 9583, 1623 9583, -1267, 610, 339, -1267, -1267, -1267, -1267, 618, 379, 1624 421, 468, 84, 603, -1267, -1267, 1716, 2591, 687, -1267, 1625 90, -1267, 84, 84, 198, -1267, -1267, 91, -1267, 84, 1626 84, -1267, 2973, 652, 657, 675, 6831, -1267, -1267, -1267, 1627 4048, -1267, -1267, 1101, -1267, -1267, -1267, 198, -1267, 1956, 1628 225, -1267, 7235, -1267, 675, 675, 675, 198, -1267, 1541, 1629 -1267, 3826, -1267, -1267, 642, 675, -1267, 675, -1267, 157, 1630 8119, -1267, 665, -1267, 905, 685, 675, -1267, 1541, 689, 1631 710, -1267, 6677, 291, -1267, -1267, -1267, 8477, -1267, -1267, 1632 4354, -1267, 687, 8, 9760, 8744, 2178, 2973, -1267, 101, 1633 -1267, -1267, 7582, 1956, 740, 10515, -1267, -1267, 378, -1267, 1634 10178, 730, 705, 9819, 773, 9760, 9878, -1267, 794, -1267, 1635 -1267, -1267, -1267, -1267, -1267, 9937, 9937, 7885, 81, -1267, 1636 -1267, -1267, -1267, -1267, -1267, -1267, 834, -1267, 1184, 2546, 1637 8119, 9760, -1267, 525, 415, 844, 338, 853, 823, 831, 1638 841, 886, 56, -1267, -1267, -1267, 518, -1267, 528, -1267, 1639 -1267, 1675, -1267, -1267, 456, 900, -1267, 490, 900, -1267, 1640 -1267, 7269, -1267, 940, 946, 8236, -1267, -1267, 536, 1525, 1641 7667, 6831, 1101, -1267, 1101, 675, 675, -1267, -1267, -1267, 1642 -1267, -1267, -1267, 675, 7269, 1956, -1267, -1267, 8828, 1786, 1643 -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 9524, 1644 9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1645 -1267, -1267, -1267, -1267, -1267, 2178, -1267, 446, 945, 961, 1646 968, 800, 973, 976, 981, 2591, -1267, -1267, 939, 225, 1647 982, -1267, -1267, 987, -1267, -1267, -1267, 8477, -1267, -1267, 1648 -1267, -1267, -1267, 2973, -1267, 8119, 8119, -1267, 675, 2178, 1649 10547, 7742, -1267, -1267, -1267, -1267, 8477, 8, -1267, -1267, 1650 1101, 198, -1267, -1267, 8477, -1267, 5404, -1267, -1267, 675, 1651 675, 579, 8594, 994, 993, 983, 998, 675, -1267, -1267, 1652 -1267, -1267, 9019, -1267, 616, 10212, -1267, 198, 1004, -1267, 1653 2178, 10298, 9996, -1267, -1267, -1267, -1267, 843, 2973, -1267, 1654 7742, 687, 5806, -1267, -1267, -1267, 1900, 626, 990, 905, 1655 10515, 1647, 7582, -1267, 10515, -1267, -1267, -1267, -1267, 627, 1656 -1267, 1013, 705, 154, 7885, -1267, 8860, -1267, -1267, 7885, 1657 -1267, 8002, 7885, -1267, -1267, 81, -1267, 640, 1015, 658, 1658 1021, -1267, -1267, 6061, -1267, -1267, 315, -1267, -1267, 9760, 1659 -1267, 368, 9760, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1660 -1267, -1267, -1267, -1267, -1267, 9760, -1267, -1267, 9760, 9760, 1661 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 9760, 1662 9760, 9760, 9760, 9760, 9760, 9760, 3432, 518, 1212, -1267, 1663 -1267, 84, 84, -1267, -1267, 8119, -1267, -1267, 987, 291, 1664 -1267, 987, 10055, -1267, -1267, 8828, 6061, 1020, -1267, 8744, 1665 -1267, -1267, 613, -1267, 1023, 1793, 1025, 1950, 136, 990, 1666 -1267, 84, 84, 990, 407, -1267, 84, 84, 987, -1267, 1667 -1267, 84, 84, -1267, 900, 8944, 1956, 10447, 356, 541, 1668 8944, -1267, 4354, -1267, 990, -1267, 7269, -1267, 126, 7354, 1669 7354, 1956, 9642, 1003, -1267, 789, 1008, 1010, -1267, 1026, 1670 9583, 449, -1267, 1114, 1956, 7354, 291, 2178, 291, 687, 1671 707, 900, -1267, -1267, 766, 900, -1267, -1267, -1267, 705, 1672 -1267, 900, 198, 9019, -1267, 643, 1041, 647, 1045, -1267, 1673 940, 198, -1267, -1267, 8477, 198, 1042, 8860, 81, -1267, 1674 1307, -1267, 471, 481, 905, -1267, 905, 1047, 9760, -1267, 1675 905, 10447, -1267, -1267, 1056, -1267, -1267, -1267, 291, -1267, 1676 10373, 946, -1267, 7354, 694, 7667, -1267, -1267, 613, 1052, 1677 1057, 1900, 2267, -1267, -1267, 10515, 9760, -1267, -1267, 1055, 1678 -1267, -1267, 1048, -1267, 1055, 1063, 10178, 9760, 1046, 1051, 1679 117, 1065, 1062, 1070, 1074, -1267, 1081, 1082, 6061, -1267, 1680 9760, -1267, 658, 1520, -1267, -1267, -1267, 84, 84, 9701, 1681 9760, 1077, -1267, -1267, 679, -1267, 9760, -1267, -1267, 821, 1682 -1267, -1267, -1267, -1267, 525, 525, 415, 415, 844, 844, 1683 844, 844, 338, 338, 853, 823, 831, 841, 886, 9760, 1684 397, 9019, 1085, 1086, 1087, 1212, -1267, -1267, -1267, -1267, 1685 -1267, 9019, 691, -1267, 7269, -1267, 6430, 8353, -1267, -1267, 1686 -1267, 1793, 9019, 856, 1089, 1091, 1092, 1093, 1096, 1098, 1687 1104, -1267, 3291, 1950, -1267, -1267, -1267, -1267, -1267, -1267, 1688 -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1689 -1267, 987, -1267, -1267, -1267, 990, -1267, -1267, -1267, -1267, 1690 -1267, -1267, -1267, -1267, -1267, -1267, 1105, 1106, -1267, 225, 1691 1077, 9642, -1267, -1267, -1267, 9524, 1108, -1267, -1267, -1267, 1692 -1267, 905, 5524, 1197, -1267, -1267, -1267, -1267, 1095, 225, 1693 -1267, -1267, 987, -1267, -1267, 987, 1117, 987, -1267, -1267, 1694 -1267, -1267, -1267, -1267, 6307, -1267, 198, -1267, -1267, 505, 1695 507, 6307, 1549, 9760, 2098, -1267, -1267, 1099, 38, 1099, 1696 -1267, 905, -1267, 84, -1267, -1267, 8627, 983, -1267, -1267, 1697 -1267, 993, 1120, 1115, -1267, -1267, 1122, 1123, -1267, 694, 1698 1698, -1267, 576, -1267, 2267, 990, -1267, -1267, 1126, 10515, 1699 7582, 8119, 1129, -1267, -1267, 1125, 1135, 1118, -1267, 9760, 1700 1141, 190, 1136, -1267, 1142, 291, 1142, -1267, -1267, 1142, 1701 -1267, 1147, 1152, 1154, 1520, -1267, -1267, -1267, 9524, -1267, 1702 -1267, -1267, 1163, 9760, 986, -1267, 9760, -1267, 986, -1267, 1703 -1267, 9760, -1267, 894, 900, -1267, -1267, -1267, -1267, -1267, 1704 -1267, -1267, 946, 8236, -1267, -1267, 6553, 1171, -1267, 898, 1705 900, -1267, 920, 936, 900, -1267, 675, 7112, -1267, -1267, 1706 -1267, 9019, 9019, -1267, 7742, 7742, 1172, 1167, 1168, 1175, 1707 -1267, 670, 111, 1077, -1267, 986, -1267, 9583, -1267, 9760, 1708 540, -1267, 5932, 1180, 1181, 9465, 1182, 1185, -8, 40, 1709 86, 9760, 1191, 198, 9760, 9760, 1177, 585, 1169, -1267, 1710 -1267, -1267, 1187, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1711 -1267, -1267, 905, 1195, 9760, -1267, 9019, 9019, 84, 1201, 1712 -1267, 8711, -1267, -1267, 862, -1267, 2098, -1267, -1267, -1267, 1713 -1267, 1307, -1267, -1267, 1198, -1267, -1267, -1267, -1267, 1202, 1714 1698, -1267, -1267, 1196, -1267, 1055, -1267, -1267, 2178, 1210, 1715 -1267, -1267, -1267, 704, 1217, -1267, 117, 1214, 9760, 1200, 1716 117, 117, 1224, 950, 900, -1267, -1267, 1026, 9760, 1230, 1717 1163, -1267, 943, -1267, -1267, 1220, -1267, 78, -1267, 1231, 1718 1220, -1267, 1234, -1267, -1267, 987, 1236, 6184, 1235, 1239, 1719 1241, -1267, -1267, 1238, -1267, -1267, 987, -1267, -1267, -1267, 1720 -1267, 987, 9760, 9760, 946, 1243, -1267, -1267, -1267, -1267, 1721 -1267, -1267, -1267, -1267, -1267, -1267, -1267, 9760, 9760, 1244, 1722 1248, 1220, -1267, -1267, 905, -1267, -1267, -1267, 7070, 7582, 1723 9760, 9760, 1318, 9760, -1267, 1233, -1267, 1246, -1267, 1250, 1724 9760, 1254, 9760, 938, 1255, 47, 84, 1805, -1267, -1267, 1725 5524, 1256, 554, -1267, -1267, -1267, -1267, -1267, -1267, -1267, 1726 -1267, -1267, 9281, -1267, 7742, 1260, -1267, -1267, 7582, 555, 1727 561, -1267, 1273, 1262, 705, 1283, -1267, 256, -1267, -1267, 1728 -1267, -1267, 987, 1282, -1267, -1267, 1288, 1321, -1267, -1267, 1729 1321, 1321, 986, 1292, 1699, 1866, -1267, 1295, -1267, 9019, 1730 -1267, -1267, -1267, -1267, 1298, -1267, 9019, 9019, 9019, -1267, 1731 -1267, 1300, -1267, 1301, 1310, 1311, 725, 7429, 7548, -1267, 1732 -1267, -1267, -1267, 1305, -1267, 7817, 709, 755, 1317, 758, 1733 5667, -1267, -1267, -1267, 582, -1267, 768, 1319, 1323, 198, 1734 1369, 935, -1267, -1267, 9760, -1267, 9465, 9760, -1267, -1267, 1735 -1267, 1320, 1326, -1267, -1267, -1267, 1324, -1267, -1267, -1267, 1736 -1267, -1267, -1267, 7582, 705, 1330, -1267, 1313, 705, 9019, 1737 -1267, -1267, -1267, 986, -1267, -1267, -1267, -1267, -1267, -1267, 1738 -1267, -1267, -1267, -1267, -1267, -1267, 1337, 1340, -1267, -1267, 1739 -1267, -1267, -1267, -1267, -1267, 1343, -1267, 1342, -1267, 9465, 1740 276, 9760, 9465, -1267, 1346, 9760, -1267, 281, 1361, 1363, 1741 -1267, -1267, 1355, 1356, 1339, -1267, 901, -1267, -1267, -1267, 1742 1956, 2178, 1347, -1267, 401, 9760, -1267, 783, -1267, 1220, 1743 986, 986, 1362, 1364, 1365, 1367, -1267, -1267, 7742, 1357, 1744 -1267, 1438, 9760, 1352, -1267, -1267, 9375, -1267, 791, -1267, 1745 1360, 9465, 1368, -1267, -1267, 1386, -1267, 1389, -1267, 1407, 1746 1409, -1267, 1376, 7582, -1267, -1267, -1267, 705, 291, 1403, 1747 1382, 1405, 1404, 1220, 1220, -1267, -1267, -1267, -1267, -1267, 1748 9465, 240, -1267, 474, -1267, -1267, 6917, -1267, -1267, 1385, 1749 9760, -1267, 9760, 6917, 198, 8860, 198, 8860, 1410, -1267, 1750 1411, -1267, -1267, 1408, -1267, -1267, 802, -1267, -1267, -1267, 1751 -1267, 1422, 1423, -1267, 9760, 9760, -1267, -1267, 979, 59, 1752 -1267, -1267, 1390, -1267, 979, -1267, -1267, 2042, 291, -1267, 1753 -1267, 198, 8860, 198, 8860, 1427, 1412, 291, -1267, -1267, 1754 -1267, -1267, 9375, 1425, 979, 6995, 9760, 9285, 1426, 979, 1755 1435, 2042, 2360, -1267, -1267, -1267, 1436, -1267, -1267, -1267, 1756 -1267, 8119, -1267, -1267, -1267, 9148, -1267, 9375, -1267, -1267, 1757 1416, 9058, -1267, -1267, 9285, 198, 2360, 198, 1441, 1445, 1758 814, -1267, 9148, -1267, -1267, -1267, 9058, -1267, -1267, -1267, 1759 198, 198, -1267, -1267, -1267, -1267, -1267, -1267, -1267, -1267 1764 1760 }; 1765 1761 … … 1767 1763 static const yytype_int16 yypgoto[] = 1768 1764 { 1769 -126 3, 3947, 2776, -1263, 44, -1263, 887, 695, -232, -1263,1770 -126 3, 487, -523, -501, -842, -960, -1263, -216, 4593, 0,1771 -126 3, 122, 359, 368, 437, 403, 964, 965, 963, 966,1772 969, -1263, 998, -607, 4667, -955, -1263, -1263, 569, -183,1773 -6 58, 414, -1263, 1406, -1263, 347, -1148, -1263, -1263, 84,1774 -126 3, -949, -1074, 191, -1263, -1263, -1263, -1263, 17, -1186,1775 -126 3, -1263, -1263, -1263, -1263, -1263, 265, -1262, 33, -1263,1776 - 866, -1263, 445, 246, -1263, 124, -1263, -320, -1263, -1263,1777 -126 3, 506, -835, -1263, -1263, 19, -980, 55, 606, -1263,1778 -126 3, -1263, -220, -1263, 129, 1096, -190, 1478, 3486, -1263,1779 -126 3, 96, 144, 1103, 1793, -1263, 1550, -1263, -1263, 27,1780 1 989, -1263, 2286, 1081, -1263, -1263, -1263, -632, -1263, 884,1781 886, 488, 668, -575, -1263, -1263, -1263, 875, 659, -511,1782 -126 3, -466, -248, 801, -1263, -1263, -959, -944, -218, 636,1783 989, 92, -1263, 209, 354, -244, -203, -140, 611, 717,1784 -126 3, 932, -1263, 2427, 1924, -447, 860, -1263, -1263, 647,1785 -126 3, -235, -1263, 189, -1263, -1263, -1263, -1245, 370, -1263,1786 -126 3, -1263, 1098, -1263, 2, -1263, -1263, -849, -115, -1223,1787 -1 50, 2775, -1263, 2462, -1263, 854, -1263, -127, 40, -178,1788 -1 74, -173, 7, -43, -41, -36, 1803, 12, 18, 21,1789 -101, -168, -162, -160, -144, -317, -520, -513, -497, -545,1790 -3 00, -486, -1263, -1263, -547, 1009, 1026, 1028, 1598, 4212,1791 -5 63, -557, -544, -532, -458, -1263, -514, -722, -720, -718,1792 -58 5, -194, -291, -1263, -1263, 769, 138, -88, -1263, 3371,1793 239, -624, -4831765 -1267, 4051, 2784, -1267, 133, -1267, 1353, 867, -240, -1267, 1766 -1267, 504, -528, -489, -834, -1001, -1267, -77, 4776, 0, 1767 -1267, 793, 489, 531, 722, 534, 999, 1001, 1005, 1007, 1768 1002, -1267, 711, -584, 4023, -739, -1267, -1267, 606, -227, 1769 -674, -263, -1267, 335, -1267, 382, -963, -1267, -1267, 119, 1770 -1267, -732, -1049, 228, -1267, -1267, -1267, -1267, 54, -1266, 1771 -1267, -1267, -1267, -1267, -1267, -1267, 302, -1050, 23, -1267, 1772 -171, -1267, 482, 277, -1267, 153, -1267, -355, -1267, -1267, 1773 -1267, 538, -612, -1267, -1267, 9, -990, 219, 2319, -1267, 1774 -1267, -1267, -124, -1267, 110, 36, -188, 1213, 3869, -1267, 1775 -1267, 12, 61, 970, 1623, -1267, 1495, -1267, -1267, 21, 1776 1827, -1267, 2153, 1937, -1267, -1267, -1267, -641, -1267, 911, 1777 914, 521, 695, -93, -1267, -1267, -1267, 906, 690, -521, 1778 -1267, -507, -417, -420, -1267, -1267, -914, -941, -147, -54, 1779 1019, 19, -1267, 2311, 381, -366, -185, -122, 649, 745, 1780 -1267, 964, -1267, 2435, 1823, -463, 895, -1267, -1267, 693, 1781 -1267, -225, -1267, 103, -1267, -1267, -1267, -1263, 408, -1267, 1782 -1267, -1267, 1139, -1267, 42, -1267, -1267, -832, -94, -1230, 1783 -162, 2364, -1267, 3117, -1267, 908, -1267, -103, 120, -184, 1784 -183, -178, 7, -40, -39, -36, 1505, 4, 32, 71, 1785 92, -173, -172, -170, -168, -306, -510, -503, -496, -559, 1786 -313, -498, -1267, -1267, -514, 1064, 1072, 1076, 1925, 4399, 1787 -524, -566, -556, -543, -548, -1267, -508, -723, -722, -717, 1788 -582, -166, -229, -1267, -1267, 283, 102, 6, -1267, 3380, 1789 108, -611, -462 1794 1790 }; 1795 1791 … … 1797 1793 positive, shift that token. If negative, reduce the rule which 1798 1794 number is the opposite. If YYTABLE_NINF, syntax error. */ 1799 #define YYTABLE_NINF -5 301795 #define YYTABLE_NINF -529 1800 1796 static const yytype_int16 yytable[] = 1801 1797 { 1802 51, 115, 151, 268, 152, 451, 746, 99, 398, 153, 1803 760, 735, 399, 400, 1052, 427, 857, 438, 401, 261, 1804 116, 952, 787, 953, 402, 954, 403, 78, 1051, 382, 1805 383, 834, 600, 52, 51, 817, 145, 469, 409, 809, 1806 98, 99, 404, 1168, 720, 149, 1151, 1152, 725, 605, 1807 504, 51, 810, 816, 907, 58, 117, 154, 162, 1363, 1808 406, 78, 1153, 155, 811, 187, 156, 52, 210, 342, 1809 937, 51, 194, 624, 98, 217, 805, 628, 227, 474, 1810 1185, 1186, 911, 806, 376, 150, 407, 424, 398, 58, 1811 220, 98, 399, 400, 124, 33, 71, 663, 401, 807, 1812 377, 717, 125, 177, 402, 190, 403, 115, 98, 33, 1813 808, 98, 473, 475, 518, 115, 672, 821, 267, 272, 1814 849, 824, 404, 211, 676, 1285, 221, 1121, 203, 65, 1815 71, 281, -239, -239, 144, 866, 1383, 1384, 108, 108, 1816 406, 820, 841, 151, 72, 152, 844, 827, 310, 149, 1817 153, 592, 177, 1230, 1225, 177, 162, 115, 345, 1444, 1818 1425, 210, 33, 65, 847, 847, 407, 901, 372, 410, 1819 714, 952, 108, 953, 1162, 954, 1471, 146, 72, 204, 1820 847, 667, 669, 1383, 1384, 148, 187, 187, 1167, 98, 1821 408, 282, 805, 919, 162, 169, 1286, 469, 154, 806, 1822 262, 98, 267, 263, 155, -239, 661, 156, 1385, 108, 1823 51, 1499, 213, 1501, 566, 807, 469, 162, 577, 170, 1824 410, 1176, 210, 151, 469, 152, 397, 190, 157, 441, 1825 153, 1214, 707, 1425, 253, 1218, 410, 474, 847, 977, 1826 310, 143, 666, 668, 696, 809, 33, 33, 567, 724, 1827 98, 1001, 51, 585, 461, 1394, 1180, 1062, 810, 99, 1828 272, 1153, 98, 177, 291, 272, 267, 267, 737, 1000, 1829 811, 729, 115, 1315, 162, 1318, 1320, 439, 658, 78, 1830 650, 1178, 805, 1177, 78, 52, 708, 1066, 1075, 806, 1831 167, 1168, 98, 242, 245, 796, 940, 310, 605, 1151, 1832 1152, 33, 1513, 1181, 659, 807, 477, 58, 665, 1235, 1833 310, 437, 172, 1158, 670, 1153, 988, 177, 418, 479, 1834 410, 410, 518, 1069, 177, 1069, 569, 518, 33, 1528, 1835 518, 149, 791, 1098, 182, 1455, 843, 1236, 372, 1159, 1836 1512, 115, 1052, 1179, 492, 345, 820, 493, 71, 598, 1837 616, 658, 202, 1004, 167, 887, 1051, 248, 817, 730, 1838 1523, 1159, 386, 809, 621, 481, 440, 1527, 621, 253, 1839 332, 98, 499, 818, 1182, 597, 810, 659, 387, 731, 1840 287, 65, 848, 848, 781, 1483, 470, 330, 811, 599, 1841 108, 1488, 177, 43, 44, 267, 72, 1100, 848, 834, 1842 825, 112, 597, 141, 142, 187, 251, 509, 389, 177, 1843 1308, 1508, 372, 177, 43, 44, 1515, 1101, 445, 513, 1844 1420, 378, 592, 267, 390, 310, 310, 592, 877, 267, 1845 1309, 621, 547, 548, 391, 1153, 1346, 458, 1429, 552, 1846 553, 1107, 853, 1083, 78, 190, 696, 1168, 393, 434, 1847 392, 741, 115, 455, 1168, 469, 848, 625, 859, 1408, 1848 636, 629, 112, 78, 394, 972, 1119, 547, 554, 555, 1849 267, 78, 1370, 1409, 902, 43, 44, 860, 267, 330, 1850 621, 916, 51, 1086, 1224, 372, 580, 713, 410, 99, 1851 903, 707, 1216, 115, 213, -294, 871, 999, 410, 941, 1852 870, 858, 547, 753, 981, 310, 1168, 115, -525, 78, 1853 310, 434, 310, 310, 605, 52, 904, 575, 1001, 874, 1854 744, 410, 98, 576, 345, 556, 557, 599, 902, 1414, 1855 1415, 904, 905, 868, 1429, 1139, 1141, 58, 1124, 1429, 1856 410, 1165, 112, 253, 1063, 708, 470, 1064, 1456, 167, 1857 -12, 1260, 1261, 1107, 898, 43, 44, 1166, 901, 1429, 1858 558, 559, 1457, 1165, 696, 470, 1429, 837, 569, 569, 1859 264, 838, -448, 470, 696, 1299, 310, 1301, 71, 1291, 1860 900, 741, -449, 758, 594, 696, 621, 345, 638, 677, 1861 616, 1300, 1461, 1302, 277, 576, 598, 1347, 598, 1461, 1862 2, 207, 4, 5, 6, 7, 59, 59, 999, 705, 1863 839, 65, 279, 1344, 840, 213, 621, 280, 549, 112, 1864 108, 621, 698, 616, 550, 551, 72, 621, 699, 715, 1865 621, 621, 43, 44, 333, 716, 804, 334, 599, 131, 1866 59, 132, 133, 134, 707, 839, 621, 1011, 267, 1082, 1867 335, 1509, 43, 44, 8, 9, 10, 11, 12, 384, 1868 726, 177, 336, 740, 330, 330, 727, 1056, 37, 741, 1869 38, 762, 763, 764, 59, -112, 177, 59, 115, -112, 1870 112, 895, 1135, 798, 410, 881, 33, 1112, 1393, 177, 1871 1113, 741, 1114, 43, 44, 50, 114, 1094, 708, 719, 1872 337, 723, 78, 1333, 621, 921, 616, 1334, 1138, 836, 1873 597, 371, 713, 713, 36, 398, 1017, 883, 338, 399, 1874 400, 899, 375, 741, 850, 401, 114, 114, 78, 50, 1875 966, 402, 330, 403, 291, 979, 967, 865, 388, 345, 1876 50, 699, 1212, 744, 744, 1140, 50, 597, 576, 404, 1877 1340, 330, 804, 599, 50, 1341, 741, 1150, 396, 1410, 1878 50, 741, 440, 50, 348, 1357, 50, 1221, 406, 410, 1879 952, 177, 953, 1463, 954, 1464, 1422, 1343, 425, 114, 1880 114, 1348, 1411, 741, 696, 696, 569, 741, 1408, 426, 1881 592, 253, 332, 410, 407, 621, 39, 984, 175, 176, 1882 42, 408, 598, 50, 470, 1430, 50, 1143, 448, 43, 1883 44, 741, 1477, 50, 598, 330, 560, 561, 1478, 499, 1884 164, 2, 207, 4, 5, 6, 7, 1533, 59, 1510, 1885 470, 970, 967, 576, -372, 371, 213, 332, 410, 696, 1886 696, 459, 804, -401, 50, 854, 1353, 1354, 1481, 1422, 1887 213, 460, 229, 503, 599, 835, 50, 482, 59, 732, 1888 594, 733, 39, 310, 734, 941, 42, 738, 705, 941, 1889 941, 507, 960, 1403, 967, 43, 44, 512, 1163, 525, 1890 707, 50, 50, 562, 164, 345, 1383, 1384, 113, 37, 1891 78, 38, 345, 895, 906, 895, 908, 50, 1231, 1232, 1892 455, 802, 563, 597, 564, 50, 565, 115, 339, 47, 1893 48, 765, 766, 112, 50, 141, 239, 50, 58, 586, 1894 921, 921, 767, 768, 114, 713, 43, 44, 568, -3, 1895 410, 115, 310, 1065, 708, 899, 47, 48, 651, 114, 1896 658, 213, 652, 114, 653, 898, 655, 50, 114, 656, 1897 1087, 657, 240, 258, 1495, 744, 660, 241, 662, 71, 1898 689, 50, 50, 773, 774, 599, 659, 686, 50, 691, 1899 687, 900, -243, 728, 1207, 50, 418, 654, 410, 433, 1900 717, 798, 742, 1306, 345, 1295, 1088, 750, 1267, 1268, 1901 799, 1270, 65, 769, 770, 771, 772, 801, 1275, 812, 1902 1277, 108, 856, 1107, -14, 621, 621, 72, 862, -15, 1903 1336, 708, 479, 332, 410, 2, 207, 4, 5, 6, 1904 7, 705, 696, 310, 855, 112, 50, 141, 142, 696, 1905 696, 696, 112, 882, 141, 142, 884, 348, 43, 44, 1906 743, 433, 410, 50, 50, 43, 44, -295, 47, 48, 1907 78, 818, 332, 597, 8, 9, 10, 11, 12, 889, 1908 50, 909, 115, -422, 50, 638, 522, 895, 716, 108, 1909 932, 1022, 895, 1364, 637, -529, 244, 1364, 58, 164, 1910 924, 921, 934, 37, 938, 38, 33, 945, 59, 267, 1911 50, 939, 696, 1278, 1279, 1280, 946, 118, 697, 947, 1912 50, 920, 112, 597, 141, 142, 547, 899, 948, 47, 1913 48, 1071, 899, 964, 36, 43, 44, 949, 50, 1170, 1914 950, 974, 975, 976, 50, -296, 1053, 990, 345, 991, 1915 348, 440, 8, 9, 10, 11, 12, 992, 993, 994, 1916 463, 721, 1077, 112, 995, 509, 722, 160, -3, 215, 1917 1112, 996, 470, 1113, -410, 1114, 43, 44, -409, 1389, 1918 114, 108, 1019, 1059, 33, 50, 1055, 72, 638, 272, 1919 115, 330, 894, 50, 1076, 230, 1445, 50, 231, 1078, 1920 1079, 235, 50, 237, 1229, 114, 1085, 114, 1095, 220, 1921 246, 310, 36, 348, 39, 741, 175, 176, 42, 1096, 1922 215, 1097, 1099, 259, 1102, 621, -297, 43, 44, 115, 1923 959, 160, 1104, 8, 9, 10, 11, 12, 78, 112, 1924 1105, 685, 114, 835, 211, 221, 1112, 114, 1087, 1113, 1925 1106, 1114, 43, 44, 1109, 1133, 348, 348, 1154, 1155, 1926 1157, 1187, 215, 1171, 326, 33, 58, 1406, 1156, 1172, 1927 1174, 1175, 348, 340, 1183, 1215, 1194, 705, 621, 621, 1928 1317, 1189, 1022, -3, 1088, 1199, 272, 1521, 1202, 1204, 1929 1213, 310, 492, 36, 522, 114, 522, 1040, 1208, 522, 1930 1220, 1226, 522, 1217, 1233, 1237, 1239, 71, 1241, 1242, 1931 1269, 50, 1243, 50, 1244, 1246, 1253, 1272, 78, 1262, 1932 697, 1263, 429, 215, 115, 1297, 432, 1273, 108, 1290, 1933 348, 1274, 50, 213, 398, 1276, 230, 1303, 399, 400, 1934 65, 439, 1284, 1087, 401, 1307, 58, 50, 1305, 108, 1935 402, 114, 403, 1311, 705, 72, 326, 1312, 1313, 1316, 1936 50, 215, 114, 50, 114, 526, 215, 108, 404, 527, 1937 528, 529, 113, 1494, 1321, 1323, 1329, 1331, 1330, 1088, 1938 1332, 1339, 267, 1342, 1349, 1350, 406, 1170, 432, 1280, 1939 1358, 487, 1359, 530, 1265, 531, 50, 532, 533, 621, 1940 114, 1360, 114, 497, 1366, 39, 114, 184, 185, 42, 1941 658, 1367, 407, 520, 114, 1377, 1378, -411, 43, 44, 1942 470, 1381, 1392, 1396, 115, 177, 160, 50, 50, 108, 1943 440, 1400, 1398, 1401, 754, 72, 659, 1402, 697, 759, 1944 1407, 1421, 50, 1087, 893, 1334, 410, 115, 697, 1416, 1945 1417, 215, 47, 48, 115, 1418, 115, 584, 115, 697, 1946 1173, 589, 108, 1419, 1426, 894, 1435, 685, 1437, 151, 1947 1431, 152, 1439, 1405, 78, 230, 153, 235, 1433, 1088, 1948 622, 78, 1441, 174, 626, 880, 526, 463, 1493, 59, 1949 527, 528, 529, 115, 1443, 115, 1449, 1448, 68, 119, 1950 1450, 1451, 58, 1462, 1472, 1474, 115, 1476, 1479, 58, 1951 1480, 348, 1493, 1493, 530, 1487, 531, 50, 532, 1288, 1952 162, 1502, 310, 1503, 1507, 254, 39, 1516, 1514, 50, 1953 42, 215, 68, 78, 1518, 1524, 1531, 1493, 1532, 43, 1954 44, 326, 326, 1170, 372, 1188, 775, 777, 776, 161, 1955 1170, 778, 477, 1111, 867, 779, 869, 59, 1289, 1395, 1956 1482, 58, 108, 230, 1534, 45, 1352, 1219, 681, 222, 1957 76, 637, 215, 47, 48, 1368, 470, 114, 1465, 1193, 1958 1201, 118, 890, 470, 891, 108, 912, 1074, 1070, 793, 1959 1108, 72, 108, 1018, 861, 1084, 926, 783, 72, 1298, 1960 710, 935, 1170, 973, 76, 260, 915, 487, 50, 326, 1961 50, 487, 0, 978, 784, 0, 785, 114, 0, 0, 1962 416, 520, 0, 520, 989, 1040, 520, 0, 326, 520, 1963 0, 348, 348, 0, 0, 470, 0, 0, 0, 0, 1964 50, 223, 0, 435, 108, 0, 0, 331, 0, 59, 1965 72, 0, 0, 443, 0, 260, 350, 0, 697, 697, 1966 0, 114, 0, 0, 0, 112, 8, 9, 10, 11, 1967 12, 0, 1112, 0, 637, 1113, 0, 1114, 43, 44, 1968 114, 0, 0, 0, 114, 405, 0, 0, 0, 0, 1969 0, 215, 326, 0, 0, 0, 685, 0, 33, 0, 1970 423, 0, 794, 428, 430, 0, 1319, 910, 161, 0, 1971 0, 0, 0, 697, 697, 0, 0, 0, 0, 215, 1972 0, 1356, 0, 519, 215, 0, 36, 0, 353, 446, 1973 0, 114, 833, 449, 0, 450, 0, 589, 0, 0, 1974 0, 0, 0, 842, 457, 0, 0, 0, 0, 0, 1975 68, 0, 0, 0, 0, 471, 0, 0, 0, 0, 1976 0, 330, 0, 0, 0, 478, 0, 0, 114, 0, 1977 568, 39, 410, 430, 1382, 42, 0, 1390, 47, 48, 1978 0, 0, 50, 0, 43, 44, 39, 50, 184, 185, 1979 42, 0, 0, 215, 681, 59, 59, 0, 971, 43, 1980 44, 447, 0, 0, 50, 0, 0, 215, 412, 0, 1981 712, 0, 0, 0, 0, 420, 0, 59, 47, 48, 1982 0, 1428, 76, 1148, 1149, 186, 1432, 76, 114, 0, 1983 0, 0, 487, 47, 48, 59, 0, 0, 0, 260, 1984 0, 0, 0, 590, 39, 0, 175, 176, 42, 618, 1985 497, 685, 0, 1103, 0, 1454, 0, 43, 44, 1296, 1986 0, 0, 623, 0, 0, 0, 623, 674, 0, 0, 1987 1012, 0, 1115, 0, 163, 0, 1115, 0, 1196, 1197, 1988 114, 214, 0, 375, 348, 348, 0, 412, 195, 0, 1989 233, 218, 59, 700, 228, 0, 697, 59, 215, 0, 1990 0, 0, 0, 697, 697, 697, 39, 0, 184, 185, 1991 42, 980, 910, 0, 0, 471, 0, 0, 0, 43, 1992 44, 223, 0, 1115, 0, 0, 0, 0, 0, 350, 1993 59, 519, 214, 0, 471, 0, 519, 0, 0, 519, 1994 1522, 0, 471, 0, 574, 596, 1522, 597, 114, 0, 1995 114, 114, 578, 47, 48, 581, 0, 1522, 910, 0, 1996 692, 1522, 0, 430, 0, 0, 697, 0, 0, 0, 1997 0, 0, 163, 0, 214, 0, 0, 0, 706, 0, 1998 68, 0, 0, 0, 373, 0, 0, 76, 0, 430, 1999 1122, 0, 0, 430, 0, 8, 9, 10, 11, 12, 2000 0, 353, 0, 0, 0, 348, 76, 0, 0, 79, 2001 163, 0, 216, 0, 76, 412, 0, 0, 0, 420, 2002 1115, 0, 350, 681, 0, 0, 0, 33, 243, 114, 2003 59, 0, 353, 163, 0, 214, 0, 0, 1012, 0, 2004 0, 0, 0, 79, 0, 442, 487, 1089, 326, 0, 2005 353, 0, 76, 59, 0, 36, 0, 0, 0, 0, 2006 59, 1322, 0, 216, 0, 0, 0, 786, 1324, 1325, 2007 1326, 0, 0, 214, 0, 0, 50, 50, 214, 0, 2008 224, 0, 0, 0, 623, 797, 114, 114, 215, 879, 2009 0, 0, 0, 498, 353, 412, 814, 0, 886, 743, 2010 833, 410, 888, 0, 0, 216, 0, 47, 48, 0, 2011 0, 0, 59, 0, 590, 0, 0, 910, 0, 590, 2012 0, 0, 0, 0, 114, 623, 0, 0, 350, 350, 2013 0, 1369, 0, 39, 0, 184, 185, 42, 0, 0, 2014 1115, 0, 1115, 1115, 350, 0, 43, 44, 0, 0, 2015 0, 0, 0, 0, 373, 0, 0, 353, 0, 0, 2016 0, 0, 692, 214, 0, 0, 216, 355, 0, 0, 2017 0, 0, 893, 471, 410, 0, 910, 910, 681, 0, 2018 47, 48, 0, 50, 114, 0, 574, 574, 0, 0, 2019 0, 0, 39, 114, 184, 185, 42, 0, 0, 471, 2020 353, 353, 350, 0, 216, 43, 44, 50, 50, 216, 2021 0, 925, 0, 0, 430, 0, 353, 0, 0, 0, 2022 0, 1115, 0, 0, 0, 1469, 0, 1469, 373, 0, 2023 0, 1492, 50, 410, 353, 0, 0, 706, 0, 47, 2024 48, 0, 955, 214, 39, 76, 184, 185, 42, 0, 2025 0, 0, 0, 0, 0, 0, 0, 43, 44, 214, 2026 0, 79, 1469, 0, 1469, 0, 79, 0, 0, 872, 2027 215, 76, 0, 875, 353, 0, 0, 0, 1115, 1115, 2028 692, 0, 0, 266, 214, 0, 0, 0, 0, 0, 2029 692, 47, 48, 623, 216, 0, 987, 0, 0, 0, 2030 0, 692, 0, 0, 0, 0, 81, 0, 0, 353, 2031 0, 998, 0, 1061, 0, 0, 1446, 0, 0, 0, 2032 0, 0, 0, 0, 0, 1089, 8, 9, 10, 11, 2033 12, 8, 9, 10, 11, 12, 0, 0, 0, 0, 2034 81, 534, 535, 536, 537, 538, 539, 540, 541, 542, 2035 543, 544, 353, 0, 0, 0, 0, 0, 33, 0, 2036 224, 68, 353, 33, 0, 0, 0, 215, 223, 0, 2037 0, 0, 0, 353, 216, 545, 1496, 225, 0, 0, 2038 0, 0, 0, 797, 910, 1504, 36, 0, 0, 0, 2039 706, 36, 0, 1067, 0, 0, 39, 0, 184, 185, 2040 42, 910, 0, 214, 574, 0, 0, 0, 0, 43, 2041 44, 0, 0, 0, 0, 216, 0, 0, 0, 1081, 2042 1089, 0, 0, 0, 0, 0, 79, 0, 430, 119, 2043 920, 214, 597, 76, 0, 596, 214, 597, 47, 48, 2044 355, 0, 0, 47, 48, 79, 0, 88, 0, 0, 2045 0, 0, 0, 79, 0, 353, 0, 0, 0, 0, 2046 1184, 0, 353, 0, 356, 0, 8, 9, 10, 11, 2047 12, 355, 0, 910, 910, 0, 0, 0, 0, 0, 2048 0, 88, 590, 0, 0, 0, 0, 0, 0, 355, 2049 0, 79, 0, 0, 0, 428, 0, 0, 33, 0, 2050 692, 692, 0, 350, 350, 214, 0, 0, 0, 0, 2051 128, 128, 128, 0, 0, 0, 0, 412, 226, 214, 2052 1089, 1169, 0, 0, 0, 0, 36, 0, 0, 0, 2053 0, 39, 0, 355, 216, 42, 0, 0, 0, 0, 2054 498, 0, 0, 0, 43, 44, 0, 0, 0, 0, 2055 0, 0, 1468, 0, 1468, 692, 692, 0, 81, 0, 2056 0, 0, 216, 81, 0, 0, 0, 216, 0, 0, 2057 45, 0, 353, 353, 0, 353, 353, 0, 47, 48, 2058 0, 0, 128, 0, 128, 0, 0, 0, 0, 1468, 2059 0, 1468, 1125, 76, 0, 0, 355, 0, 0, 0, 2060 0, 0, 0, 0, 0, 363, 0, 0, 1136, 276, 2061 214, 0, 0, 0, 0, 0, 0, 0, 326, 0, 2062 0, 0, 0, 0, 0, 0, 706, 353, 353, 0, 2063 0, 0, 0, 0, 0, 0, 216, 0, 0, 355, 1798 51, 115, 398, 399, 759, 151, 152, 99, 400, 153, 1799 116, 745, 71, 401, 402, 451, 403, 427, 404, 951, 1800 952, 78, 734, 52, 268, 953, 409, 719, 856, 808, 1801 1051, 724, 1167, 833, 51, 438, 604, 118, 815, 809, 1802 1362, 99, 503, 599, 906, 149, 71, 382, 383, 154, 1803 819, 51, 810, 936, 786, 78, 826, 52, 162, 666, 1804 668, 72, 662, 706, 1152, 187, 1175, 203, 210, 124, 1805 517, 51, 194, 816, 408, 217, 145, 155, 227, 33, 1806 220, 671, 398, 399, 406, 804, 125, 160, 400, 675, 1807 1150, 1151, 805, 401, 402, 72, 403, 807, 404, 806, 1808 473, 475, 108, 108, 910, -239, -239, 115, 424, 848, 1809 65, 1229, 1284, 261, 1177, 115, 156, 204, 267, 272, 1810 98, 474, 846, 846, 865, 33, 723, 262, 1176, 213, 1811 263, 33, 33, 469, 1120, 623, 108, 820, 846, 627, 1812 1443, 823, 33, 259, 65, 736, 151, 152, 310, 149, 1813 153, 160, 1424, 410, 98, 565, 162, 115, 345, 167, 1814 1179, 210, 840, 342, 406, 150, 843, 1234, 372, 951, 1815 952, 98, 900, 108, 146, 953, 1178, 33, -239, 591, 1816 713, 1161, 918, 1285, 326, 190, 187, 187, 98, 566, 1817 154, 98, 177, 340, 162, 1235, 846, 157, 665, 667, 1818 291, 804, 267, 253, 418, 410, 410, 1180, 805, 790, 1819 51, 1157, 847, 847, 479, 806, 410, 162, 155, 58, 1820 117, 1512, 210, 167, 660, 1424, 151, 152, 847, 441, 1821 153, 1314, 939, 1317, 1319, 808, 144, 1158, 437, 474, 1822 310, 177, 429, 879, 177, 809, 432, 1061, 1527, 817, 1823 1050, 596, 51, 58, 999, 819, 330, 156, 810, 99, 1824 272, 716, 728, 1152, 71, 272, 267, 267, 729, 98, 1825 148, 976, 115, 78, 162, 52, 326, 517, 78, 407, 1826 1167, 98, 517, 440, 604, 517, 847, 211, 730, 1000, 1827 221, 804, 481, 469, 461, 1184, 1185, 310, 805, 498, 1828 1074, 649, 657, 987, 1099, 806, 397, 190, 432, 1065, 1829 310, 486, 469, 72, 707, 695, 172, 1152, 434, 886, 1830 469, 706, 1382, 1383, 1100, 281, 568, 1382, 1383, 664, 1831 98, 149, 445, 519, 164, 669, 169, 182, 372, 780, 1832 1454, 115, 98, 1150, 1151, 345, 160, 584, 330, 597, 1833 615, 458, 177, 808, 108, 1097, 795, 1181, 1051, 407, 1834 170, 972, 65, 809, 620, 112, 1158, 470, 620, 1224, 1835 1307, 977, 98, 1003, 202, 657, 810, 583, 43, 44, 1836 434, 588, 988, -294, 624, 282, 477, 1470, 628, 112, 1837 1308, 376, 174, 248, 1384, 267, 816, 842, 164, 1393, 1838 621, 833, 43, 44, 625, 187, 177, 377, 696, 1482, 1839 1166, 213, 372, 177, 112, 1487, 141, 142, 167, 876, 1840 253, 332, 1498, 267, 1500, 310, 310, 43, 44, 267, 1841 752, 620, 555, 556, 254, 1507, 1167, 1152, 78, 251, 1842 1514, 439, 112, 1167, 1138, 1140, 1106, -524, 33, 591, 1843 253, 98, 115, 593, 591, 43, 44, 78, 244, 386, 1844 264, 326, 326, 1082, 1419, 78, 1085, 557, 558, 598, 1845 267, 58, 836, -12, 706, 387, 837, 1118, 267, 1369, 1846 620, 177, 51, 757, 333, 372, 712, 869, 680, 99, 1847 940, 334, 115, 433, 71, 1167, 1223, 658, 177, 389, 1848 604, 118, 177, 78, 310, 52, 115, 998, -448, 310, 1849 491, 310, 310, 492, 1215, 390, 695, 740, 857, 743, 1850 824, 1407, 596, 345, 1511, 190, 486, 470, 326, 416, 1851 486, 971, 213, 330, 330, 1408, 1413, 1414, 551, 552, 1852 519, 391, 519, 72, 1522, 519, 470, 326, 519, -449, 1853 469, 1526, 435, 867, 470, 433, 1000, 392, 1106, 253, 1854 332, 410, 443, 900, 858, 980, 635, 568, 568, 576, 1855 658, 410, 707, 1259, 1260, 310, 915, 897, 1050, 277, 1856 521, 1147, 1148, 859, 108, 620, 345, 1149, 393, 615, 1857 704, 901, 65, 164, 1455, 597, 1343, 597, 797, 1039, 1858 330, 903, 98, 579, 394, 410, 598, 902, 1456, 696, 1859 39, 326, 175, 176, 42, 620, 279, 904, 998, 330, 1860 620, 793, 615, 43, 44, 901, 620, 903, 280, 620, 1861 620, 567, 518, 410, 695, 835, 1195, 1196, 335, 47, 1862 48, 1062, 574, 1063, 695, 620, 548, 267, 575, 371, 1863 849, 832, 549, 550, 1428, 695, 588, 838, 1345, 287, 1864 1164, 839, 841, 864, 1010, 2, 207, 4, 5, 6, 1865 7, 1392, 43, 44, 1164, 1298, 1165, 115, 440, 336, 1866 894, 1300, 337, 330, 1055, 8, 9, 10, 11, 12, 1867 1290, 1299, 838, 676, 338, 78, 1081, 1301, 512, 575, 1868 378, 58, 740, 620, 920, 615, 1093, 371, 398, 399, 1869 706, 712, 712, 680, 400, 803, 33, 598, 1346, 401, 1870 402, 78, 403, 834, 404, 707, 375, 696, 593, 384, 1871 697, 388, 37, 1016, 38, 684, 698, 696, 345, 396, 1872 714, 725, 743, 743, 36, 498, 715, 726, 696, 177, 1873 1428, 486, 213, 408, 739, 1428, 1462, 880, 1463, 1356, 1874 740, 882, 1172, 740, 177, 425, 213, 740, 951, 952, 1875 426, 742, 899, 410, 953, 1428, 673, 177, 448, 47, 1876 48, 1409, 1428, -372, 470, 568, -112, 521, 291, 521, 1877 -112, 406, 521, 965, 620, 521, 983, -3, 1421, 966, 1878 898, 597, 699, -401, 1068, 978, 1068, 919, 1142, 596, 1879 470, 698, 1509, 597, 1460, 47, 48, 591, 1211, 1321, 1880 870, 1460, 410, 1339, 575, 459, 1323, 1324, 1325, 740, 1881 979, 803, 598, 2, 207, 4, 5, 6, 7, 518, 1882 1335, 1332, -295, 502, 518, 1333, 460, 518, 704, 8, 1883 9, 10, 11, 12, 695, 695, 940, 213, 482, 177, 1884 940, 940, 310, 112, 229, 141, 142, 50, 114, 1340, 1885 1480, 1421, 1342, 1508, 71, 740, 43, 44, 740, 873, 1886 33, 410, 1347, 78, 345, 731, 506, 732, 740, 1368, 1887 733, 345, 894, 737, 894, 1162, 797, 1410, 114, 114, 1888 37, 50, 38, 1407, 852, 1429, 115, 511, 36, 695, 1889 695, 740, 50, 418, 653, 410, 1476, 524, 50, 920, 1890 920, 803, 1477, 72, 712, 1213, 50, 1039, 1532, 1217, 1891 115, 310, 50, 598, 575, 50, 553, 554, 50, 1086, 1892 969, 966, 680, 1266, 1267, 561, 1269, 696, 696, 559, 1893 560, 114, 114, 1274, 743, 1276, 479, 332, 410, 1494, 1894 684, 707, 562, 657, 108, 486, 1088, 326, 897, 817, 1895 332, 596, 65, 563, 1305, 50, 332, 410, 50, 112, 1896 -296, 141, 142, 345, 564, 50, 407, 8, 9, 10, 1897 11, 12, 43, 44, 1206, 1352, 1353, 878, 1277, 1278, 1898 1279, 704, 696, 696, 620, 620, 885, 1123, 1106, 410, 1899 887, 1134, 1064, 410, 898, 339, 50, 112, 33, 832, 1900 1402, 966, 310, 1355, 1111, 1382, 1383, 1112, 50, 1113, 1901 43, 44, 108, 1137, 1169, 596, 1230, 1231, 707, 330, 1902 764, 765, 230, 78, 598, 231, 36, 440, 235, 1139, 1903 237, 596, 659, 50, 50, 1294, 585, 246, 1228, 650, 1904 112, 115, -3, 1220, 1363, 410, 894, 1111, 1363, 50, 1905 1112, 894, 1113, 43, 44, 651, 1381, 50, 508, 1389, 1906 920, 58, 652, 72, 766, 767, 50, 654, 267, 50, 1907 655, 834, 695, 772, 773, 656, 114, 680, 661, 695, 1908 695, 695, 258, 546, 547, 2, 207, 4, 5, 6, 1909 7, 114, 685, 686, 1388, 114, 690, 39, 688, 50, 1910 114, 42, -243, 1427, 108, 716, 727, 345, 1431, 741, 1911 43, 44, 470, 50, 50, 749, 798, -14, 546, 800, 1912 50, 811, -15, -297, 854, 861, 855, 50, 1295, 1087, 1913 8, 9, 10, 11, 12, 881, 45, 1453, 658, 883, 1914 888, 931, 695, 899, 47, 48, 908, 1444, 272, 115, 1915 -422, -528, 37, 546, 38, 715, 923, 933, 220, 944, 1916 937, 33, 945, 230, 946, 696, 898, 938, 947, 684, 1917 310, 898, 696, 696, 696, 948, 949, 963, 50, 973, 1918 974, 975, 71, 989, 620, 990, 991, 992, 115, 36, 1919 993, 78, 994, 68, 119, 50, 50, 1086, 995, -410, 1920 -409, 1060, 8, 9, 10, 11, 12, 1018, 1052, 213, 1921 1054, 1058, 50, 893, 1075, 1076, 50, 704, 1077, 1078, 1922 1084, 58, 1521, 1094, 1088, 740, 636, 68, 1521, 1095, 1923 496, 72, 1096, 33, 1098, 696, 1101, 620, 620, 1521, 1924 958, 1103, 50, 1521, 161, 272, 1104, 1405, 1105, 525, 1925 310, 108, 50, 526, 527, 528, 1520, 768, 769, 770, 1926 771, 36, 1169, 1108, 222, 1132, 1153, 1154, 1155, 1156, 1927 50, 78, 108, 1170, 1171, 1173, 50, 529, 1174, 530, 1928 65, 531, 532, 115, 1182, 1188, -3, 398, 399, 1193, 1929 108, 1186, 1086, 400, 704, 1198, 1203, 1201, 401, 402, 1930 260, 403, 230, 404, 235, 567, 440, 410, 491, 1207, 1931 1214, 72, 114, 47, 48, 1212, 1216, 50, 1219, 1088, 1932 1232, 761, 762, 763, 684, 50, 1225, 1236, 1238, 50, 1933 1240, 1241, 1245, 50, 113, 1242, 114, 1243, 114, 1252, 1934 1261, 267, 331, 112, 1262, 141, 239, 1268, 1183, 1271, 1935 260, 350, 108, 1493, 1296, 1289, 43, 44, 620, 1404, 1936 470, 39, 1272, 184, 185, 42, 1273, 211, 221, 406, 1937 1275, 1283, 1302, 114, 43, 44, 1304, 1306, 114, 909, 1938 405, 1310, 240, 115, 1311, 108, 1312, 241, 1315, 58, 1939 230, 1320, 1086, 657, 1322, 423, 1328, 1329, 428, 430, 1940 892, 1338, 410, 161, 1330, 1331, 115, 1087, 47, 48, 1941 1341, 1279, 1348, 115, 1357, 115, 1349, 115, 1169, 1088, 1942 1358, 893, 1359, 1365, 446, 1169, 114, 78, 449, 1366, 1943 450, 151, 152, 1376, 78, 153, 1377, -411, 1380, 457, 1944 1391, 1395, 50, 1397, 50, 68, 1406, 1492, 1399, 1400, 1945 471, 1467, 115, 1467, 115, 1401, 1415, 1333, 1416, 1417, 1946 478, 1418, 1420, 50, 439, 115, 1425, 72, 430, 58, 1947 970, 1492, 1492, 177, 72, 76, 1430, 1169, 50, 162, 1948 1434, 310, 114, 1436, 1432, 108, 78, 1438, 1467, 1440, 1949 1467, 50, 1442, 114, 50, 114, 1492, 1447, 1448, 1449, 1950 1450, 1461, 1087, 372, 1471, 1473, 1486, 1475, 108, 76, 1951 8, 9, 10, 11, 12, 108, 470, 326, 1478, 1479, 1952 1501, 1187, 959, 470, 1506, 1513, 72, 50, 1502, 1515, 1953 1517, 114, 1523, 114, 260, 1530, 163, 114, 589, 1531, 1954 774, 33, 1011, 775, 617, 114, 223, 778, 776, 1110, 1955 195, 777, 1288, 218, 1481, 1394, 228, 622, 50, 50, 1956 1533, 622, 1351, 1218, 407, 1367, 1464, 108, 889, 36, 1957 1192, 890, 1200, 50, 1069, 470, 911, 1073, 792, 39, 1958 1017, 184, 185, 42, 909, 860, 463, 1107, 658, 330, 1959 925, 477, 43, 44, 1350, 131, 1297, 132, 133, 134, 1960 1083, 709, 1087, 39, 0, 184, 185, 42, 43, 44, 1961 471, 782, 0, 742, 934, 410, 43, 44, 595, 783, 1962 596, 47, 48, 784, 350, 58, 47, 48, 0, 471, 1963 909, 0, 58, 353, 163, 0, 0, 471, 0, 0, 1964 0, 0, 892, 0, 410, 0, 373, 0, 50, 0, 1965 47, 48, 0, 0, 0, 691, 0, 0, 430, 0, 1966 50, 0, 1121, 0, 0, 8, 9, 10, 11, 12, 1967 0, 214, 163, 705, 0, 68, 496, 0, 0, 0, 1968 233, 0, 0, 430, 58, 0, 0, 430, 8, 9, 1969 10, 11, 12, 0, 0, 163, 33, 0, 1468, 0, 1970 1468, 112, 636, 141, 142, 0, 447, 442, 114, 0, 1971 1011, 0, 0, 0, 43, 44, 350, 0, 0, 33, 1972 0, 0, 214, 0, 36, 0, 0, 76, 0, 39, 1973 0, 0, 76, 42, 0, 1468, 0, 1468, 0, 50, 1974 720, 50, 43, 44, 0, 721, 0, 36, 114, 1465, 1975 0, 1469, 0, 112, 0, 0, 546, 0, 0, 0, 1976 1111, 785, 0, 1112, 214, 1113, 43, 44, 45, 0, 1977 39, 50, 184, 185, 42, 0, 47, 48, 622, 796, 1978 0, 0, 0, 43, 44, 0, 1497, 0, 1499, 909, 1979 813, 919, 114, 596, 1316, 508, 0, 0, 113, 47, 1980 48, 0, 0, 0, 0, 636, 0, 79, 589, 186, 1981 0, 114, 0, 589, 0, 114, 373, 47, 48, 622, 1982 0, 0, 350, 350, 0, 214, 223, 0, 0, 0, 1983 1528, 0, 1529, 0, 0, 0, 0, 0, 350, 0, 1984 39, 79, 175, 176, 42, 1536, 1537, 39, 909, 909, 1985 0, 42, 0, 43, 44, 0, 691, 0, 0, 753, 1986 43, 44, 114, 214, 758, 0, 0, 471, 214, 0, 1987 525, 216, 0, 0, 526, 527, 528, 0, 224, 375, 1988 0, 0, 0, 497, 0, 0, 801, 243, 596, 0, 1989 373, 0, 76, 471, 47, 48, 350, 0, 529, 114, 1990 530, 0, 531, 1287, 0, 924, 353, 0, 430, 0, 1991 0, 76, 463, 50, 0, 0, 0, 0, 50, 76, 1992 112, 0, 216, 0, 0, 0, 0, 1111, 0, 0, 1993 1112, 705, 1113, 43, 44, 50, 954, 353, 0, 0, 1994 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 1995 0, 0, 0, 214, 39, 353, 0, 76, 42, 114, 1996 0, 1318, 0, 0, 216, 355, 0, 43, 44, 0, 1997 0, 33, 0, 0, 691, 0, 0, 0, 0, 866, 1998 0, 868, 0, 0, 691, 215, 0, 622, 0, 0, 1999 986, 0, 0, 711, 0, 691, 0, 0, 353, 36, 2000 0, 47, 48, 0, 39, 997, 184, 185, 42, 0, 2001 39, 114, 175, 176, 42, 0, 0, 43, 44, 0, 2002 0, 0, 0, 43, 44, 216, 0, 0, 0, 0, 2003 0, 914, 0, 214, 0, 0, 215, 0, 0, 0, 2004 0, 0, 0, 595, 0, 596, 0, 0, 0, 214, 2005 0, 47, 48, 0, 0, 68, 909, 0, 0, 79, 2006 0, 353, 0, 216, 79, 0, 0, 0, 216, 0, 2007 0, 0, 0, 909, 214, 0, 0, 796, 215, 114, 2008 0, 114, 114, 0, 705, 0, 0, 1066, 8, 9, 2009 10, 11, 12, 0, 0, 412, 39, 0, 184, 185, 2010 42, 0, 420, 0, 353, 353, 0, 0, 0, 43, 2011 44, 0, 0, 1080, 0, 0, 0, 0, 0, 33, 2012 353, 0, 430, 119, 0, 0, 0, 0, 0, 0, 2013 0, 0, 0, 81, 0, 1491, 0, 410, 353, 215, 2014 0, 0, 0, 47, 48, 909, 909, 36, 0, 76, 2015 0, 0, 39, 216, 184, 185, 42, 0, 224, 0, 2016 114, 0, 0, 0, 0, 43, 44, 81, 0, 0, 2017 0, 0, 0, 0, 412, 76, 589, 215, 353, 0, 2018 0, 0, 215, 0, 0, 0, 0, 0, 0, 428, 2019 0, 892, 214, 410, 691, 691, 0, 350, 350, 47, 2020 48, 0, 0, 0, 225, 0, 0, 50, 50, 0, 2021 0, 0, 0, 353, 0, 1168, 0, 114, 114, 0, 2022 214, 0, 0, 0, 79, 214, 0, 0, 0, 0, 2023 0, 573, 39, 216, 184, 185, 42, 0, 355, 577, 2024 0, 0, 580, 79, 0, 43, 44, 0, 0, 691, 2025 691, 79, 0, 0, 0, 114, 353, 8, 9, 10, 2026 11, 12, 0, 0, 0, 0, 353, 215, 0, 355, 2027 0, 266, 223, 0, 216, 0, 0, 353, 1102, 47, 2028 48, 0, 0, 0, 0, 0, 0, 355, 33, 79, 2029 0, 356, 0, 0, 214, 0, 0, 1114, 0, 59, 2030 59, 1114, 412, 0, 0, 0, 420, 0, 214, 0, 2031 0, 0, 0, 0, 50, 114, 36, 0, 0, 0, 2032 705, 39, 0, 143, 114, 42, 0, 0, 0, 497, 2033 355, 0, 0, 59, 43, 44, 0, 76, 50, 50, 2034 0, 0, 0, 0, 0, 0, 0, 215, 1114, 0, 2035 8, 9, 10, 11, 12, 0, 0, 0, 0, 353, 2036 711, 0, 1265, 50, 0, 0, 353, 59, 47, 48, 2037 59, 0, 126, 129, 130, 242, 245, 0, 0, 0, 2038 0, 33, 412, 68, 0, 81, 0, 0, 215, 0, 2039 81, 0, 216, 355, 0, 691, 0, 705, 0, 214, 2040 0, 119, 0, 0, 0, 0, 0, 0, 0, 36, 2041 0, 0, 0, 0, 39, 88, 184, 185, 42, 0, 2042 216, 0, 0, 0, 0, 216, 0, 43, 44, 0, 2043 0, 0, 691, 0, 0, 0, 355, 355, 0, 691, 2044 691, 691, 0, 0, 255, 1114, 256, 0, 0, 88, 2045 350, 350, 355, 1491, 0, 410, 0, 348, 0, 0, 2046 0, 47, 48, 1168, 0, 0, 0, 0, 0, 0, 2047 355, 0, 573, 573, 0, 0, 353, 353, 0, 353, 2048 353, 79, 0, 0, 225, 0, 226, 0, 0, 0, 2049 0, 0, 0, 0, 216, 0, 119, 76, 0, 0, 2050 0, 0, 691, 0, 0, 0, 215, 79, 216, 0, 2064 2051 355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2065 216, 0, 0, 0, 0, 355, 0, 225, 0, 0, 2066 0, 0, 0, 0, 128, 0, 0, 0, 1266, 0, 2067 0, 0, 128, 355, 128, 128, 0, 0, 0, 128, 2068 0, 128, 128, 412, 79, 0, 0, 0, 0, 68, 2069 0, 0, 0, 0, 0, 0, 0, 0, 353, 88, 2070 0, 692, 0, 706, 88, 0, 1351, 119, 0, 0, 2071 79, 0, 0, 355, 0, 0, 0, 0, 0, 0, 2072 0, 0, 1222, 81, 0, 0, 0, 8, 9, 10, 2073 11, 12, 0, 0, 0, 0, 0, 356, 692, 0, 2074 223, 216, 81, 0, 0, 692, 692, 692, 355, 0, 2075 81, 128, 0, 0, 0, 0, 350, 350, 0, 33, 2076 0, 76, 0, 0, 0, 0, 0, 0, 356, 1169, 2077 0, 0, 0, 353, 0, 353, 0, 0, 0, 0, 2078 0, 0, 0, 0, 0, 0, 356, 36, 81, 0, 2079 0, 355, 39, 0, 184, 185, 42, 0, 226, 0, 2080 214, 355, 119, 0, 0, 43, 44, 224, 692, 0, 2081 353, 0, 355, 0, 0, 0, 0, 353, 353, 353, 2082 0, 0, 0, 126, 129, 130, 0, 0, 353, 353, 2083 356, 893, 0, 410, 0, 0, 0, 0, 0, 47, 2084 48, 76, 0, 8, 9, 10, 11, 12, 0, 0, 2085 0, 168, 0, 173, 0, 0, 179, 180, 181, 0, 2086 183, 1466, 0, 1470, 88, 0, 0, 0, 0, 0, 2087 0, 0, 79, 0, 234, 33, 0, 350, 363, 0, 2088 353, 0, 0, 88, 0, 0, 249, 250, 0, 0, 2089 0, 88, 0, 356, 355, 255, 0, 256, 1498, 0, 2090 1500, 355, 119, 36, 0, 0, 0, 0, 39, 363, 2091 184, 185, 42, 0, 0, 0, 0, 0, 0, 0, 2092 0, 43, 44, 0, 0, 1169, 0, 363, 0, 88, 2093 0, 216, 1169, 0, 0, 0, 356, 356, 0, 0, 2094 0, 0, 1529, 0, 1530, 0, 0, 186, 0, 353, 2095 0, 0, 356, 0, 0, 47, 48, 1537, 1538, 0, 2096 0, 8, 9, 10, 11, 12, 0, 0, 0, 0, 2097 356, 363, 0, 0, 0, 0, 0, 395, 0, 0, 2098 0, 81, 214, 0, 1169, 0, 0, 414, 415, 0, 2099 0, 1517, 419, 33, 421, 422, 0, 76, 0, 0, 2100 0, 0, 0, 0, 76, 0, 0, 81, 0, 0, 2101 356, 355, 355, 0, 355, 355, 0, 0, 0, 0, 2102 0, 36, 0, 0, 0, 0, 39, 0, 184, 185, 2103 42, 0, 79, 0, 363, 0, 0, 0, 0, 43, 2104 44, 0, 0, 0, 0, 356, 0, 0, 0, 0, 2105 0, 0, 0, 0, 128, 128, 76, 0, 0, 0, 2106 8, 9, 10, 11, 12, 266, 355, 355, 0, 0, 2107 0, 0, 0, 47, 48, 0, 0, 363, 363, 214, 2108 0, 128, 0, 0, 128, 128, 0, 128, 356, 128, 2109 128, 0, 33, 363, 128, 128, 0, 0, 356, 0, 2110 0, 0, 0, 0, 225, 0, 0, 0, 0, 356, 2111 0, 363, 0, 216, 0, 8, 9, 10, 11, 12, 2112 36, 0, 88, 0, 0, 39, 0, 184, 185, 42, 2113 0, 0, 0, 0, 0, 0, 0, 355, 43, 44, 2114 588, 0, 595, 0, 0, 0, 0, 33, 88, 0, 2115 0, 363, 0, 619, 620, 0, 0, 0, 0, 0, 2116 0, 0, 0, 0, 1492, 0, 410, 0, 0, 81, 2117 0, 0, 47, 48, 0, 36, 0, 0, 0, 224, 2118 39, 0, 0, 0, 42, 0, 363, 0, 0, 0, 2119 0, 356, 0, 43, 44, 0, 0, 0, 356, 0, 2120 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2121 216, 0, 355, 0, 355, 0, 0, 0, 0, 712, 2122 0, 0, 0, 0, 0, 0, 0, 47, 48, 363, 2123 128, 128, 0, 0, 0, 0, 0, 0, 0, 363, 2124 0, 0, 0, 0, 0, 226, 0, 0, 0, 355, 2125 363, 0, 0, 0, 0, 0, 355, 355, 355, 0, 2126 0, 0, 0, 0, 0, 0, 0, 355, 355, 0, 2052 0, 59, 0, 0, 0, 0, 395, 0, 0, 0, 2053 0, 353, 353, 0, 215, 455, 414, 415, 0, 215, 2054 0, 419, 0, 421, 422, 355, 0, 0, 0, 0, 2055 81, 59, 0, 0, 0, 871, 0, 0, 0, 874, 2056 0, 0, 0, 0, 356, 1114, 0, 1114, 1114, 81, 2057 0, 350, 0, 363, 0, 0, 0, 81, 0, 0, 2058 0, 8, 9, 10, 11, 12, 0, 0, 355, 214, 2059 0, 0, 0, 0, 0, 356, 119, 0, 355, 216, 2060 0, 0, 353, 0, 224, 0, 0, 0, 215, 355, 2061 0, 0, 33, 356, 0, 81, 0, 0, 0, 1168, 2062 0, 0, 215, 0, 0, 0, 1168, 533, 534, 535, 2063 536, 537, 538, 539, 540, 541, 542, 543, 0, 0, 2064 36, 0, 0, 0, 223, 39, 1114, 184, 185, 42, 2065 0, 0, 0, 0, 0, 0, 356, 0, 43, 44, 2066 0, 544, 0, 0, 0, 76, 0, 88, 0, 79, 2067 637, 0, 88, 0, 0, 0, 0, 353, 1168, 353, 2068 0, 0, 0, 0, 186, 1516, 0, 0, 0, 0, 2069 573, 355, 47, 48, 0, 0, 0, 0, 355, 0, 2070 0, 0, 0, 1114, 1114, 0, 0, 0, 0, 0, 2071 0, 0, 0, 215, 353, 0, 0, 0, 0, 356, 2072 0, 353, 353, 353, 0, 0, 0, 0, 0, 0, 2073 348, 0, 353, 353, 0, 0, 0, 0, 0, 0, 2074 0, 1445, 0, 0, 0, 76, 0, 0, 0, 0, 2127 2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2128 79, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2129 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2130 25, 26, 27, 0, 0, 28, 29, 30, 356, 356, 2131 88, 356, 356, 0, 0, 33, 0, 0, 0, 355, 2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 2133 0, 0, 363, 0, 0, 0, 0, 0, 0, 363, 2134 0, 0, 0, 36, 0, 0, 0, 0, 39, 0, 2135 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, 2136 0, 43, 44, 356, 356, 0, 0, 788, 789, 0, 2076 0, 0, 356, 356, 0, 0, 226, 0, 0, 0, 2077 0, 214, 0, 0, 0, 0, 0, 0, 356, 0, 2078 718, 59, 722, 0, 353, 0, 0, 0, 0, 216, 2079 0, 0, 0, 0, 0, 0, 356, 0, 0, 0, 2080 0, 1495, 0, 412, 0, 0, 0, 81, 355, 355, 2081 1503, 355, 355, 0, 0, 0, 0, 0, 0, 168, 2082 0, 173, 348, 0, 179, 180, 181, 0, 183, 79, 2083 0, 0, 88, 81, 0, 0, 356, 0, 0, 0, 2084 0, 0, 234, 0, 0, 0, 363, 0, 0, 0, 2085 0, 88, 0, 353, 249, 250, 0, 0, 0, 88, 2086 0, 0, 0, 355, 355, 0, 0, 0, 214, 0, 2087 0, 356, 0, 0, 0, 0, 0, 363, 1124, 0, 2088 0, 0, 0, 0, 0, 348, 0, 0, 0, 0, 2089 0, 0, 0, 0, 1135, 363, 0, 88, 0, 0, 2090 0, 76, 0, 215, 0, 0, 0, 0, 76, 0, 2091 0, 0, 0, 0, 356, 787, 788, 0, 0, 0, 2092 0, 0, 0, 0, 356, 0, 853, 0, 348, 348, 2093 225, 0, 0, 0, 355, 356, 0, 0, 363, 0, 2094 0, 0, 818, 0, 348, 821, 822, 0, 825, 0, 2095 827, 828, 0, 0, 0, 829, 830, 0, 0, 0, 2096 76, 0, 0, 8, 9, 10, 11, 12, 0, 412, 2097 0, 216, 0, 0, 0, 905, 224, 907, 0, 0, 2098 0, 455, 0, 0, 0, 0, 0, 0, 0, 0, 2099 0, 0, 0, 0, 33, 81, 0, 79, 0, 0, 2100 0, 363, 348, 0, 0, 0, 0, 0, 1221, 355, 2101 0, 355, 0, 0, 0, 0, 0, 356, 0, 0, 2102 0, 0, 36, 0, 356, 0, 0, 39, 0, 184, 2103 185, 42, 0, 0, 0, 0, 0, 0, 0, 0, 2104 43, 44, 0, 0, 363, 363, 355, 0, 0, 0, 2105 0, 0, 0, 355, 355, 355, 0, 0, 0, 0, 2106 363, 0, 0, 0, 355, 355, 266, 0, 216, 0, 2107 0, 0, 0, 0, 47, 48, 0, 79, 363, 0, 2108 0, 0, 0, 0, 0, 215, 0, 0, 0, 88, 2109 0, 956, 957, 0, 0, 0, 0, 0, 0, 0, 2110 0, 0, 0, 0, 0, 0, 0, 0, 587, 0, 2111 594, 0, 0, 0, 0, 88, 355, 0, 363, 0, 2112 0, 618, 619, 0, 0, 128, 128, 128, 0, 0, 2113 0, 0, 0, 0, 356, 356, 0, 356, 356, 0, 2114 0, 0, 0, 0, 0, 0, 637, 0, 0, 0, 2115 0, 0, 1021, 363, 0, 81, 0, 0, 0, 0, 2116 0, 59, 8, 9, 10, 11, 12, 13, 14, 15, 2117 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2118 26, 27, 215, 348, 0, 355, 0, 0, 0, 356, 2119 356, 0, 1070, 33, 0, 0, 363, 128, 0, 128, 2120 0, 0, 0, 0, 0, 0, 363, 0, 0, 0, 2121 0, 0, 226, 0, 0, 0, 0, 363, 0, 0, 2122 0, 36, 0, 0, 276, 0, 0, 0, 0, 59, 2123 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 2124 79, 0, 0, 0, 0, 0, 0, 1071, 0, 637, 2137 2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2138 0, 128, 0, 0, 0, 0, 128, 45, 355, 46, 2139 0, 0, 0, 0, 819, 47, 48, 822, 823, 0, 2140 826, 0, 828, 829, 0, 0, 0, 830, 831, 8, 2141 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2142 19, 20, 21, 22, 23, 24, 25, 26, 27, -298, 2143 0, 0, 0, 0, 356, 0, 79, 0, 0, 0, 2144 0, 33, 166, 79, 0, 0, 0, 0, 0, 363, 2145 363, 997, 363, 363, 8, 9, 10, 11, 12, 219, 2146 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2147 88, 0, 0, 0, 0, 0, 225, 0, 0, 0, 2148 -298, 0, 0, 0, 283, 284, 33, 285, 0, 913, 2149 0, 914, 0, 0, 0, 79, 0, 81, 917, 918, 2150 0, 0, 0, 923, 363, 363, 166, 0, 0, 356, 2151 273, 356, 0, 286, 36, 0, 929, 0, 0, 287, 2152 0, 933, 0, 288, 0, 0, 289, 290, 291, 292, 2153 293, 294, 43, 44, 0, 295, 296, 0, 0, 166, 2154 0, 128, 0, 957, 958, 0, 356, 0, 595, 369, 2155 0, 0, 374, 356, 356, 356, 0, 0, 297, 0, 2156 378, 0, 0, 0, 356, 356, 344, 48, 299, 300, 2157 301, 302, 0, 0, 212, 363, 0, 81, 0, 0, 2158 0, 0, 0, 232, 0, 236, 0, 238, 0, 0, 2159 0, 0, 0, 0, 247, 0, 0, 0, 0, 0, 2160 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 2161 0, 0, 0, 219, 0, 0, 356, 226, 0, 0, 2162 0, 0, 0, 0, 0, 212, 0, 236, 238, 247, 2163 0, 166, 0, 0, 0, 0, 0, 0, 88, 0, 2164 0, 1007, 0, 1008, 1009, 1010, 0, 0, 0, 0, 2165 363, 0, 363, 0, 0, 0, 374, 0, 0, 0, 2166 0, 0, 1054, 166, 0, 0, 0, 212, 0, 128, 2167 0, 0, 0, 0, 0, 0, 1060, 0, 0, 0, 2168 0, 0, 0, 0, 0, 356, 0, 363, 523, 0, 2169 0, 0, 0, 0, 363, 363, 363, 0, 0, 1072, 2170 0, 166, 0, 0, 0, 363, 363, 0, 0, 0, 2171 0, 0, 0, 0, 0, 1080, 0, 0, 88, 0, 2126 356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2127 0, 0, 0, 0, 0, 0, 0, 88, 996, 128, 2128 0, 8, 9, 10, 11, 12, 0, 128, 0, 128, 2129 128, 0, 79, 0, 128, 0, 128, 128, 0, 363, 2130 0, 0, 225, 348, 348, 0, 363, 0, 0, 0, 2131 283, 284, 33, 285, 0, 0, 0, 0, 0, 0, 2132 0, 59, 0, 81, 0, 0, 0, 0, 0, 0, 2133 0, 0, 0, 0, 0, 356, 0, 356, 0, 286, 2134 36, 0, 0, 1021, 0, 287, 0, 0, 0, 288, 2135 0, 0, 289, 290, 291, 292, 293, 294, 43, 44, 2136 0, 295, 296, 0, 0, 0, 128, 0, 0, 0, 2137 0, 0, 356, 0, 0, 0, 0, 0, 0, 356, 2138 356, 356, 0, 0, 297, 0, 378, 0, 0, 0, 2139 356, 356, 344, 48, 299, 300, 301, 302, 0, 0, 2140 0, 0, 1197, 81, 0, 0, 0, 0, 0, 0, 2141 0, 166, 0, 0, 0, 0, 363, 363, 0, 363, 2142 363, 0, 0, 0, 0, 0, 0, 0, 219, 0, 2143 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 2144 0, 0, 356, 0, 0, 0, 0, 0, 0, 0, 2145 0, 283, 284, 0, 285, 1264, 912, 0, 913, 0, 2146 0, 0, 0, 0, 0, 916, 917, 59, 59, 0, 2147 922, 363, 363, 0, 0, 166, 0, 0, 0, 273, 2148 286, 0, 0, 928, 0, 0, 287, 0, 932, 59, 2149 288, 0, 0, 289, 290, 291, 292, 293, 294, 43, 2150 44, 0, 295, 296, 0, 0, 0, 59, 166, 0, 2151 0, 356, 0, 0, 0, 594, 0, 0, 369, 0, 2152 0, 374, 0, 0, 0, 297, 0, 378, 0, 0, 2153 1286, 0, 0, 47, 48, 299, 300, 301, 302, 0, 2154 0, 0, 363, 0, 0, 0, 779, 0, 0, 0, 2155 0, 0, 0, 0, 0, 0, 348, 348, 0, 81, 2156 0, 0, 0, 0, 59, 0, 81, 0, 0, 59, 2157 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2158 0, 0, 219, 0, 226, 0, 0, 0, 0, 0, 2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2160 166, 0, 59, 0, 0, 88, 0, 0, 1006, 0, 2161 1007, 1008, 1009, 0, 0, 0, 0, 363, 81, 363, 2162 0, 0, 0, 0, 0, 374, 0, 0, 0, 1053, 2163 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 2164 0, 0, 0, 1059, 0, 0, 0, 0, 0, 0, 2165 0, 0, 0, 0, 363, 0, 0, 522, 0, 0, 2166 0, 363, 363, 363, 0, 0, 0, 0, 128, 128, 2167 166, 0, 363, 363, 0, 0, 0, 348, 0, 0, 2168 0, 0, 1079, 0, 0, 88, 0, 0, 0, 0, 2169 0, 0, 0, 0, 0, 128, 0, 0, 128, 128, 2170 0, 128, 59, 128, 128, 592, 0, 0, 128, 128, 2171 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2172 0, 0, 0, 0, 363, 59, 1109, 0, 0, 0, 2173 0, 1119, 59, 0, 0, 0, 1122, 0, 0, 0, 2174 0, 1126, 0, 0, 0, 0, 1128, 0, 1129, 1130, 2175 0, 0, 1133, 0, 0, 0, 0, 0, 0, 0, 2176 0, 1145, 0, 0, 0, 0, 0, 0, 0, 0, 2177 0, 0, 0, 0, 0, 0, 0, 1159, 1160, 0, 2178 0, 0, 0, 0, 59, 166, 166, 0, 0, 0, 2179 0, 369, 0, 363, 0, 0, 0, 0, 0, 0, 2180 0, 0, 0, 1189, 0, 0, 1191, 0, 0, 0, 2181 0, 0, 522, 0, 0, 0, 8, 9, 10, 11, 2182 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2183 22, 23, 24, 25, 26, 27, -298, 0, 0, 0, 2184 708, 88, 0, 0, 128, 128, 0, 33, 88, 1205, 2185 0, 0, 166, 0, 0, 1209, 1210, 0, 0, 0, 2186 0, 0, 0, 0, 522, 0, 522, 0, 0, 522, 2187 0, 166, 522, 0, 1226, 36, 0, 0, 0, 1233, 2188 0, 0, 0, 369, 1237, 0, -298, 0, 0, 0, 2189 0, 0, 0, 0, 0, 1244, 0, 0, 0, 0, 2190 88, 0, 0, 0, 0, 0, 0, 0, 1251, 0, 2191 1253, 1254, 1255, 1256, 0, 0, 0, 212, 0, 0, 2192 0, 0, 0, 0, 0, 1263, 232, 1159, 236, 0, 2193 238, 173, 0, 0, 0, 166, 0, 247, 0, 0, 2194 0, 0, 0, 0, 0, 0, 369, 0, 0, 799, 2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 1291, 2196 1292, 0, 0, 0, 0, 0, 0, 0, 212, 0, 2197 236, 238, 247, 0, 0, 592, 0, 0, 0, 0, 2198 592, 0, 0, 0, 0, 0, 0, 0, 0, 369, 2199 369, 0, 0, 0, 0, 128, 0, 0, 0, 0, 2200 128, 0, 0, 0, 0, 369, 0, 0, 0, 0, 2201 212, 0, 0, 1326, 1327, 0, 0, 0, 0, 0, 2202 0, 0, 0, 1337, 0, 0, 0, 0, 0, 0, 2203 0, 0, 0, 0, 0, 0, 0, 522, 8, 9, 2204 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2205 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2206 28, 29, 30, 369, 0, 921, 0, 0, 0, 33, 2207 0, 212, 0, 236, 238, 247, 0, 158, 0, 0, 2208 0, 0, 0, 0, 0, 1372, 0, 1373, 1374, 1375, 2209 0, 0, 0, 0, 0, 0, 0, 36, 708, 1379, 2210 0, 0, 39, 0, 40, 41, 42, 1390, 0, 212, 2211 0, 0, 0, 0, 212, 43, 44, 0, 0, 0, 2212 0, 0, 0, 0, 252, 0, 0, 0, 0, 495, 2213 0, 0, 1411, 1412, 257, 0, 0, 0, 0, 0, 2214 0, 45, 0, 46, 0, 0, 0, 0, 0, 47, 2215 48, 324, 0, 0, 0, 128, 616, 0, 0, 0, 2216 0, 346, 0, 0, 0, 0, 0, 0, 0, 0, 2217 0, 0, 381, 381, 0, 0, 0, 1451, 1452, 0, 2218 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2219 1457, 0, 0, 0, 0, 0, 0, 1457, 0, 212, 2220 0, 0, 0, 385, 236, 238, 0, 0, 0, 0, 2221 0, 0, 247, 0, 0, 0, 0, 0, 0, 0, 2222 0, 0, 0, 0, 0, 0, 417, 0, 0, 0, 2223 1490, 0, 0, 0, 1496, 0, 0, 0, 0, 0, 2224 431, 0, 0, 324, 369, 0, 0, 0, 0, 436, 2225 0, 708, 0, 0, 212, 0, 0, 0, 0, 444, 2226 0, 0, 1518, 0, 1519, 0, 522, 476, 0, 0, 2227 0, 0, 212, 0, 0, 0, 0, 212, 0, 212, 2228 0, 0, 0, 128, 462, 0, 0, 0, 0, 472, 2229 0, 166, 1534, 1535, 0, 212, 0, 0, 212, 212, 2230 1538, 1539, 480, 0, 0, 0, 212, 0, 490, 0, 2231 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2232 212, 0, 0, 0, 0, 0, 0, 212, 0, 523, 2233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2234 0, 0, 0, 592, 8, 9, 10, 11, 12, 13, 2235 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2236 24, 25, 26, 27, 369, 369, 28, 29, 30, 0, 2237 582, 0, 0, 0, 586, 33, 0, 0, 0, 0, 2238 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 2239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2240 0, 0, 629, 36, 0, 0, 630, 631, 0, 632, 2241 208, 41, 0, 0, 0, 0, 643, 644, 0, 645, 2242 646, 522, 647, 0, 648, 0, 0, 0, 0, 0, 2172 2243 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 2173 236, 238, 247, 81, 0, 0, 593, 0, 0, 0, 2174 81, 617, 0, 0, 0, 0, 0, 0, 0, 0, 2175 0, 0, 0, 0, 0, 0, 0, 363, 0, 1110, 2176 0, 0, 0, 0, 1120, 0, 212, 0, 0, 1123, 2177 0, 212, 0, 0, 1127, 0, 0, 0, 0, 1129, 2178 0, 1130, 1131, 0, 0, 1134, 496, 0, 0, 0, 2179 0, 0, 81, 0, 1146, 0, 0, 0, 0, 0, 2244 0, 582, 0, 0, 0, 0, 0, 0, 0, 663, 2245 0, 0, 0, 0, 0, 47, 48, 0, 0, 0, 2246 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 2247 0, 212, 0, 674, 0, 702, 0, 0, 0, 0, 2248 0, 0, 0, 0, 0, 0, 0, 708, 0, 0, 2249 0, 0, 0, 0, 0, 0, 0, 0, 0, 700, 2250 0, 0, 0, 0, 0, 703, 0, 0, 0, 0, 2251 462, 0, 0, 0, 735, 0, 0, 0, 0, 0, 2252 0, 0, 0, 0, 0, 0, 751, 0, 219, 0, 2253 0, 0, 735, 0, 0, 735, 341, 364, 0, 0, 2254 212, 0, 0, 0, 0, 0, 738, 0, 760, 0, 2255 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, 2256 0, 756, 0, 0, 708, 0, 0, 0, 0, 413, 2257 0, 0, 0, 0, 0, 495, 413, 0, 789, 0, 2258 0, 0, 0, 0, 0, 346, 0, 0, 0, 751, 2259 0, 0, 0, 0, 0, 0, 0, 0, 781, 0, 2260 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 2261 0, 0, 0, 0, 0, 0, 0, 369, 369, 0, 2262 0, 0, 0, 0, 0, 219, 0, 812, 0, 0, 2263 0, 0, 0, 0, 212, 850, 0, 0, 0, 0, 2264 0, 0, 0, 381, 0, 212, 0, 0, 413, 0, 2180 2265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2181 1160, 1161, 0, 0, 0, 0, 166, 166, 0, 0, 2182 0, 0, 369, 0, 0, 0, 363, 0, 0, 0, 2183 0, 0, 0, 0, 0, 0, 1190, 212, 0, 1192, 2184 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 2185 0, 0, 0, 0, 1198, 0, 212, 0, 0, 0, 2186 0, 236, 238, 0, 0, 0, 0, 0, 0, 247, 2187 0, 709, 0, 0, 88, 0, 0, 0, 0, 0, 2188 0, 88, 1206, 0, 166, 0, 0, 0, 1210, 1211, 2189 0, 0, 0, 0, 0, 0, 523, 0, 523, 0, 2190 0, 523, 0, 166, 523, 0, 0, 1227, 0, 0, 2191 0, 212, 1234, 0, 0, 369, 0, 1238, 0, 0, 2192 0, 0, 0, 0, 0, 0, 0, 0, 1245, 212, 2193 0, 0, 0, 88, 212, 0, 212, 0, 0, 0, 2194 0, 1252, 0, 1254, 1255, 1256, 1257, 0, 0, 0, 2195 0, 0, 212, 0, 0, 212, 212, 0, 1264, 0, 2196 1160, 0, 0, 212, 173, 0, 0, 166, 0, 0, 2197 0, 0, 0, 0, 0, 0, 0, 212, 369, 0, 2198 0, 800, 1287, 0, 212, 0, 0, 0, 0, 0, 2199 0, 0, 1292, 1293, 0, 0, 1144, 0, 0, 8, 2200 9, 10, 11, 12, 0, 0, 0, 593, 0, 0, 2201 0, 0, 593, 158, 0, 0, 0, 0, 0, 0, 2202 0, 369, 369, 0, 0, 0, 0, 0, 0, 283, 2203 284, 33, 285, 0, 0, 0, 0, 369, 0, 0, 2204 0, 0, 0, 0, 0, 0, 1327, 1328, 0, 0, 2205 0, 0, 0, 0, 0, 0, 1338, 0, 286, 36, 2206 252, 0, 0, 0, 287, 0, 0, 0, 288, 523, 2207 257, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2208 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 2209 0, 0, 0, 0, 0, 369, 212, 922, 0, 0, 2210 0, 0, 0, 297, 0, 378, 0, 283, 284, 0, 2211 285, 1145, 48, 299, 300, 301, 302, 0, 1373, 0, 2212 1374, 1375, 1376, 0, 212, 0, 0, 0, 0, 212, 2213 709, 0, 1380, 0, 0, 0, 286, 0, 0, 385, 2214 1391, 0, 287, 0, 0, 0, 288, 0, 0, 289, 2215 290, 291, 292, 293, 294, 43, 44, 0, 295, 296, 2216 0, 0, 417, 0, 0, 1412, 1413, 0, 0, 0, 2217 0, 0, 0, 0, 0, 0, 431, 0, 0, 0, 2218 0, 297, 0, 378, 0, 436, 0, 0, 617, 47, 2219 48, 299, 300, 301, 302, 444, 0, 0, 212, 0, 2220 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 2221 1452, 1453, 212, 0, 0, 0, 0, 0, 0, 0, 2222 462, 0, 0, 1458, 0, 472, 0, 0, 0, 0, 2223 1458, 0, 0, 496, 0, 0, 0, 0, 480, 0, 2224 0, 0, 0, 0, 491, 0, 495, 0, 0, 0, 2225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2226 0, 0, 0, 1491, 0, 524, 0, 1497, 0, 0, 2227 0, 0, 0, 0, 0, 0, 369, 0, 0, 0, 2228 0, 0, 0, 709, 0, 0, 0, 0, 0, 0, 2229 0, 0, 212, 0, 0, 1519, 0, 1520, 523, 0, 2230 0, 0, 0, 212, 0, 0, 583, 0, 0, 0, 2231 587, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2232 212, 0, 0, 166, 0, 1535, 1536, 0, 0, 0, 2233 0, 0, 0, 1539, 1540, 0, 0, 0, 630, 0, 2234 0, 0, 631, 632, 0, 633, 0, 0, 0, 0, 2235 0, 0, 644, 645, 0, 646, 647, 0, 648, 0, 2236 649, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2237 0, 0, 0, 0, 0, 593, 0, 583, 0, 0, 2238 0, 0, 0, 0, 0, 664, 0, 0, 0, 341, 2239 364, 0, 0, 0, 0, 0, 369, 369, 0, 0, 2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 675, 2241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2242 0, 0, 413, 0, 0, 0, 0, 0, 0, 413, 2243 0, 212, 0, 0, 0, 701, 0, 0, 0, 0, 2244 0, 704, 0, 0, 0, 0, 462, 0, 0, 0, 2245 0, 0, 0, 523, 0, 0, 0, 0, 0, 0, 2246 0, 212, 8, 9, 10, 11, 12, 13, 14, 15, 2247 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2248 26, 27, 0, 739, 28, 29, 30, 0, 0, 0, 2249 0, 0, 0, 212, 33, 0, 0, 0, 757, 0, 2250 0, 413, 0, 0, 212, 0, 0, 0, 0, 0, 2251 0, 0, 0, 0, 0, 0, 0, 0, 0, 709, 2252 0, 0, 36, 0, 0, 0, 0, 112, 0, 40, 2253 41, 0, 0, 0, 0, 782, 0, 0, 0, 0, 2254 43, 44, 0, 0, 792, 0, 0, 0, 0, 0, 2255 0, 0, 0, 0, 0, 0, 0, 0, 413, 0, 2256 219, 0, 0, 0, 813, 0, 413, 579, 46, 413, 2257 582, 0, 0, 212, 47, 48, 0, 364, 0, 0, 2258 0, 609, 0, 0, 0, 0, 0, 212, 0, 0, 2259 0, 0, 0, 0, 0, 0, 709, 0, 0, 0, 2260 627, 0, 852, 0, 8, 9, 10, 11, 12, 13, 2261 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2262 24, 25, 26, 27, 0, 0, 28, 29, 30, 413, 2263 0, 0, 0, 413, 0, 0, 33, 0, 885, 0, 2264 0, 0, 0, 0, 0, 0, 892, 0, 0, 369, 2265 369, 0, 0, 0, 0, 0, 0, 219, 0, 0, 2266 0, 0, 0, 364, 36, 0, 0, 0, 0, 39, 2267 0, 208, 41, 42, 0, 212, 0, 252, 0, 0, 2268 0, 0, 43, 44, 0, 0, 0, 0, 930, 931, 2269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2270 0, 0, 0, 0, 0, 0, 0, 0, 45, 413, 2271 271, 0, 364, 0, 0, 0, 47, 48, 0, 0, 2272 965, 0, 0, 0, 0, 969, 0, 8, 9, 10, 2266 0, 0, 212, 0, 0, 851, 0, 8, 9, 10, 2273 2267 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2274 2268 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2275 29, 30, 413, 0, 0, 0, 364, 0, 0, 33, 2269 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 2270 0, 884, 0, 0, 0, 413, 0, 0, 0, 891, 2271 0, 0, 0, 413, 578, 0, 413, 581, 0, 926, 2272 0, 0, 0, 0, 364, 0, 36, 0, 608, 0, 2273 0, 39, 0, 208, 41, 42, 0, 0, 369, 0, 2274 252, 751, 0, 950, 43, 44, 0, 626, 0, 0, 2275 0, 929, 930, 960, 0, 0, 0, 0, 0, 967, 2276 2276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2277 369, 0, 212, 0, 0, 0, 0, 0, 0, 0, 2278 0, 0, 0, 0, 0, 1002, 0, 36, 0, 0, 2279 0, 0, 1003, 0, 40, 41, 0, 0, 0, 0, 2280 413, 413, 0, 0, 0, 1005, 0, 1006, 0, 0, 2281 0, 0, 0, 0, 0, 0, 0, 0, 795, 364, 2282 1016, 0, 0, 0, 0, 0, 1020, 523, 609, 523, 2283 609, 609, 0, 258, 0, 324, 0, 609, 1057, 47, 2284 48, 1058, 0, 0, 0, 346, 0, 832, 364, 0, 2285 0, 0, 0, 364, 0, 0, 381, 381, 0, 0, 2286 0, 0, 364, 364, 523, 0, 523, 0, 0, 0, 2287 0, 0, 0, 0, 0, 0, 0, 0, 364, 0, 2288 0, 0, 0, 413, 873, 0, 0, 413, 876, 0, 2289 0, 0, 0, 166, 878, 0, 506, 0, 508, 511, 2290 0, 0, 0, 0, 0, 0, 0, 0, 514, 515, 2291 0, 0, 0, 413, 0, 0, 0, 0, 283, 284, 2292 0, 285, 0, 508, 508, 0, 0, 324, 0, 0, 2293 0, 0, 0, 0, 0, 0, 364, 609, 0, 0, 2294 0, 0, 0, 0, 0, 0, 0, 286, 0, 1128, 2295 0, 476, 0, 634, 0, 141, 142, 288, 508, 0, 2296 289, 290, 291, 292, 293, 294, 43, 44, 0, 295, 2297 296, 364, 0, 0, 0, 413, 413, 0, 0, 0, 2277 45, 0, 271, 212, 0, 0, 413, 0, 47, 48, 2278 413, 0, 0, 964, 0, 0, 0, 0, 968, 0, 2279 0, 0, 0, 0, 0, 522, 0, 522, 0, 984, 2280 985, 0, 0, 212, 0, 0, 0, 0, 0, 0, 2281 364, 0, 0, 0, 0, 346, 0, 0, 0, 0, 2298 2282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2299 0, 0, 297, 508, 635, 0, 636, 379, 0, 0, 2300 47, 48, 299, 300, 301, 302, 0, 0, 0, 0, 2301 1191, 0, 0, 0, 0, 0, 0, 0, 413, 0, 2302 0, 0, 0, 212, 0, 0, 0, 0, 0, 0, 2303 0, 0, 0, 0, 609, 0, 609, 0, 0, 0, 2304 0, 0, 0, 0, 1203, 0, 609, 0, 0, 1205, 2305 0, 0, 0, 0, 0, 0, 0, 1209, 0, 0, 2306 0, 0, 0, 0, 0, 0, 381, 0, 8, 9, 2307 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2308 20, 21, 22, 23, 24, 25, 26, 27, -299, 0, 2309 0, 1240, 0, 0, 0, 0, 0, 0, 0, 0, 2310 33, 0, 1247, 0, 0, 1248, 0, 1249, 0, 0, 2311 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 2312 0, 0, 1258, 1259, 364, 413, 0, 413, 36, 0, 2313 0, 413, 0, 0, 0, 0, 0, 0, 0, -299, 2314 0, 0, 1271, 0, 0, 0, 0, 0, 0, 0, 2315 0, 0, 609, 609, 0, 0, 0, 0, 0, 703, 2316 0, 0, 508, 508, 508, 508, 508, 508, 508, 508, 2317 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, 2318 0, 0, 0, 0, 0, 0, 0, 413, 1310, 0, 2319 0, 0, 0, 0, 0, 0, 1314, 0, 0, 736, 2320 0, 0, 0, 0, 0, 0, 413, 1126, 0, 0, 2321 0, 752, 0, 0, 0, 0, 364, 736, 0, 0, 2322 736, 0, 413, 1137, 0, 609, 609, 1142, 0, 0, 2323 0, 0, 0, 761, 0, 0, 0, 364, 364, 0, 2324 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2325 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2326 0, 0, 0, 790, 0, 0, 1361, 0, 1362, 0, 2327 346, 0, 33, 0, 752, 0, 0, 0, 0, 0, 2328 0, 0, 0, 0, 1371, 0, 1372, 0, 0, 0, 2329 0, 0, 0, 0, 0, 0, 0, 413, 0, 413, 2330 36, 1379, 508, 0, 413, 0, 0, 0, 0, 0, 2331 0, 0, 0, 609, 0, 0, 1397, 1399, 0, 0, 2332 851, 0, 0, 0, 0, 0, 0, 1404, 381, 0, 2333 1209, 0, 0, 0, 0, 0, 413, 1223, 0, 0, 2283 0, 0, 522, 0, 522, 212, 0, 0, 0, 0, 2284 0, 0, 0, 0, 0, 0, 212, 0, 1001, 0, 2285 0, 0, 0, 0, 1013, 1002, 413, 0, 381, 364, 2286 0, 166, 0, 0, 0, 0, 0, 0, 1004, 0, 2287 1005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2288 0, 0, 0, 1015, 0, 0, 0, 346, 0, 1019, 2289 0, 0, 0, 0, 346, 0, 0, 0, 413, 0, 2290 0, 1056, 364, 0, 1057, 0, 0, 0, 0, 0, 2291 0, 0, 0, 0, 0, 212, 0, 0, 0, 0, 2292 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 2293 0, 0, 0, 0, 324, 0, 0, 0, 0, 0, 2294 0, 0, 0, 0, 0, 0, 413, 413, 0, 0, 2334 2295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2335 0, 0, 1427, 0, 0, 0, 0, 0, 0, 0, 2336 364, 1434, 0, 508, 1436, 0, 1438, 1440, 1442, 0, 2337 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 2338 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2339 25, 26, 27, 508, 0, 28, 29, 30, 483, 484, 2340 485, 486, 0, 0, 927, 33, 0, 1473, 0, 1475, 2341 0, 1209, 0, 0, 0, 0, 0, 0, 0, 0, 2342 0, 0, 0, 0, 0, 0, 752, 1486, 951, 0, 2343 0, 0, 0, 36, 0, 0, 0, 364, 961, 0, 2344 40, 41, 0, 0, 968, 0, 0, 1, 2, 3, 2296 0, 381, 0, 0, 794, 364, 960, 0, 0, 735, 2297 0, 0, 0, 0, 608, 0, 608, 608, 0, 0, 2298 0, 0, 0, 608, 0, 0, 0, 0, 0, 1131, 2299 0, 0, 0, 831, 364, 0, 0, 0, 0, 364, 2300 1146, 0, 0, 0, 0, 0, 0, 0, 364, 364, 2301 0, 0, 1127, 0, 0, 0, 0, 212, 0, 0, 2302 381, 0, 1163, 0, 364, 0, 0, 0, 0, 413, 2303 872, 0, 0, 413, 875, 0, 0, 960, 960, 505, 2304 877, 507, 510, 0, 0, 0, 0, 0, 0, 0, 2305 0, 513, 514, 0, 0, 0, 0, 1194, 0, 413, 2306 0, 0, 0, 0, 0, 0, 507, 507, 0, 0, 2307 0, 0, 0, 1190, 0, 0, 0, 0, 0, 0, 2308 0, 0, 364, 608, 0, 0, 0, 0, 0, 0, 2309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2310 0, 507, 0, 0, 0, 0, 0, 1202, 0, 0, 2311 0, 960, 1204, 0, 212, 0, 0, 364, 0, 0, 2312 1208, 413, 413, 0, 0, 0, 0, 0, 0, 0, 2313 850, 0, 0, 0, 0, 0, 507, 0, 0, 0, 2314 0, 0, 0, 0, 0, 1249, 1250, 0, 0, 0, 2315 0, 0, 0, 0, 1239, 0, 0, 0, 0, 0, 2316 0, 0, 0, 0, 413, 1246, 0, 0, 1247, 0, 2317 1248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2318 608, 0, 608, 0, 0, 1257, 1258, 0, 0, 0, 2319 0, 0, 608, 0, 0, 0, 0, 0, 0, 0, 2320 0, 0, 0, 0, 0, 1270, 0, 0, 0, 0, 2321 0, 0, 0, 0, 0, -523, 0, 0, 1, 2, 2322 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2323 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2324 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2325 31, 1309, 0, 32, 0, 0, 33, 34, 0, 1313, 2326 0, 0, 0, 364, 0, 0, 0, 0, 0, 0, 2327 364, 413, 0, 413, 0, 0, 0, 413, 0, 0, 2328 0, 35, 0, 0, 36, 0, 37, 1354, 38, 39, 2329 735, 40, 41, 42, 0, 0, 0, 0, 608, 608, 2330 0, 0, 43, 44, 507, 507, 507, 507, 507, 507, 2331 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, 2332 507, 507, 0, 0, 0, 0, 0, 0, 45, 1360, 2333 46, 1361, 0, 413, 0, 0, 47, 48, 0, 0, 2334 0, 0, 0, 0, 0, 0, 0, 1370, 0, 1371, 2335 0, 0, 413, 1125, 0, 0, 0, 0, 0, 0, 2336 0, 0, 364, 0, 1378, 212, 0, 0, 413, 1136, 2337 0, 608, 608, 1141, 0, 0, 0, 0, 0, 1396, 2338 1398, 0, 0, 364, 364, 0, 0, 0, 0, 0, 2339 1403, 0, 0, 1208, 8, 9, 10, 11, 12, 13, 2340 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2341 24, 25, 26, 27, -299, 1426, 0, 0, 0, 0, 2342 0, 0, 0, 0, 1433, 33, 0, 1435, 0, 1437, 2343 1439, 1441, 0, 0, 0, 0, 0, 0, 0, 0, 2344 0, 0, 0, 413, 507, 413, 0, 0, 0, 0, 2345 413, 0, 0, 36, 0, 0, 0, 0, 0, 608, 2346 0, 0, 0, 0, -299, 0, 0, 0, 0, 0, 2347 1472, 0, 1474, 0, 1208, 0, 0, 0, 0, 0, 2348 0, 0, 413, 1222, 0, 0, 0, 0, 0, 0, 2349 1485, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2350 0, 0, 0, 0, 324, 507, 364, 1, 2, 207, 2345 2351 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2346 2352 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2347 24, 25, 26, 27, 0, 0, 28, 29, 30, 31, 2348 0, 0, 0, 32, 985, 986, 33, 34, 0, 0, 2349 364, 364, 0, 0, 0, 0, 0, 0, 0, 0, 2350 346, 0, 0, 0, 0, 0, 0, 508, 0, 0, 2351 0, 35, 0, 0, 36, 0, 37, 0, 38, 39, 2352 0, 40, 41, 42, 0, 0, 0, 0, 0, 0, 2353 0, 0, 43, 44, 0, 0, 0, 0, 0, 1014, 2354 0, 0, 0, 381, 0, 0, 0, 283, 284, 0, 2355 285, 0, 0, 508, 0, 0, 0, 0, 45, 0, 2356 46, 0, 0, 0, -528, 0, 47, 48, 0, 0, 2357 0, 0, 346, 0, 0, 0, 286, 0, 0, 346, 2358 0, 0, 287, 0, 0, 508, 288, 0, 0, 289, 2359 290, 291, 292, 293, 294, 43, 44, 508, 295, 296, 2353 24, 25, 26, 27, 0, 507, 28, 29, 30, 31, 2354 0, 0, 32, 283, 284, 33, 1022, 1023, 0, 1024, 2355 0, 0, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 2356 0, 0, 0, 1033, 0, 0, 0, 1034, 1035, 0, 2357 35, 0, 286, 36, 0, 37, 0, 38, 1036, 0, 2358 40, 41, 288, 364, 0, 289, 290, 291, 292, 293, 2359 294, 43, 44, 0, 295, 296, 0, 0, 0, 0, 2360 2360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2361 0, 364, 0, 0, 0, 0, 0, 0, 0, 324, 2362 0, 297, 0, 378, 0, 0, 379, 0, 0, 47, 2363 48, 299, 300, 301, 302, 0, 508, 0, 0, 0, 2364 0, 0, 0, 0, 0, 0, 381, 0, 0, 0, 2365 0, 961, 0, 0, 736, 0, 0, 0, 0, 0, 2361 0, 0, 0, 0, 0, 0, 0, 297, 0, 298, 2362 0, 0, 172, 0, 0, 47, 48, 299, 300, 301, 2363 302, 0, 0, 0, 0, 1037, 364, 364, 0, 0, 2364 -134, 0, 0, 0, 0, 0, 0, 0, 0, 507, 2365 1, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2366 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2367 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2368 29, 30, 31, 0, 0, 32, 283, 284, 33, 285, 2369 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 2366 2370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2367 0, 0, 0, 0, 1132, 0, 0, 0, 0, 0, 2368 0, 0, 0, 0, 0, 1147, 0, 0, 0, 0, 2369 0, 0, 283, 284, 0, 285, 0, 0, 0, 0, 2370 413, 0, 0, 0, 0, 381, 0, 1164, 0, 0, 2371 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, 2372 0, 286, 961, 961, 413, 413, 0, 287, 0, 0, 2373 0, 288, 0, 0, 289, 290, 291, 292, 293, 294, 2374 43, 44, 1195, 295, 296, 0, 0, 0, 0, 413, 2371 0, 0, 0, 0, 0, 286, 36, 0, 37, 0, 2372 38, 287, 0, 40, 41, 288, 0, 507, 289, 290, 2373 291, 292, 293, 294, 43, 44, 0, 295, 296, 507, 2375 2374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2376 0, 0, 0, 0, 0, 0, 297, 0, 378, 0, 2377 0, 508, 508, 751, 47, 48, 299, 300, 301, 302, 2375 0, 0, 0, 0, 0, 0, 0, 364, 0, 0, 2376 297, 0, 298, 0, 0, 0, 0, 0, 47, 48, 2377 299, 300, 301, 302, 0, 0, 0, 0, 507, 0, 2378 0, 0, 0, -134, 0, 0, 0, 0, 0, 1, 2379 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2380 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2381 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2382 30, 31, 0, 0, 32, 0, 0, 33, 34, 0, 2378 2383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2379 0, 0, 0, 0, 0, 0, 961, 0, 0, 0, 2384 0, 0, 0, 0, 0, 0, 413, 0, 0, 0, 2385 0, 0, 35, 0, 507, 36, 0, 37, 0, 38, 2386 39, 0, 40, 41, 42, 0, 0, 0, 0, 0, 2387 413, 413, 0, 43, 44, 0, 0, 0, 0, 0, 2380 2388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2381 0, 0, 0, 0, 0, 851, 0, 0, 0, 0, 2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2383 1250, 1251, 1, 2, 207, 4, 5, 6, 7, 8, 2384 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2385 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2386 0, 28, 29, 30, 31, 0, 0, 0, 32, 283, 2387 284, 33, 1023, 1024, 0, 1025, 0, 0, 1026, 1027, 2388 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 0, 1034, 2389 0, 0, 0, 1035, 1036, 0, 35, 0, 286, 36, 2390 0, 37, 0, 38, 1037, 0, 40, 41, 288, 0, 2391 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2392 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 2393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2394 0, 0, 0, 297, 0, 298, 0, 0, 172, 0, 2395 0, 47, 48, 299, 300, 301, 302, 0, 0, 0, 2396 0, 1038, 0, 0, 0, 0, -134, 0, 0, 0, 2397 0, 0, 1355, 0, 0, 736, 0, 0, 0, 508, 2398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2399 0, 0, 0, 0, 0, 0, 508, 0, 0, 0, 2400 0, 0, 0, 0, 1, 2, 207, 4, 5, 6, 2401 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2402 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2403 27, 0, 0, 28, 29, 30, 31, 0, 0, 0, 2389 0, 0, 0, 0, 0, 413, 0, 0, 0, 45, 2390 0, 46, 0, 0, 0, -527, 0, 47, 48, 0, 2391 0, 0, 0, 507, 507, 1, 2, 207, 4, 5, 2392 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2393 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2394 26, 27, 0, 0, 28, 29, 30, 31, 0, 0, 2404 2395 32, 283, 284, 33, 285, 0, 0, 0, 0, 0, 2405 2396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2406 0, 0, 0, 0, 0, 0, 0, 0, 508, 508,2397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2407 2398 286, 36, 0, 37, 0, 38, 287, 0, 40, 41, 2408 2399 288, 0, 0, 289, 290, 291, 292, 293, 294, 43, … … 2411 2402 0, 0, 0, 0, 0, 297, 0, 298, 0, 0, 2412 2403 0, 0, 0, 47, 48, 299, 300, 301, 302, 0, 2413 0, 0, 0, 0, 0, 0, 0, 0, -134, 1, 2414 2, 207, 4, 5, 6, 7, 8, 9, 10, 11, 2415 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2416 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2417 30, 31, 0, 0, 0, 32, 283, 284, 33, 285, 2418 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 2404 0, 0, 0, 0, 0, 2, 207, 4, 5, 6, 2405 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2406 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2407 27, 0, 0, 28, 29, 30, 0, 0, 0, 0, 2408 283, 284, 33, 285, 0, 0, 0, 0, 0, 0, 2409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2410 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, 2411 36, 0, 37, 0, 38, 287, 0, 40, 41, 288, 2412 0, 507, 289, 290, 291, 292, 293, 294, 43, 44, 2413 0, 295, 296, 0, 0, 0, 0, 0, 507, 0, 2414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2415 0, 0, 0, 0, 297, 0, 343, 0, 0, 0, 2416 0, 750, 344, 48, 299, 300, 301, 302, 2, 207, 2417 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2418 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2419 24, 25, 26, 27, 0, 0, 28, 29, 30, 0, 2420 0, 0, 0, 283, 284, 33, 285, 0, 0, 0, 2421 507, 507, 0, 0, 0, 0, 0, 0, 0, 0, 2422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2423 0, 0, 286, 36, 0, 37, 0, 38, 287, 0, 2424 40, 41, 288, 0, 0, 289, 290, 291, 292, 293, 2425 294, 43, 44, 0, 295, 296, 0, 0, 0, 0, 2426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2427 0, 0, 0, 0, 0, 0, 0, 297, 0, 343, 2428 0, 0, 0, 0, 750, 47, 48, 299, 300, 301, 2429 302, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2430 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2431 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2432 29, 30, 0, 0, 0, 0, 283, 284, 33, 285, 2433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2419 2434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2420 2435 0, 0, 0, 0, 0, 286, 36, 0, 37, 0, … … 2423 2438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2424 2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2425 297, 0, 298, 0, 0, 0, 0, 0, 47, 48,2440 297, 0, 343, 0, 0, 0, 0, 0, 344, 48, 2426 2441 299, 300, 301, 302, 2, 207, 4, 5, 6, 7, 2427 2442 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2428 2443 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2429 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 2430 283, 284, 33, 285, 8, 9, 10, 11, 12, 13, 2431 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2432 24, 25, 26, 27, 0, 0, 28, 29, 30, 286, 2433 36, 0, 37, 0, 38, 287, 33, 40, 41, 288, 2434 0, 0, 289, 290, 291, 292, 293, 294, 43, 44, 2435 0, 295, 296, 0, 0, 0, 0, 0, 0, 0, 2436 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 2437 0, 40, 41, 0, 297, 0, 343, 0, 0, 0, 2438 0, 751, 344, 48, 299, 300, 301, 302, 2, 207, 2439 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2440 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2441 24, 25, 26, 27, 0, 0, 28, 29, 30, 0, 2442 0, 0, 0, 0, 283, 284, 33, 285, 8, 9, 2443 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2444 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2445 28, 29, 30, 286, 36, 0, 37, 0, 38, 287, 2446 33, 40, 41, 288, 0, 0, 289, 290, 291, 292, 2447 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2448 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 2449 0, 0, 0, 0, 0, 208, 41, 0, 297, 0, 2450 343, 0, 0, 0, 0, 751, 47, 48, 299, 300, 2451 301, 302, 2, 207, 4, 5, 6, 7, 8, 9, 2452 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2453 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2454 28, 29, 30, 0, 0, 0, 0, 0, 283, 284, 2455 33, 285, 0, 0, 0, 0, 0, 0, 0, 0, 2444 0, 0, 28, 29, 30, 0, 0, 0, 0, 283, 2445 284, 33, 285, 0, 0, 0, 0, 0, 0, 0, 2456 2446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2457 0, 0, 0, 0, 0, 0, 0, 286, 36, 0,2458 37, 0, 38, 287, 0, 40, 41, 288, 0, 0,2459 289, 290, 291, 292, 293, 294, 43, 44, 0, 295,2460 29 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,2447 0, 0, 0, 0, 0, 0, 0, 0, 286, 36, 2448 0, 37, 0, 38, 287, 0, 208, 41, 288, 0, 2449 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2450 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 2461 2451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2462 0, 0, 297, 0, 343, 0, 0, 0, 0, 0,2463 344, 48, 299, 300, 301, 302, 2, 207, 4, 5,2464 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,2465 1 6, 17, 18, 19, 20, 21, 22, 23, 24, 25,2466 2 6, 27, 0, 0, 28, 29, 30,0, 0, 0,2452 0, 0, 0, 297, 0, 981, 0, 0, 0, 0, 2453 0, 982, 48, 299, 300, 301, 302, 2, 207, 4, 2454 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 2455 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2456 25, 26, 27, 0, 0, 28, 29, 30, 0, 0, 2467 2457 0, 0, 283, 284, 33, 285, 0, 0, 0, 0, 2468 2458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 2472 2462 43, 44, 0, 295, 296, 0, 0, 0, 0, 0, 2473 2463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2474 0, 0, 0, 0, 0, 0, 297, 0, 982, 0,2475 0, 0, 0, 0, 983, 48, 299, 300, 301, 302,2476 2, 207, 4, 5, 6, 7, 8, 9, 10, 11,2477 1 2, 13, 14, 15, 16, 17, 18, 19, 20, 21,2478 2 2, 23, 24, 25, 26, 27, 0, 0, 28, 29,2479 30, 0, 0, 0, 0, 0, 283, 284, 33, 285,2464 0, 0, 0, 0, 0, 0, 297, 0, 378, 0, 2465 0, 0, 0, 0, 47, 48, 299, 300, 301, 302, 2466 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2467 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2468 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2469 29, 30, 31, 0, 0, 32, 0, 0, 33, 34, 2480 2470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2481 2471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2482 0, 0, 0, 0, 0, 286, 36, 0, 37, 0, 2483 38, 287, 0, 208, 41, 288, 0, 0, 289, 290, 2484 291, 292, 293, 294, 43, 44, 0, 295, 296, 0, 2485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2487 297, 0, 378, 0, 0, 0, 0, 0, 47, 48, 2488 299, 300, 301, 302, -524, 0, 0, 1, 2, 3, 2489 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2490 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2491 24, 25, 26, 27, 0, 0, 28, 29, 30, 31, 2492 0, 0, 0, 32, 0, 0, 33, 34, 0, 0, 2493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2495 0, 35, 0, 0, 36, 0, 37, 0, 38, 39, 2496 0, 40, 41, 42, 0, 0, 0, 0, 0, 0, 2497 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 2498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2499 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 2500 46, 0, 0, 0, 0, 0, 47, 48, 1, 2, 2501 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2502 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2503 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2504 31, 0, 0, 0, 32, 0, 0, 33, 34, 0, 2505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2507 0, 0, 35, 0, 0, 36, 0, 37, 0, 38, 2508 39, 0, 40, 41, 42, 0, 0, 0, 0, 0, 2509 0, 0, 0, 43, 44, 0, 0, 0, 0, 0, 2510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2511 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 2512 0, 46, 0, 0, 0, 0, 0, 47, 48, 206, 2513 2, 207, 4, 5, 6, 7, 8, 9, 10, 11, 2514 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2515 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2516 30, 0, 0, 0, 0, 0, 0, 0, 33, 0, 2517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2519 0, 0, 0, 0, 0, 0, 36, 0, 37, 0, 2520 38, 39, 0, 208, 41, 42, 0, 0, 0, 0, 2472 0, 0, 0, 35, 0, 0, 36, 0, 37, 0, 2473 38, 39, 0, 40, 41, 42, 0, 0, 0, 0, 2521 2474 0, 0, 0, 0, 43, 44, 0, 0, 0, 0, 2522 2475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2523 2476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2477 45, 0, 46, 0, 0, 0, 0, 0, 47, 48, 2478 206, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2479 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2480 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2481 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 2482 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2483 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2484 27, 0, 0, 28, 29, 30, 36, 0, 37, 0, 2485 38, 39, 33, 208, 41, 42, 0, 0, 0, 0, 2486 0, 0, 0, 0, 43, 44, 0, 0, 0, 0, 2487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2488 36, 0, 0, 0, 0, 0, 0, 40, 41, 0, 2524 2489 45, 0, 209, 0, 0, 0, 0, 0, 47, 48, 2525 2490 1, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2526 2491 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2527 2492 21, 22, 23, 24, 25, 26, 27, -298, 0, 28, 2528 29, 30, 31, 0, 0, 0, 32, 0, 0, 33,2493 29, 30, 31, 0, 0, 32, 0, 0, 33, 0, 2529 2494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2530 2495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2531 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 2532 0, 38, 0, 0, 40, 41, 0, 0, -298, 1, 2533 2, 207, 4, 5, 6, 7, 8, 9, 10, 11, 2534 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2535 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2536 30, 31, 0, 46, 0, 32, 0, 0, 33, 47, 2537 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2496 0, 0, 0, 0, 0, 0, 36, 0, 37, 0, 2497 38, 0, 0, 40, 41, 0, 0, -298, 1, 2, 2498 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2499 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2500 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2501 31, 0, 46, 32, 0, 0, 33, 0, 47, 48, 2502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2504 0, 0, 0, 0, 36, 0, 37, 0, 38, 0, 2505 0, 40, 41, 206, 2, 207, 4, 5, 6, 7, 2506 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2507 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2508 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 2509 46, 33, 0, 0, 0, 0, 47, 48, 0, 1143, 2510 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 2511 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2512 0, 37, 0, 38, 0, 0, 208, 41, 0, 0, 2513 0, 283, 284, 33, 285, 0, 0, 0, 0, 0, 2514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2516 286, 36, 0, 0, 0, 209, 287, 0, 0, 0, 2517 288, 47, 48, 289, 290, 291, 292, 293, 294, 43, 2518 44, 0, 295, 296, 0, 0, 0, 0, 0, 0, 2519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2520 0, 0, 0, 0, 0, 297, 0, 378, 0, 0, 2521 0, 0, 0, 1144, 48, 299, 300, 301, 302, 2, 2522 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2523 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2524 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2525 0, 0, 0, 0, 0, 0, 33, 0, 0, 8, 2526 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2527 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2528 0, 28, 29, 30, 36, 0, 37, 0, 38, 39, 2529 33, 208, 41, 42, 0, 0, 0, 0, 0, 0, 2530 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 2531 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 2532 0, 0, 0, 0, 0, 40, 41, 0, 45, 0, 2533 209, 0, 0, 0, 0, 0, 47, 48, 2, 207, 2534 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 2535 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2536 24, 25, 26, 27, 258, 0, 28, 29, 30, 0, 2537 47, 48, 0, 0, 0, 33, 0, 0, 0, 0, 2538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2540 0, 0, 0, 36, 0, 37, 0, 38, 0, 0, 2541 40, 41, 0, 2, 207, 4, 5, 6, 7, 8, 2542 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2543 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2544 0, 28, 29, 30, 0, 0, 0, 0, -407, 670, 2545 33, 0, 0, 0, 0, 47, 48, 0, 0, 0, 2546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 2548 37, 0, 38, 0, 0, 40, 41, 0, 0, 0, 2549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2550 0, 0, 0, 0, 0, 0, 0, 0, 0, 1334, 2551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2552 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 2553 47, 48, 2, 207, 4, 5, 6, 7, 8, 9, 2554 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2555 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2556 28, 29, 30, 0, 0, 0, 0, 0, 0, 33, 2557 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2558 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2559 26, 27, 0, 0, 28, 29, 30, 36, 0, 37, 2560 0, 38, 0, 33, 40, 41, 0, 0, 0, 0, 2561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2562 0, 0, 0, 0, 0, 0, 0, 0, 1336, 0, 2563 0, 36, 0, 0, 0, 0, 0, 0, 40, 41, 2564 0, 0, 0, 670, 0, 0, 0, 0, 0, 47, 2565 48, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2566 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2567 21, 22, 23, 24, 25, 26, 27, 46, 0, 28, 2568 29, 30, 0, 47, 48, 0, 0, 0, 33, 0, 2569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2538 2570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2539 2571 0, 0, 0, 0, 0, 0, 36, 0, 37, 0, 2540 38, 0, 0, 40, 41, 206, 2, 207, 4, 5,2572 38, 0, 0, 208, 41, 0, 2, 207, 4, 5, 2541 2573 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2542 2574 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2543 2575 26, 27, 0, 0, 28, 29, 30, 0, 0, 0, 2544 0, 0, 46, 0, 33, 0, 0, 0, 47, 48,2576 0, 0, 271, 33, 0, 0, 0, 0, 47, 48, 2545 2577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2546 2578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2547 0, 0, 36, 0, 37, 0, 38, 0, 0, 208,2548 41, 2, 207, 4, 5, 6, 7, 8, 9, 10,2579 0, 36, 0, 37, 0, 38, 0, 0, 40, 41, 2580 0, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2549 2581 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2550 2582 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2551 29, 30, 0, 0, 0, 0, 0, 0, 209, 33,2552 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,2583 29, 30, 0, 0, 0, 0, 0, 670, 33, 0, 2584 0, 0, 0, 47, 48, 0, 0, 0, 0, 0, 2553 2585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2554 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 2555 0, 38, 39, 0, 208, 41, 42, 0, 0, 0, 2556 0, 0, 0, 0, 0, 43, 44, 0, 0, 0, 2586 0, 0, 0, 0, 0, 0, 36, 0, 37, 0, 2587 38, 0, 0, 208, 41, 8, 9, 10, 11, 12, 2588 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2589 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2590 0, 0, 0, 0, 283, 284, 33, 285, 0, 0, 2591 0, 0, 209, 0, 0, 0, 0, 0, 47, 48, 2557 2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2593 0, 0, 0, 286, 36, 0, 0, 0, 0, 287, 2594 0, 40, 41, 288, 0, 0, 289, 290, 291, 292, 2595 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2558 2596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2559 0, 45, 0, 209, 0, 0, 0, 0, 0, 47, 2560 48, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2561 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2562 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2563 29, 30, 0, 0, 0, 0, 0, 0, 0, 33, 2564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2566 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 2567 0, 38, 0, 0, 40, 41, 2, 207, 4, 5, 2568 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 2597 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 2598 515, 0, 0, 172, 0, 0, 47, 48, 299, 300, 2599 301, 302, 8, 9, 10, 11, 12, 13, 14, 15, 2569 2600 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2570 2601 26, 27, 0, 0, 28, 29, 30, 0, 0, 0, 2571 0, 0, -407, 671, 33, 0, 0, 0, 0, 47, 2572 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2602 0, 283, 284, 33, 285, 0, 0, 0, 0, 0, 2573 2603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2574 0, 0, 36, 0, 37, 0, 38, 0, 0, 40,2575 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,2576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2577 0, 0, 0, 1335, 0, 0, 0, 0, 0, 0,2578 0, 0, 0, 0, 0, 0, 0, 0, 671, 0,2579 0, 0, 0, 0, 47, 48, 2, 207, 4, 5,2580 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,2581 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2582 26, 27, 0, 0, 28, 29, 30, 0, 0, 0,2583 0, 0, 0, 0, 33, 0, 8, 9, 10, 11,2584 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,2585 22, 23, 24, 25, 26, 27, 0, 0, 28, 29,2586 30, 0, 36, 0, 37, 0, 38, 0, 33, 40,2587 41, 0, 0, 0, 0, 0, 0, 0, 0, 0,2588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2589 0, 0, 0, 1337, 0, 0, 36, 0, 0, 0,2590 0, 0, 0, 40, 41, 0, 0, 0, 671, 0,2591 0, 0, 0, 0, 47, 48, 2, 207, 4, 5,2592 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,2593 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2594 26, 27, 46, 0, 28, 29, 30, 0, 47, 48,2595 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,2596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2598 0, 0, 36, 0, 37, 0, 38, 0, 0, 208,2599 41, 2, 207, 4, 5, 6, 7, 8, 9, 10,2600 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,2601 21, 22, 23, 24, 25, 26, 27, 0, 0, 28,2602 29, 30, 0, 0, 0, 0, 0, 0, 271, 33,2603 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,2604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2605 0, 0, 0, 0, 0, 0, 0, 36, 0, 37,2606 0, 38, 0, 0, 40, 41, 2, 207, 4, 5,2607 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,2608 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,2609 26, 27, 0, 0, 28, 29, 30, 0, 0, 0,2610 0, 0, 0, 671, 33, 0, 0, 0, 0, 47,2611 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,2613 0, 0, 36, 0, 37, 0, 38, 0, 0, 208,2614 41, 8, 9, 10, 11, 12, 13, 14, 15, 16,2615 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,2616 27, 0, 0, 28, 29, 30, 0, 0, 0, 0,2617 0, 283, 284, 33, 285, 0, 0, 0, 209, 0,2618 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,2619 2604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2620 2605 286, 36, 0, 0, 0, 0, 287, 0, 40, 41, … … 2622 2607 44, 0, 295, 296, 0, 0, 0, 0, 0, 0, 2623 2608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2624 0, 0, 0, 0, 0, 297, 0, 516, 0, 0,2625 172, 0, 0, 47, 48, 299, 300, 301, 302, 8,2609 0, 0, 0, 0, 0, 297, -40, 298, 0, 0, 2610 0, 0, 0, 47, 48, 299, 300, 301, 302, 8, 2626 2611 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2627 2612 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2628 0, 28, 29, 30, 0, 0, 0, 0, 0, 283, 2629 284, 33, 285, 8, 9, 10, 11, 12, 13, 14, 2630 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2631 25, 26, 27, 0, 0, 28, 29, 30, 286, 36, 2632 0, 0, 0, 0, 287, 33, 40, 41, 288, 0, 2633 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2634 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 2635 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 2636 208, 41, 0, 297, -40, 298, 0, 0, 0, 0, 2637 0, 47, 48, 299, 300, 301, 302, 8, 9, 10, 2638 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2639 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2640 29, 30, 0, 0, 0, 47, 48, 283, 284, 33, 2641 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2613 0, 28, 29, 30, 0, 0, 0, 0, 283, 284, 2614 33, 285, 0, 0, 0, 0, 0, 0, 0, 0, 2642 2615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2643 0, 0, 0, 0, 0, 0, 286, 36, 0, 0, 2644 0, 0, 287, 0, 40, 41, 288, 0, 0, 289, 2645 290, 291, 292, 293, 294, 43, 44, 0, 295, 296, 2616 0, 0, 0, 0, 0, 0, 0, 286, 36, 0, 2617 0, 0, 0, 287, 0, 40, 41, 288, 0, 0, 2618 289, 290, 291, 292, 293, 294, 43, 44, 0, 295, 2619 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2646 2620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2648 0, 297, 0, 298, 0, 0, 0, 0, 0, 47, 2649 48, 299, 300, 301, 302, 8, 9, 10, 11, 12, 2650 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2651 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2652 0, 0, 0, 0, 0, 283, 284, 33, 285, 0, 2621 0, 0, 297, 0, 298, 0, 0, 0, 0, 0, 2622 47, 48, 299, 300, 301, 302, 8, 9, 10, 11, 2623 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2624 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2625 30, 0, 0, 0, 0, 283, 284, 33, 285, 0, 2653 2626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2654 2627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 2662 2635 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2663 2636 25, 26, 27, 0, 0, 28, 29, 30, 0, 0, 2664 0, 0, 0, 283, 284, 33, 285, 0, 0, 0,2637 0, 0, 283, 284, 33, 285, 0, 0, 0, 0, 2665 2638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2666 2639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2667 0, 0, 286, 36, 0, 0, 0, 0, 287,0,2668 4 0, 41, 288, 0, 0, 289, 290, 291, 292, 293,2669 294, 43, 44, 0, 295, 296, 0, 0, 0, 0,2640 0, 286, 36, 0, 0, 0, 0, 287, 0, 40, 2641 41, 288, 0, 0, 289, 290, 291, 292, 293, 294, 2642 43, 44, 0, 295, 296, 0, 0, 0, 0, 0, 2670 2643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2671 0, 0, 0, 0, 0, 0, 0, 297, 0, 378, 2672 0, 0, 0, 0, 0, 47, 48, 299, 300, 301, 2673 302, 465, 2, 207, 4, 5, 6, 7, 8, 9, 2674 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2675 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2676 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, 2677 33, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2678 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2679 27, 0, 0, 28, 29, 30, 0, 0, 36, 0, 2680 37, 0, 38, 33, 678, 40, 41, 0, 0, 0, 2644 0, 0, 0, 0, 0, 0, 297, 0, 378, 0, 2645 0, 0, 0, 0, 47, 48, 299, 300, 301, 302, 2646 465, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2647 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2648 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2649 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 2650 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2651 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2652 0, 0, 28, 29, 30, 0, 36, 0, 37, 0, 2653 38, 33, 0, 40, 41, 0, 0, 0, 0, 0, 2654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2655 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2656 0, 0, 0, 0, 112, 0, 40, 41, 0, 0, 2657 0, 0, 0, 0, 0, -3, 0, 43, 44, 0, 2658 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2659 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2660 24, 25, 26, 27, 0, 46, 28, 29, 30, 0, 2661 0, 47, 48, 0, 0, 33, 677, 8, 9, 10, 2662 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2663 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2664 29, 30, 0, 36, 0, 0, 0, 0, 33, 677, 2665 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, 2666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2667 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 2668 0, 0, 0, 40, 41, 0, 0, 0, 0, 678, 2669 0, 0, 0, 679, 0, 47, 48, 0, 0, 0, 2681 2670 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2682 2671 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2683 27, 36, 0, 28, 29, 30, 0, 0, 40, 41, 2684 0, 0, 0, 33, 678, 0, 0, -3, 0, 0, 2672 27, 0, 678, 28, 29, 30, 1072, 0, 47, 48, 2673 0, 0, 33, 677, 8, 9, 10, 11, 12, 13, 2674 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2675 24, 25, 26, 27, 0, 0, 28, 29, 30, 0, 2676 36, 0, 0, 0, 0, 33, 0, 40, 41, 0, 2685 2677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2686 2678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2687 0, 36, 0, 0, 0, 0, 0, 679, 40, 41, 2688 0, 680, 0, 47, 48, 0, 8, 9, 10, 11, 2689 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2690 22, 23, 24, 25, 26, 27, 0, 0, 28, 29, 2691 30, 0, 0, 0, 0, 0, 0, 679, 33, 678, 2692 0, 1073, 0, 47, 48, 0, 8, 9, 10, 11, 2693 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 2694 22, 23, 24, 25, 26, 27, 36, 0, 28, 29, 2695 30, 0, 0, 40, 41, 0, 0, 0, 33, 8, 2696 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2697 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2698 0, 28, 29, 30, 0, 0, 36, 0, 0, 0, 2699 0, 33, 679, 208, 41, 0, 1200, 0, 47, 48, 2679 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 2680 208, 41, 0, 0, 0, 0, 678, 0, 0, 0, 2681 1199, 0, 47, 48, 0, 0, 0, 0, 8, 9, 2682 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2683 20, 21, 22, 23, 24, 25, 26, 27, 0, 271, 2684 28, 29, 30, 0, 0, 47, 48, 0, 0, 33, 2685 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 2686 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 2687 0, 0, 28, 29, 30, 0, 0, 36, 0, 0, 2688 0, 33, 0, 0, 40, 41, 0, 0, 0, 0, 2700 2689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2701 2690 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 2702 2691 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 2703 0, 0, 271, 0, 0, 0, 0, 0, 47, 48,2704 0, 0, 0, 0, 8, 9, 10, 11, 12, 13,2692 0, 0, 0, 339, 0, 0, 0, 0, 0, 47, 2693 48, 0, 0, 0, 8, 9, 10, 11, 12, 13, 2705 2694 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 2706 24, 25, 26, 27, 0, 339, 28, 29, 30, 0, 2707 0, 47, 48, 0, 0, 0, 33, 8, 9, 10, 2708 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2709 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2710 29, 30, 0, 0, 36, 0, 0, 0, 0, 33, 2711 0, 40, 41, 0, 0, 0, 0, 0, 0, 0, 2712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2713 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 2714 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 2715 679, 0, 0, 0, 0, 0, 47, 48, 0, 0, 2695 24, 25, 26, 27, 0, 678, 28, 29, 30, 0, 2696 0, 47, 48, 0, 0, 33, 0, 0, 0, 0, 2716 2697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2717 2698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2718 0, 0, 0, 671, 0, 0, 0, 0, 0, 47, 2719 48, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2720 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2721 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2722 29, 30, 0, 0, 0, 0, 0, 0, 0, 33, 2723 0, 283, 284, 0, 285, 1024, 0, 1025, 0, 0, 2724 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 2725 1511, 1034, 0, 0, 0, 1035, 1036, 36, 35, 37, 2726 286, 38, 0, 0, 40, 41, 1037, 0, 0, 0, 2699 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 2700 40, 41, 0, 2, 207, 4, 5, 6, 7, 8, 2701 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 2702 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 2703 0, 28, 29, 30, 0, 0, 0, 0, 0, 670, 2704 33, 0, 0, 0, 0, 47, 48, 0, 0, 0, 2705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2706 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 2707 37, 0, 38, 0, 0, 40, 41, 283, 284, 0, 2708 285, 1023, 0, 1024, 0, 0, 1025, 1026, 1027, 1028, 2709 1029, 1030, 1031, 1032, 0, 0, 1510, 1033, 0, 0, 2710 0, 1034, 1035, 0, 35, 0, 286, 0, 0, 0, 2711 0, 0, 1036, -420, 0, 0, 288, 0, 0, 289, 2712 290, 291, 292, 293, 294, 43, 44, 0, 295, 296, 2713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2715 0, 297, 0, 378, 0, 0, 172, 0, 0, 47, 2716 48, 299, 300, 301, 302, 0, 0, 283, 284, 1037, 2717 285, 1023, 0, 1024, -134, 0, 1025, 1026, 1027, 1028, 2718 1029, 1030, 1031, 1032, 0, 0, 0, 1033, 0, 0, 2719 0, 1034, 1035, 0, 35, 0, 286, 0, 0, 0, 2720 0, 0, 1036, 0, 0, 0, 288, 0, 0, 289, 2721 290, 291, 292, 293, 294, 43, 44, 0, 295, 296, 2722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2724 0, 297, 0, 378, 0, 0, 172, 0, 0, 47, 2725 48, 299, 300, 301, 302, 0, 0, 0, 0, 1037, 2726 0, 0, 0, 0, -134, 2, 207, 4, 5, 6, 2727 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2728 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 2729 27, 0, 0, 28, 29, 30, 0, 0, 0, 0, 2730 0, 0, 33, 0, 283, 284, 0, 285, 1023, 0, 2731 1024, 1382, 1383, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 2732 1032, 0, 0, 1510, 1033, 0, 0, 0, 1034, 1035, 2733 36, 35, 37, 286, 38, 0, 0, 40, 41, 1036, 2734 0, 0, 0, 288, 0, 0, 289, 290, 291, 292, 2735 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2736 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 2737 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 2738 378, 0, 0, 172, 0, 0, 47, 48, 299, 300, 2739 301, 302, 0, 0, 283, 284, 1037, 285, 1023, 0, 2740 1024, 1382, 1383, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 2741 1032, 0, 0, 0, 1033, 0, 0, 0, 1034, 1035, 2742 0, 35, 0, 286, 0, 0, 0, 0, 0, 1036, 2743 0, 0, 0, 288, 0, 0, 289, 290, 291, 292, 2744 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2746 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 2747 378, 0, 0, 172, 0, 0, 47, 48, 299, 300, 2748 301, 302, 0, 0, 283, 284, 1037, 285, 1023, 0, 2749 1024, 0, 0, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 2750 1032, 0, 0, 0, 1033, 0, 0, 0, 1034, 1035, 2751 0, 35, 0, 286, 0, 0, 0, 0, 0, 1036, 2752 0, 0, 0, 288, 0, 0, 289, 290, 291, 292, 2753 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2754 0, 0, 0, 283, 284, 0, 285, 0, 0, 0, 2755 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 2756 378, 0, 0, 172, 0, 0, 47, 48, 299, 300, 2757 301, 302, 286, 0, 0, 0, 1037, 0, 633, 0, 2758 141, 142, 288, 0, 0, 289, 290, 291, 292, 293, 2759 294, 43, 44, 0, 295, 296, 0, 0, 0, 0, 2760 0, 0, 283, 284, 0, 285, 0, 0, 0, 0, 2761 0, 0, 0, 0, 0, 0, 0, 297, 0, 634, 2762 0, 635, 379, 0, 0, 47, 48, 299, 300, 301, 2763 302, 286, 0, 0, 0, 0, 0, 287, 0, 0, 2764 0, 288, 0, 0, 289, 290, 291, 292, 293, 294, 2765 43, 44, 0, 295, 296, 0, 0, 0, 0, 0, 2766 0, 283, 284, 0, 285, 0, 0, 0, 0, 0, 2767 0, 0, 0, 0, 0, 0, 297, 0, 378, 0, 2768 0, 379, 0, 0, 47, 48, 299, 300, 301, 302, 2769 286, 0, 0, 0, 0, 0, 287, 0, 0, 0, 2727 2770 288, 0, 0, 289, 290, 291, 292, 293, 294, 43, 2728 2771 44, 0, 295, 296, 0, 0, 0, 0, 0, 0, 2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2730 0, 0, -420, 0, 0, 297, 0, 378, 0, 0, 2731 172, 0, 0, 47, 48, 299, 300, 301, 302, 0, 2732 0, 283, 284, 1038, 285, 1024, 0, 1025, -134, 0, 2733 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 2734 0, 1034, 0, 0, 0, 1035, 1036, 0, 35, 0, 2735 286, 0, 0, 0, 0, 0, 1037, 0, 0, 0, 2736 288, 0, 0, 289, 290, 291, 292, 293, 294, 43, 2737 44, 0, 295, 296, 0, 0, 0, 0, 0, 0, 2738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2772 283, 284, 0, 285, 0, 0, 0, 0, 0, 0, 2739 2773 0, 0, 0, 0, 0, 297, 0, 378, 0, 0, 2740 172, 0, 0, 47, 48, 299, 300, 301, 302, 0, 2741 0, 0, 0, 1038, 0, 0, 0, 0, -134, 2, 2742 207, 4, 5, 6, 7, 8, 9, 10, 11, 12, 2743 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2744 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2745 0, 0, 0, 0, 0, 0, 0, 33, 0, 283, 2746 284, 0, 285, 1024, 0, 1025, 1383, 1384, 1026, 1027, 2747 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 1511, 1034, 2748 0, 0, 0, 1035, 1036, 36, 35, 37, 286, 38, 2749 0, 0, 40, 41, 1037, 0, 0, 0, 288, 0, 2750 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2751 295, 296, 0, 0, 0, 0, 1294, 0, 0, 0, 2752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2753 0, 0, 0, 297, 0, 378, 0, 0, 172, 0, 2754 0, 47, 48, 299, 300, 301, 302, 0, 0, 283, 2755 284, 1038, 285, 1024, 0, 1025, 1383, 1384, 1026, 1027, 2756 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 0, 1034, 2757 0, 0, 0, 1035, 1036, 0, 35, 0, 286, 0, 2758 0, 0, 0, 0, 1037, 0, 0, 0, 288, 0, 2759 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2760 295, 296, 0, 0, 0, 0, 0, 0, 0, 0, 2761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2762 0, 0, 0, 297, 0, 378, 0, 0, 172, 0, 2763 0, 47, 48, 299, 300, 301, 302, 0, 0, 283, 2764 284, 1038, 285, 1024, 0, 1025, 0, 0, 1026, 1027, 2765 1028, 1029, 1030, 1031, 1032, 1033, 0, 0, 0, 1034, 2766 0, 0, 0, 1035, 1036, 0, 35, 0, 286, 0, 2767 0, 0, 0, 0, 1037, 0, 0, 0, 288, 0, 2774 0, 0, 750, 47, 48, 299, 300, 301, 302, 286, 2775 0, 0, 0, 0, 0, 287, 0, 0, 0, 288, 2776 0, 0, 289, 290, 291, 292, 293, 294, 43, 44, 2777 0, 295, 296, 0, 0, 0, 0, 0, 0, 283, 2778 284, 0, 285, 0, 0, 0, 0, 0, 0, 0, 2779 0, 0, 0, 0, 297, 0, 378, 0, 0, 958, 2780 0, 0, 47, 48, 299, 300, 301, 302, 286, 0, 2781 0, 0, 0, 0, 287, 0, 0, 0, 288, 0, 2768 2782 0, 289, 290, 291, 292, 293, 294, 43, 44, 0, 2769 2783 295, 296, 0, 0, 0, 0, 0, 0, 283, 284, 2770 2784 0, 285, 0, 0, 0, 0, 0, 0, 0, 0, 2771 0, 0, 0, 297, 0, 378, 0, 0, 172, 0,2785 0, 0, 0, 297, 0, 378, 0, 0, 0, 0, 2772 2786 0, 47, 48, 299, 300, 301, 302, 286, 0, 0, 2773 0, 1038, 0, 287, 0, 0, 0, 288, 0, 0,2787 0, 0, 0, 287, 0, 0, 0, 288, 0, 0, 2774 2788 289, 290, 291, 292, 293, 294, 43, 44, 0, 295, 2775 2789 296, 0, 0, 0, 0, 0, 0, 283, 284, 0, 2776 2790 285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2777 0, 0, 297, 0, 378, 0, 0, 959, 0, 0,2791 0, 0, 504, 0, 378, 0, 0, 0, 0, 0, 2778 2792 47, 48, 299, 300, 301, 302, 286, 0, 0, 0, 2779 2793 0, 0, 287, 0, 0, 0, 288, 0, 0, 289, … … 2781 2795 0, 0, 0, 0, 0, 0, 283, 284, 0, 285, 2782 2796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2783 0, 297, 0, 378, 0, 0, 0, 0, 0, 47,2797 0, 509, 0, 378, 0, 0, 0, 0, 0, 47, 2784 2798 48, 299, 300, 301, 302, 286, 0, 0, 0, 0, 2785 2799 0, 287, 0, 0, 0, 288, 0, 0, 289, 290, … … 2787 2801 0, 0, 0, 0, 0, 283, 284, 0, 285, 0, 2788 2802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2789 5 05, 0, 378, 0, 0, 0, 0, 0, 47, 48,2803 512, 0, 378, 0, 0, 0, 0, 0, 47, 48, 2790 2804 299, 300, 301, 302, 286, 0, 0, 0, 0, 0, 2791 2805 287, 0, 0, 0, 288, 0, 0, 289, 290, 291, 2792 2806 292, 293, 294, 43, 44, 0, 295, 296, 0, 0, 2793 2807 0, 0, 0, 0, 283, 284, 0, 285, 0, 0, 2794 0, 0, 0, 0, 0, 0, 0, 0, 0, 510,2795 0, 378, 0, 0, 0, 0, 0, 47, 48, 299,2808 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, 2809 0, 378, 0, 0, 0, 0, 0, 701, 48, 299, 2796 2810 300, 301, 302, 286, 0, 0, 0, 0, 0, 287, 2797 2811 0, 0, 0, 288, 0, 0, 289, 290, 291, 292, 2798 2812 293, 294, 43, 44, 0, 295, 296, 0, 0, 0, 2799 0, 0, 0, 283, 284, 0, 285, 0, 0, 0,2800 0, 0, 0, 0, 0, 0, 0, 0, 513, 0,2801 378, 0, 0, 0, 0, 0, 47, 48, 299, 300,2802 301, 302, 286, 0, 0, 0, 0, 0, 287, 0,2803 0, 0, 288, 0, 0, 289, 290, 291, 292, 293,2804 294, 43, 44, 0, 295, 296, 0, 0, 0, 0,2805 0, 0, 283, 284, 0, 285, 0, 0, 0, 0,2806 0, 0, 0, 0, 0, 0, 0, 297, 0, 378,2807 0, 0, 0, 0, 0, 702, 48, 299, 300, 301,2808 302, 286, 0, 0, 0, 0, 0, 287, 0, 0,2809 0, 288, 0, 0, 289, 290, 291, 292, 293, 294,2810 43, 44, 0, 295, 296, 0, 0, 0, 0, 0,2811 2813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2812 0, 0, 0, 0, 0, 0, 297, 0, 378, 0,2813 0, 0, 0, 0, 344, 48, 299, 300, 301, 302,2814 2, 207, 4, 5, 6, 7, 8, 9, 10, 11,2815 1 2, 13, 14, 15, 16, 17, 18, 19, 20, 21,2816 2 2, 23, 24, 25, 26, 27, 0, 0, 0, 0,2817 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,2818 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,2819 1 8, 19, 20, 21, 22, 23, 24, 25, 26, 27,2820 0, 0, 28, 29, 30, 0, 36, 0, 37, 0,2821 38, 39, 33, 175, 176, 42, 0, 0, 0, 0,2822 0, 0, 0, 0, 43, 44, 0, 0, 0, 0,2814 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, 2815 378, 0, 0, 0, 0, 0, 344, 48, 299, 300, 2816 301, 302, 2, 207, 4, 5, 6, 7, 8, 9, 2817 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2818 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2819 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 2820 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 2821 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 2822 26, 27, 0, 0, 28, 29, 30, 36, 0, 37, 2823 0, 38, 39, 33, 175, 176, 42, 0, 0, 0, 2824 0, 0, 0, 0, 0, 43, 44, 0, 0, 0, 2823 2825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2824 36, 0, 0, 0, 0, 112, 0, 40, 41, 0,2825 0, 0, 0, 0, 0, 0, 0, 0, 43, 44,2826 206, 2, 207, 4, 5, 6, 7, 8, 9, 10,2827 1 1, 12, 13, 14, 15, 16, 17, 18, 19, 20,2828 2 1, 22, 23, 24, 25, 26, 27, 0, 0, 28,2829 2 9, 30,0, 0, 0, 0, 0, 0, 0, 33,2826 0, 36, 0, 0, 0, 0, 112, 0, 40, 41, 2827 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 2828 44, 206, 2, 207, 4, 5, 6, 7, 8, 9, 2829 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2830 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2831 28, 29, 30, 0, 0, 0, 0, 0, 0, 33, 2830 2832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2831 2833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … … 2835 2837 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2836 2838 25, 26, 27, 0, 0, 28, 29, 30, 0, 0, 2837 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,2839 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 2838 2840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2839 2841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2840 0, 0, 0, 36, 0, 37, 0, 38, 0, 0, 2841 40, 41, 2, 207, 4, 5, 6, 7, 8, 9, 2842 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2843 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 2844 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, 2845 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2842 0, 0, 36, 0, 37, 0, 38, 0, 0, 40, 2843 41, 2, 207, 4, 5, 6, 7, 8, 9, 10, 2844 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2845 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2846 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 2846 2847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2847 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 2848 37, 0, 38, 0, 0, 208, 41 2848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2849 0, 0, 0, 0, 0, 0, 36, 0, 37, 0, 2850 38, 0, 0, 208, 41, 8, 9, 10, 11, 12, 2851 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 2852 23, 24, 25, 26, 27, 0, 0, 28, 29, 30, 2853 483, 484, 485, 0, 0, 0, 33, 8, 9, 10, 2854 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 2855 21, 22, 23, 24, 25, 26, 27, 0, 0, 28, 2856 29, 30, 0, 0, 36, 0, 0, 0, 33, 0, 2857 0, 40, 41, 0, 0, 0, 0, 0, 0, 0, 2858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2859 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 2860 0, 0, 0, 208, 41 2849 2861 }; 2850 2862 2851 2863 #define yypact_value_is_default(yystate) \ 2852 ((yystate) == (-126 3))2864 ((yystate) == (-1267)) 2853 2865 2854 2866 #define yytable_value_is_error(yytable_value) \ … … 2857 2869 static const yytype_int16 yycheck[] = 2858 2870 { 2859 0, 1, 45, 118, 45, 240, 520, 0, 186, 45, 2860 533, 512, 186, 186, 863, 205, 640, 220, 186, 107, 2861 1, 743, 569, 743, 186, 743, 186, 0, 863, 169, 2862 170, 616, 349, 0, 34, 598, 34, 257, 188, 596, 2863 0, 34, 186, 1023, 491, 45, 1005, 1006, 495, 349, 2864 282, 51, 596, 598, 686, 0, 1, 45, 51, 1304, 2865 187, 34, 1006, 45, 596, 65, 45, 34, 68, 157, 2866 728, 71, 65, 364, 34, 68, 596, 368, 71, 114, 2867 1035, 1036, 689, 596, 121, 45, 187, 202, 266, 34, 2868 71, 51, 266, 266, 84, 42, 0, 417, 266, 596, 2869 137, 136, 114, 59, 266, 65, 266, 107, 68, 42, 2870 596, 71, 262, 263, 297, 115, 436, 600, 118, 119, 2871 631, 604, 266, 68, 444, 66, 71, 969, 30, 0, 2872 34, 54, 47, 48, 114, 646, 47, 48, 0, 1, 2873 267, 599, 625, 186, 0, 186, 629, 605, 148, 149, 2874 186, 345, 108, 1113, 1109, 111, 149, 157, 158, 1404, 2875 1383, 161, 42, 34, 630, 631, 267, 681, 161, 116, 2876 487, 893, 34, 893, 1016, 893, 1438, 11, 34, 81, 2877 646, 425, 426, 47, 48, 114, 186, 187, 1023, 149, 2878 67, 114, 712, 704, 187, 112, 137, 417, 186, 712, 2879 108, 161, 202, 111, 186, 120, 409, 186, 119, 71, 2880 210, 1473, 68, 1475, 100, 712, 436, 210, 114, 136, 2881 116, 75, 222, 266, 444, 266, 186, 187, 117, 222, 2882 266, 1097, 480, 1456, 114, 1101, 116, 114, 704, 786, 2883 240, 32, 425, 426, 462, 802, 42, 42, 134, 493, 2884 210, 814, 252, 341, 252, 119, 75, 889, 802, 252, 2885 260, 1205, 222, 219, 84, 265, 266, 267, 512, 814, 2886 802, 503, 272, 1233, 267, 1235, 1236, 222, 405, 252, 2887 395, 75, 802, 137, 257, 252, 480, 894, 912, 802, 2888 51, 1271, 252, 84, 85, 586, 116, 297, 598, 1258, 2889 1259, 42, 1488, 122, 405, 802, 266, 252, 423, 90, 2890 310, 219, 119, 101, 429, 1259, 802, 273, 114, 114, 2891 116, 116, 505, 898, 280, 900, 326, 510, 42, 1515, 2892 513, 331, 576, 940, 121, 101, 627, 118, 331, 127, 2893 1488, 341, 1191, 137, 133, 345, 804, 136, 252, 349, 2894 350, 478, 3, 836, 115, 675, 1191, 121, 921, 115, 2895 1508, 127, 121, 920, 364, 273, 222, 1515, 368, 114, 2896 115, 331, 280, 114, 1032, 116, 920, 478, 137, 135, 2897 75, 252, 630, 631, 567, 1459, 257, 148, 920, 349, 2898 252, 1465, 348, 88, 89, 395, 252, 115, 646, 984, 2899 114, 75, 116, 77, 78, 405, 0, 285, 121, 365, 2900 115, 1485, 405, 369, 88, 89, 1490, 135, 229, 114, 2901 1379, 116, 616, 423, 137, 425, 426, 621, 660, 429, 2902 135, 431, 310, 311, 121, 1379, 1271, 248, 1387, 124, 2903 125, 955, 116, 926, 417, 405, 664, 1427, 121, 210, 2904 137, 121, 452, 244, 1434, 675, 704, 365, 116, 121, 2905 118, 369, 75, 436, 137, 135, 967, 345, 93, 94, 2906 470, 444, 1314, 135, 121, 88, 89, 135, 478, 240, 2907 480, 701, 482, 930, 1108, 478, 114, 487, 116, 482, 2908 137, 739, 1099, 493, 350, 3, 114, 814, 116, 731, 2909 650, 641, 380, 116, 795, 505, 1486, 507, 0, 482, 2910 510, 272, 512, 513, 814, 482, 121, 115, 1081, 114, 2911 520, 116, 482, 121, 524, 95, 96, 487, 121, 1371, 2912 1372, 121, 137, 648, 1483, 993, 994, 482, 114, 1488, 2913 116, 121, 75, 114, 137, 739, 417, 137, 121, 310, 2914 114, 1158, 1159, 1067, 681, 88, 89, 137, 1072, 1508, 2915 130, 131, 135, 121, 782, 436, 1515, 117, 568, 569, 2916 136, 121, 114, 444, 792, 121, 576, 121, 482, 137, 2917 681, 121, 114, 116, 345, 803, 586, 587, 379, 115, 2918 590, 137, 1427, 137, 114, 121, 596, 137, 598, 1434, 2919 4, 5, 6, 7, 8, 9, 0, 1, 925, 480, 2920 117, 482, 114, 1271, 121, 471, 616, 114, 122, 75, 2921 482, 621, 115, 623, 128, 129, 482, 627, 121, 115, 2922 630, 631, 88, 89, 115, 121, 596, 115, 598, 75, 2923 34, 77, 78, 79, 892, 117, 646, 850, 648, 121, 2924 115, 1486, 88, 89, 10, 11, 12, 13, 14, 120, 2925 115, 617, 115, 115, 425, 426, 121, 870, 72, 121, 2926 74, 549, 550, 551, 68, 117, 632, 71, 678, 121, 2927 75, 681, 114, 587, 116, 115, 42, 82, 1346, 645, 2928 85, 121, 87, 88, 89, 0, 1, 932, 892, 490, 2929 115, 492, 675, 117, 704, 705, 706, 121, 114, 617, 2930 116, 114, 712, 713, 70, 893, 856, 115, 115, 893, 2931 893, 681, 114, 121, 632, 893, 31, 32, 701, 34, 2932 115, 893, 493, 893, 84, 115, 121, 645, 114, 739, 2933 45, 121, 115, 743, 744, 114, 51, 116, 121, 893, 2934 115, 512, 712, 713, 59, 115, 121, 1005, 137, 1366, 2935 65, 121, 618, 68, 158, 1288, 71, 114, 895, 116, 2936 1492, 727, 1492, 1431, 1492, 1433, 1383, 115, 114, 84, 2937 85, 115, 115, 121, 1002, 1003, 786, 121, 121, 114, 2938 984, 114, 115, 116, 895, 795, 75, 797, 77, 78, 2939 79, 67, 802, 108, 675, 115, 111, 997, 137, 88, 2940 89, 121, 115, 118, 814, 576, 97, 98, 121, 727, 2941 51, 4, 5, 6, 7, 8, 9, 115, 222, 1487, 2942 701, 120, 121, 121, 119, 114, 692, 115, 116, 1057, 2943 1058, 137, 802, 119, 149, 636, 61, 62, 1455, 1456, 2944 706, 137, 35, 114, 814, 616, 161, 119, 252, 505, 2945 621, 507, 75, 863, 510, 1097, 79, 513, 739, 1101, 2946 1102, 114, 750, 120, 121, 88, 89, 114, 1018, 84, 2947 1128, 186, 187, 123, 115, 885, 47, 48, 1, 72, 2948 863, 74, 892, 893, 685, 895, 687, 202, 1114, 1115, 2949 691, 114, 132, 116, 133, 210, 99, 907, 116, 122, 2950 123, 552, 553, 75, 219, 77, 78, 222, 863, 117, 2951 920, 921, 554, 555, 229, 925, 88, 89, 114, 117, 2952 116, 931, 932, 893, 1128, 895, 122, 123, 115, 244, 2953 1067, 797, 115, 248, 115, 1072, 115, 252, 253, 115, 2954 931, 115, 114, 116, 1468, 955, 114, 119, 117, 863, 2955 136, 266, 267, 560, 561, 925, 1067, 119, 273, 119, 2956 121, 1072, 119, 114, 1089, 280, 114, 115, 116, 210, 2957 136, 885, 115, 1215, 984, 1203, 931, 115, 1171, 1172, 2958 117, 1174, 863, 556, 557, 558, 559, 117, 1181, 117, 2959 1183, 863, 121, 1517, 135, 1005, 1006, 863, 31, 135, 2960 1258, 1205, 114, 115, 116, 4, 5, 6, 7, 8, 2961 9, 892, 1240, 1023, 135, 75, 331, 77, 78, 1247, 2962 1248, 1249, 75, 115, 77, 78, 115, 431, 88, 89, 2963 114, 272, 116, 348, 349, 88, 89, 3, 122, 123, 2964 1023, 114, 115, 116, 10, 11, 12, 13, 14, 119, 2965 365, 120, 1062, 115, 369, 856, 297, 1067, 121, 931, 2966 114, 862, 1072, 1305, 379, 120, 119, 1309, 1023, 310, 2967 120, 1081, 115, 72, 135, 74, 42, 115, 482, 1089, 2968 395, 137, 1310, 61, 62, 63, 121, 1, 462, 115, 2969 405, 114, 75, 116, 77, 78, 984, 1067, 115, 122, 2970 123, 902, 1072, 121, 70, 88, 89, 115, 423, 1023, 2971 115, 115, 115, 115, 429, 3, 31, 115, 1128, 115, 2972 524, 987, 10, 11, 12, 13, 14, 115, 115, 115, 2973 253, 114, 121, 75, 115, 1023, 119, 51, 137, 68, 2974 82, 115, 1023, 85, 115, 87, 88, 89, 115, 1342, 2975 465, 1023, 120, 115, 42, 470, 136, 1023, 959, 1169, 2976 1170, 932, 135, 478, 115, 72, 1408, 482, 75, 117, 2977 117, 78, 487, 80, 116, 490, 115, 492, 115, 1170, 2978 87, 1191, 70, 587, 75, 121, 77, 78, 79, 115, 2979 119, 135, 114, 107, 121, 1205, 3, 88, 89, 1209, 2980 119, 115, 115, 10, 11, 12, 13, 14, 1191, 75, 2981 115, 452, 527, 984, 1169, 1170, 82, 532, 1209, 85, 2982 115, 87, 88, 89, 121, 115, 630, 631, 115, 121, 2983 115, 135, 161, 114, 148, 42, 1191, 1362, 121, 114, 2984 114, 114, 646, 157, 114, 117, 115, 1128, 1258, 1259, 2985 116, 137, 1053, 120, 1209, 115, 1266, 1502, 120, 115, 2986 119, 1271, 133, 70, 505, 580, 507, 863, 120, 510, 2987 115, 117, 513, 137, 121, 117, 115, 1191, 115, 117, 2988 50, 596, 117, 598, 117, 115, 117, 137, 1271, 117, 2989 664, 117, 206, 222, 1304, 115, 210, 137, 1170, 120, 2990 704, 137, 617, 1169, 1492, 137, 213, 120, 1492, 1492, 2991 1191, 1266, 137, 1304, 1492, 115, 1271, 632, 135, 1191, 2992 1492, 636, 1492, 120, 1205, 1191, 240, 117, 86, 117, 2993 645, 260, 647, 648, 649, 86, 265, 1209, 1492, 90, 2994 91, 92, 465, 1468, 117, 117, 117, 115, 117, 1304, 2995 115, 117, 1362, 114, 114, 114, 1493, 1271, 272, 63, 2996 115, 275, 115, 114, 1165, 116, 681, 118, 119, 1379, 2997 685, 119, 687, 280, 114, 75, 691, 77, 78, 79, 2998 1517, 137, 1493, 297, 699, 117, 117, 115, 88, 89, 2999 1271, 117, 115, 101, 1404, 1361, 310, 712, 713, 1271, 3000 1266, 114, 101, 114, 527, 1271, 1517, 137, 782, 532, 3001 120, 45, 727, 1404, 114, 121, 116, 1427, 792, 115, 3002 115, 350, 122, 123, 1434, 115, 1436, 341, 1438, 803, 3003 1026, 345, 1304, 115, 135, 135, 115, 678, 115, 1492, 3004 137, 1492, 101, 1361, 1427, 352, 1492, 354, 137, 1404, 3005 364, 1434, 101, 57, 368, 664, 86, 580, 1468, 863, 3006 90, 91, 92, 1473, 137, 1475, 137, 115, 0, 1, 3007 115, 117, 1427, 137, 115, 115, 1486, 120, 117, 1434, 3008 117, 885, 1492, 1493, 114, 137, 116, 802, 118, 119, 3009 1493, 114, 1502, 137, 120, 99, 75, 115, 120, 814, 3010 79, 430, 34, 1486, 115, 137, 115, 1517, 115, 88, 3011 89, 425, 426, 1427, 1517, 1038, 562, 564, 563, 51, 3012 1434, 565, 1492, 964, 647, 566, 649, 931, 1191, 1348, 3013 1456, 1486, 1404, 440, 1527, 114, 1281, 1102, 452, 71, 3014 0, 856, 471, 122, 123, 1309, 1427, 862, 1434, 1053, 3015 1072, 465, 678, 1434, 678, 1427, 691, 908, 900, 580, 3016 959, 1427, 1434, 856, 642, 928, 716, 568, 1434, 1209, 3017 482, 727, 1486, 782, 34, 107, 699, 491, 893, 493, 3018 895, 495, -1, 792, 568, -1, 568, 902, -1, -1, 3019 194, 505, -1, 507, 803, 1191, 510, -1, 512, 513, 3020 -1, 1005, 1006, -1, -1, 1486, -1, -1, -1, -1, 3021 925, 71, -1, 217, 1486, -1, -1, 149, -1, 1023, 3022 1486, -1, -1, 227, -1, 157, 158, -1, 1002, 1003, 3023 -1, 946, -1, -1, -1, 75, 10, 11, 12, 13, 3024 14, -1, 82, -1, 959, 85, -1, 87, 88, 89, 3025 965, -1, -1, -1, 969, 187, -1, -1, -1, -1, 3026 -1, 590, 576, -1, -1, -1, 907, -1, 42, -1, 3027 202, -1, 586, 205, 206, -1, 116, 689, 210, -1, 3028 -1, -1, -1, 1057, 1058, -1, -1, -1, -1, 618, 3029 -1, 1287, -1, 297, 623, -1, 70, -1, 158, 231, 3030 -1, 1016, 616, 235, -1, 237, -1, 621, -1, -1, 3031 -1, -1, -1, 627, 246, -1, -1, -1, -1, -1, 3032 252, -1, -1, -1, -1, 257, -1, -1, -1, -1, 3033 -1, 1502, -1, -1, -1, 267, -1, -1, 1053, -1, 3034 114, 75, 116, 275, 1340, 79, -1, 1343, 122, 123, 3035 -1, -1, 1067, -1, 88, 89, 75, 1072, 77, 78, 3036 79, -1, -1, 692, 678, 1169, 1170, -1, 780, 88, 3037 89, 231, -1, -1, 1089, -1, -1, 706, 190, -1, 3038 114, -1, -1, -1, -1, 197, -1, 1191, 122, 123, 3039 -1, 1387, 252, 1002, 1003, 114, 1392, 257, 1113, -1, 3040 -1, -1, 716, 122, 123, 1209, -1, -1, -1, 341, 3041 -1, -1, -1, 345, 75, -1, 77, 78, 79, 351, 3042 727, 1062, -1, 946, -1, 1421, -1, 88, 89, 1203, 3043 -1, -1, 364, -1, -1, -1, 368, 441, -1, -1, 3044 852, -1, 965, -1, 51, -1, 969, -1, 1057, 1058, 3045 1165, 68, -1, 114, 1258, 1259, -1, 269, 65, -1, 3046 77, 68, 1266, 467, 71, -1, 1240, 1271, 797, -1, 3047 -1, -1, -1, 1247, 1248, 1249, 75, -1, 77, 78, 3048 79, 795, 894, -1, -1, 417, -1, -1, -1, 88, 3049 89, 351, -1, 1016, -1, -1, -1, -1, -1, 431, 3050 1304, 505, 119, -1, 436, -1, 510, -1, -1, 513, 3051 1506, -1, 444, -1, 326, 114, 1512, 116, 1233, -1, 3052 1235, 1236, 334, 122, 123, 337, -1, 1523, 940, -1, 3053 462, 1527, -1, 465, -1, -1, 1310, -1, -1, -1, 3054 -1, -1, 149, -1, 161, -1, -1, -1, 480, -1, 3055 482, -1, -1, -1, 161, -1, -1, 417, -1, 491, 3056 972, -1, -1, 495, -1, 10, 11, 12, 13, 14, 3057 -1, 431, -1, -1, -1, 1379, 436, -1, -1, 0, 3058 187, -1, 68, -1, 444, 397, -1, -1, -1, 401, 3059 1113, -1, 524, 907, -1, -1, -1, 42, 84, 1314, 3060 1404, -1, 462, 210, -1, 222, -1, -1, 1020, -1, 3061 -1, -1, -1, 34, -1, 222, 930, 931, 932, -1, 3062 480, -1, 482, 1427, -1, 70, -1, -1, -1, -1, 3063 1434, 1240, -1, 119, -1, -1, -1, 569, 1247, 1248, 3064 1249, -1, -1, 260, -1, -1, 1361, 1362, 265, -1, 3065 71, -1, -1, -1, 586, 587, 1371, 1372, 987, 663, 3066 -1, -1, -1, 280, 524, 477, 598, -1, 672, 114, 3067 984, 116, 676, -1, -1, 161, -1, 122, 123, -1, 3068 -1, -1, 1486, -1, 616, -1, -1, 1099, -1, 621, 3069 -1, -1, -1, -1, 1409, 627, -1, -1, 630, 631, 3070 -1, 1310, -1, 75, -1, 77, 78, 79, -1, -1, 3071 1233, -1, 1235, 1236, 646, -1, 88, 89, -1, -1, 3072 -1, -1, -1, -1, 331, -1, -1, 587, -1, -1, 3073 -1, -1, 664, 350, -1, -1, 222, 158, -1, -1, 3074 -1, -1, 114, 675, 116, -1, 1158, 1159, 1062, -1, 3075 122, 123, -1, 1468, 1469, -1, 568, 569, -1, -1, 3076 -1, -1, 75, 1478, 77, 78, 79, -1, -1, 701, 3077 630, 631, 704, -1, 260, 88, 89, 1492, 1493, 265, 3078 -1, 713, -1, -1, 716, -1, 646, -1, -1, -1, 3079 -1, 1314, -1, -1, -1, 1436, -1, 1438, 405, -1, 3080 -1, 114, 1517, 116, 664, -1, -1, 739, -1, 122, 3081 123, -1, 744, 430, 75, 675, 77, 78, 79, -1, 3082 -1, -1, -1, -1, -1, -1, -1, 88, 89, 446, 3083 -1, 252, 1473, -1, 1475, -1, 257, -1, -1, 651, 3084 1169, 701, -1, 655, 704, -1, -1, -1, 1371, 1372, 3085 782, -1, -1, 114, 471, -1, -1, -1, -1, -1, 3086 792, 122, 123, 795, 350, -1, 798, -1, -1, -1, 3087 -1, 803, -1, -1, -1, -1, 0, -1, -1, 739, 3088 -1, 813, -1, 887, -1, -1, 1409, -1, -1, -1, 3089 -1, -1, -1, -1, -1, 1209, 10, 11, 12, 13, 3090 14, 10, 11, 12, 13, 14, -1, -1, -1, -1, 3091 34, 102, 103, 104, 105, 106, 107, 108, 109, 110, 3092 111, 112, 782, -1, -1, -1, -1, -1, 42, -1, 3093 351, 863, 792, 42, -1, -1, -1, 1266, 798, -1, 3094 -1, -1, -1, 803, 430, 136, 1469, 71, -1, -1, 3095 -1, -1, -1, 885, 1366, 1478, 70, -1, -1, -1, 3096 892, 70, -1, 895, -1, -1, 75, -1, 77, 78, 3097 79, 1383, -1, 590, 786, -1, -1, -1, -1, 88, 3098 89, -1, -1, -1, -1, 471, -1, -1, -1, 921, 3099 1304, -1, -1, -1, -1, -1, 417, -1, 930, 931, 3100 114, 618, 116, 863, -1, 114, 623, 116, 122, 123, 3101 431, -1, -1, 122, 123, 436, -1, 0, -1, -1, 3102 -1, -1, -1, 444, -1, 885, -1, -1, -1, -1, 3103 1034, -1, 892, -1, 158, -1, 10, 11, 12, 13, 3104 14, 462, -1, 1455, 1456, -1, -1, -1, -1, -1, 3105 -1, 34, 984, -1, -1, -1, -1, -1, -1, 480, 3106 -1, 482, -1, -1, -1, 997, -1, -1, 42, -1, 3107 1002, 1003, -1, 1005, 1006, 692, -1, -1, -1, -1, 3108 28, 29, 30, -1, -1, -1, -1, 899, 71, 706, 3109 1404, 1023, -1, -1, -1, -1, 70, -1, -1, -1, 3110 -1, 75, -1, 524, 590, 79, -1, -1, -1, -1, 3111 727, -1, -1, -1, 88, 89, -1, -1, -1, -1, 3112 -1, -1, 1436, -1, 1438, 1057, 1058, -1, 252, -1, 3113 -1, -1, 618, 257, -1, -1, -1, 623, -1, -1, 3114 114, -1, 1002, 1003, -1, 1005, 1006, -1, 122, 123, 3115 -1, -1, 100, -1, 102, -1, -1, -1, -1, 1473, 3116 -1, 1475, 974, 1023, -1, -1, 587, -1, -1, -1, 3117 -1, -1, -1, -1, -1, 158, -1, -1, 990, 127, 3118 797, -1, -1, -1, -1, -1, -1, -1, 1502, -1, 3119 -1, -1, -1, -1, -1, -1, 1128, 1057, 1058, -1, 3120 -1, -1, -1, -1, -1, -1, 692, -1, -1, 630, 3121 631, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3122 706, -1, -1, -1, -1, 646, -1, 351, -1, -1, 3123 -1, -1, -1, -1, 182, -1, -1, -1, 1170, -1, 3124 -1, -1, 190, 664, 192, 193, -1, -1, -1, 197, 3125 -1, 199, 200, 1065, 675, -1, -1, -1, -1, 1191, 3126 -1, -1, -1, -1, -1, -1, -1, -1, 1128, 252, 3127 -1, 1203, -1, 1205, 257, -1, 1280, 1209, -1, -1, 3128 701, -1, -1, 704, -1, -1, -1, -1, -1, -1, 3129 -1, -1, 1104, 417, -1, -1, -1, 10, 11, 12, 3130 13, 14, -1, -1, -1, -1, -1, 431, 1240, -1, 3131 1170, 797, 436, -1, -1, 1247, 1248, 1249, 739, -1, 3132 444, 269, -1, -1, -1, -1, 1258, 1259, -1, 42, 3133 -1, 1191, -1, -1, -1, -1, -1, -1, 462, 1271, 3134 -1, -1, -1, 1203, -1, 1205, -1, -1, -1, -1, 3135 -1, -1, -1, -1, -1, -1, 480, 70, 482, -1, 3136 -1, 782, 75, -1, 77, 78, 79, -1, 351, -1, 3137 987, 792, 1304, -1, -1, 88, 89, 798, 1310, -1, 3138 1240, -1, 803, -1, -1, -1, -1, 1247, 1248, 1249, 3139 -1, -1, -1, 28, 29, 30, -1, -1, 1258, 1259, 3140 524, 114, -1, 116, -1, -1, -1, -1, -1, 122, 3141 123, 1271, -1, 10, 11, 12, 13, 14, -1, -1, 3142 -1, 55, -1, 57, -1, -1, 60, 61, 62, -1, 3143 64, 1435, -1, 1437, 417, -1, -1, -1, -1, -1, 3144 -1, -1, 863, -1, 78, 42, -1, 1379, 431, -1, 3145 1310, -1, -1, 436, -1, -1, 90, 91, -1, -1, 3146 -1, 444, -1, 587, 885, 100, -1, 102, 1472, -1, 3147 1474, 892, 1404, 70, -1, -1, -1, -1, 75, 462, 3148 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, 3149 -1, 88, 89, -1, -1, 1427, -1, 480, -1, 482, 3150 -1, 987, 1434, -1, -1, -1, 630, 631, -1, -1, 3151 -1, -1, 1516, -1, 1518, -1, -1, 114, -1, 1379, 3152 -1, -1, 646, -1, -1, 122, 123, 1531, 1532, -1, 3153 -1, 10, 11, 12, 13, 14, -1, -1, -1, -1, 3154 664, 524, -1, -1, -1, -1, -1, 182, -1, -1, 3155 -1, 675, 1169, -1, 1486, -1, -1, 192, 193, -1, 3156 -1, 1493, 197, 42, 199, 200, -1, 1427, -1, -1, 3157 -1, -1, -1, -1, 1434, -1, -1, 701, -1, -1, 3158 704, 1002, 1003, -1, 1005, 1006, -1, -1, -1, -1, 3159 -1, 70, -1, -1, -1, -1, 75, -1, 77, 78, 3160 79, -1, 1023, -1, 587, -1, -1, -1, -1, 88, 3161 89, -1, -1, -1, -1, 739, -1, -1, -1, -1, 3162 -1, -1, -1, -1, 572, 573, 1486, -1, -1, -1, 3163 10, 11, 12, 13, 14, 114, 1057, 1058, -1, -1, 3164 -1, -1, -1, 122, 123, -1, -1, 630, 631, 1266, 3165 -1, 599, -1, -1, 602, 603, -1, 605, 782, 607, 3166 608, -1, 42, 646, 612, 613, -1, -1, 792, -1, 3167 -1, -1, -1, -1, 798, -1, -1, -1, -1, 803, 3168 -1, 664, -1, 1169, -1, 10, 11, 12, 13, 14, 3169 70, -1, 675, -1, -1, 75, -1, 77, 78, 79, 3170 -1, -1, -1, -1, -1, -1, -1, 1128, 88, 89, 3171 344, -1, 346, -1, -1, -1, -1, 42, 701, -1, 3172 -1, 704, -1, 357, 358, -1, -1, -1, -1, -1, 3173 -1, -1, -1, -1, 114, -1, 116, -1, -1, 863, 3174 -1, -1, 122, 123, -1, 70, -1, -1, -1, 1170, 3175 75, -1, -1, -1, 79, -1, 739, -1, -1, -1, 3176 -1, 885, -1, 88, 89, -1, -1, -1, 892, -1, 3177 1191, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3178 1266, -1, 1203, -1, 1205, -1, -1, -1, -1, 114, 3179 -1, -1, -1, -1, -1, -1, -1, 122, 123, 782, 3180 748, 749, -1, -1, -1, -1, -1, -1, -1, 792, 3181 -1, -1, -1, -1, -1, 798, -1, -1, -1, 1240, 3182 803, -1, -1, -1, -1, -1, 1247, 1248, 1249, -1, 3183 -1, -1, -1, -1, -1, -1, -1, 1258, 1259, -1, 2871 0, 1, 186, 186, 532, 45, 45, 0, 186, 45, 2872 1, 519, 0, 186, 186, 240, 186, 205, 186, 742, 2873 742, 0, 511, 0, 118, 742, 188, 490, 639, 595, 2874 862, 494, 1022, 615, 34, 220, 349, 1, 597, 595, 2875 1303, 34, 282, 349, 685, 45, 34, 169, 170, 45, 2876 598, 51, 595, 727, 568, 34, 604, 34, 51, 425, 2877 426, 0, 417, 480, 1005, 65, 74, 30, 68, 83, 2878 297, 71, 65, 597, 66, 68, 34, 45, 71, 41, 2879 71, 436, 266, 266, 187, 595, 113, 51, 266, 444, 2880 1004, 1005, 595, 266, 266, 34, 266, 595, 266, 595, 2881 262, 263, 0, 1, 688, 46, 47, 107, 202, 630, 2882 0, 1112, 65, 107, 74, 115, 45, 80, 118, 119, 2883 0, 113, 629, 630, 645, 41, 492, 108, 136, 68, 2884 111, 41, 41, 257, 968, 364, 34, 599, 645, 368, 2885 1403, 603, 41, 107, 34, 511, 186, 186, 148, 149, 2886 186, 115, 1382, 115, 34, 99, 149, 157, 158, 51, 2887 74, 161, 624, 157, 267, 45, 628, 89, 161, 892, 2888 892, 51, 680, 71, 11, 892, 136, 41, 119, 345, 2889 486, 1015, 703, 136, 148, 65, 186, 187, 68, 133, 2890 186, 71, 59, 157, 187, 117, 703, 116, 425, 426, 2891 83, 711, 202, 113, 113, 115, 115, 121, 711, 575, 2892 210, 100, 629, 630, 113, 711, 115, 210, 186, 0, 2893 1, 1487, 222, 115, 409, 1455, 266, 266, 645, 222, 2894 266, 1232, 115, 1234, 1235, 801, 113, 126, 219, 113, 2895 240, 108, 206, 663, 111, 801, 210, 888, 1514, 113, 2896 862, 115, 252, 34, 813, 803, 148, 186, 801, 252, 2897 260, 135, 502, 1204, 252, 265, 266, 267, 114, 149, 2898 113, 785, 272, 252, 267, 252, 240, 504, 257, 187, 2899 1270, 161, 509, 222, 597, 512, 703, 68, 134, 813, 2900 71, 801, 273, 417, 252, 1034, 1035, 297, 801, 280, 2901 911, 395, 405, 801, 114, 801, 186, 187, 272, 893, 2902 310, 275, 436, 252, 480, 462, 118, 1258, 210, 674, 2903 444, 738, 46, 47, 134, 53, 326, 46, 47, 423, 2904 210, 331, 229, 297, 51, 429, 111, 120, 331, 566, 2905 100, 341, 222, 1257, 1258, 345, 310, 341, 240, 349, 2906 350, 248, 219, 919, 252, 939, 585, 1031, 1190, 267, 2907 135, 781, 252, 919, 364, 74, 126, 257, 368, 1108, 2908 114, 791, 252, 835, 3, 478, 919, 341, 87, 88, 2909 272, 345, 802, 3, 365, 113, 266, 1437, 369, 74, 2910 134, 120, 57, 120, 118, 395, 920, 626, 115, 118, 2911 364, 983, 87, 88, 368, 405, 273, 136, 462, 1458, 2912 1022, 350, 405, 280, 74, 1464, 76, 77, 310, 659, 2913 113, 114, 1472, 423, 1474, 425, 426, 87, 88, 429, 2914 115, 431, 94, 95, 99, 1484, 1426, 1378, 417, 0, 2915 1489, 222, 74, 1433, 992, 993, 954, 0, 41, 615, 2916 113, 331, 452, 345, 620, 87, 88, 436, 118, 120, 2917 135, 425, 426, 925, 1378, 444, 929, 129, 130, 349, 2918 470, 252, 116, 113, 891, 136, 120, 966, 478, 1313, 2919 480, 348, 482, 115, 114, 478, 486, 649, 452, 482, 2920 730, 114, 492, 210, 482, 1485, 1107, 405, 365, 120, 2921 813, 465, 369, 482, 504, 482, 506, 813, 113, 509, 2922 132, 511, 512, 135, 1098, 136, 663, 120, 640, 519, 2923 113, 120, 115, 523, 1487, 405, 490, 417, 492, 194, 2924 494, 134, 471, 425, 426, 134, 1370, 1371, 123, 124, 2925 504, 120, 506, 482, 1507, 509, 436, 511, 512, 113, 2926 674, 1514, 217, 647, 444, 272, 1080, 136, 1066, 113, 2927 114, 115, 227, 1071, 115, 794, 117, 567, 568, 113, 2928 478, 115, 738, 1157, 1158, 575, 700, 680, 1190, 113, 2929 297, 1001, 1002, 134, 482, 585, 586, 1004, 120, 589, 2930 480, 120, 482, 310, 120, 595, 1270, 597, 586, 862, 2931 492, 120, 482, 113, 136, 115, 486, 136, 134, 663, 2932 74, 575, 76, 77, 78, 615, 113, 136, 924, 511, 2933 620, 585, 622, 87, 88, 120, 626, 120, 113, 629, 2934 630, 113, 297, 115, 781, 616, 1056, 1057, 114, 121, 2935 122, 136, 114, 136, 791, 645, 121, 647, 120, 113, 2936 631, 615, 127, 128, 1386, 802, 620, 116, 1270, 74, 2937 120, 120, 626, 644, 849, 4, 5, 6, 7, 8, 2938 9, 1345, 87, 88, 120, 120, 136, 677, 617, 114, 2939 680, 120, 114, 575, 869, 10, 11, 12, 13, 14, 2940 136, 136, 116, 114, 114, 674, 120, 136, 113, 120, 2941 115, 482, 120, 703, 704, 705, 931, 113, 892, 892, 2942 1127, 711, 712, 677, 892, 595, 41, 597, 136, 892, 2943 892, 700, 892, 615, 892, 891, 113, 781, 620, 119, 2944 114, 113, 71, 855, 73, 452, 120, 791, 738, 136, 2945 114, 114, 742, 743, 69, 726, 120, 120, 802, 616, 2946 1482, 715, 691, 66, 114, 1487, 1430, 114, 1432, 1287, 2947 120, 114, 1025, 120, 631, 113, 705, 120, 1491, 1491, 2948 113, 113, 680, 115, 1491, 1507, 441, 644, 136, 121, 2949 122, 1365, 1514, 118, 674, 785, 116, 504, 83, 506, 2950 120, 894, 509, 114, 794, 512, 796, 136, 1382, 120, 2951 680, 801, 467, 118, 897, 114, 899, 113, 996, 115, 2952 700, 120, 1486, 813, 1426, 121, 122, 983, 114, 1239, 2953 113, 1433, 115, 114, 120, 136, 1246, 1247, 1248, 120, 2954 794, 711, 712, 4, 5, 6, 7, 8, 9, 504, 2955 1257, 116, 3, 113, 509, 120, 136, 512, 738, 10, 2956 11, 12, 13, 14, 1001, 1002, 1096, 796, 118, 726, 2957 1100, 1101, 862, 74, 35, 76, 77, 0, 1, 114, 2958 1454, 1455, 114, 1485, 862, 120, 87, 88, 120, 113, 2959 41, 115, 114, 862, 884, 504, 113, 506, 120, 1309, 2960 509, 891, 892, 512, 894, 1017, 884, 114, 31, 32, 2961 71, 34, 73, 120, 115, 114, 906, 113, 69, 1056, 2962 1057, 120, 45, 113, 114, 115, 114, 83, 51, 919, 2963 920, 801, 120, 862, 924, 1096, 59, 1190, 114, 1100, 2964 930, 931, 65, 813, 120, 68, 92, 93, 71, 930, 2965 119, 120, 906, 1170, 1171, 122, 1173, 1001, 1002, 96, 2966 97, 84, 85, 1180, 954, 1182, 113, 114, 115, 1467, 2967 677, 1127, 131, 1066, 862, 929, 930, 931, 1071, 113, 2968 114, 115, 862, 132, 1214, 108, 114, 115, 111, 74, 2969 3, 76, 77, 983, 98, 118, 894, 10, 11, 12, 2970 13, 14, 87, 88, 1088, 60, 61, 662, 60, 61, 2971 62, 891, 1056, 1057, 1004, 1005, 671, 113, 1516, 115, 2972 675, 113, 892, 115, 894, 115, 149, 74, 41, 983, 2973 119, 120, 1022, 1286, 81, 46, 47, 84, 161, 86, 2974 87, 88, 930, 113, 1022, 115, 1113, 1114, 1204, 931, 2975 551, 552, 72, 1022, 924, 75, 69, 986, 78, 113, 2976 80, 115, 113, 186, 187, 1202, 116, 87, 115, 114, 2977 74, 1061, 116, 113, 1304, 115, 1066, 81, 1308, 202, 2978 84, 1071, 86, 87, 88, 114, 1339, 210, 285, 1342, 2979 1080, 862, 114, 1022, 553, 554, 219, 114, 1088, 222, 2980 114, 983, 1239, 559, 560, 114, 229, 1061, 116, 1246, 2981 1247, 1248, 115, 310, 311, 4, 5, 6, 7, 8, 2982 9, 244, 118, 120, 1341, 248, 118, 74, 135, 252, 2983 253, 78, 118, 1386, 1022, 135, 113, 1127, 1391, 114, 2984 87, 88, 1022, 266, 267, 114, 116, 134, 345, 116, 2985 273, 116, 134, 3, 134, 31, 120, 280, 1202, 930, 2986 10, 11, 12, 13, 14, 114, 113, 1420, 1066, 114, 2987 118, 113, 1309, 1071, 121, 122, 119, 1407, 1168, 1169, 2988 114, 119, 71, 380, 73, 120, 119, 114, 1169, 114, 2989 134, 41, 120, 213, 114, 1239, 1066, 136, 114, 906, 2990 1190, 1071, 1246, 1247, 1248, 114, 114, 120, 331, 114, 2991 114, 114, 1190, 114, 1204, 114, 114, 114, 1208, 69, 2992 114, 1190, 114, 0, 1, 348, 349, 1208, 114, 114, 2993 114, 886, 10, 11, 12, 13, 14, 119, 31, 1168, 2994 135, 114, 365, 134, 114, 120, 369, 1127, 116, 116, 2995 114, 1022, 1505, 114, 1208, 120, 379, 34, 1511, 114, 2996 280, 1190, 134, 41, 113, 1309, 120, 1257, 1258, 1522, 2997 118, 114, 395, 1526, 51, 1265, 114, 1361, 114, 85, 2998 1270, 1169, 405, 89, 90, 91, 1501, 555, 556, 557, 2999 558, 69, 1270, 120, 71, 114, 114, 120, 120, 114, 3000 423, 1270, 1190, 113, 113, 113, 429, 113, 113, 115, 3001 1190, 117, 118, 1303, 113, 136, 119, 1491, 1491, 114, 3002 1208, 134, 1303, 1491, 1204, 114, 114, 119, 1491, 1491, 3003 107, 1491, 352, 1491, 354, 113, 1265, 115, 132, 119, 3004 116, 1270, 465, 121, 122, 118, 136, 470, 114, 1303, 3005 120, 548, 549, 550, 1061, 478, 116, 116, 114, 482, 3006 114, 116, 114, 486, 1, 116, 489, 116, 491, 116, 3007 116, 1361, 149, 74, 116, 76, 77, 49, 1033, 136, 3008 157, 158, 1270, 1467, 114, 119, 87, 88, 1378, 1360, 3009 1270, 74, 136, 76, 77, 78, 136, 1168, 1169, 1492, 3010 136, 136, 119, 526, 87, 88, 134, 114, 531, 688, 3011 187, 119, 113, 1403, 116, 1303, 85, 118, 116, 1190, 3012 440, 116, 1403, 1516, 116, 202, 116, 116, 205, 206, 3013 113, 116, 115, 210, 114, 114, 1426, 1208, 121, 122, 3014 113, 62, 113, 1433, 114, 1435, 113, 1437, 1426, 1403, 3015 114, 134, 118, 113, 231, 1433, 579, 1426, 235, 136, 3016 237, 1491, 1491, 116, 1433, 1491, 116, 114, 116, 246, 3017 114, 100, 595, 100, 597, 252, 119, 1467, 113, 113, 3018 257, 1435, 1472, 1437, 1474, 136, 114, 120, 114, 114, 3019 267, 114, 44, 616, 1265, 1485, 134, 1426, 275, 1270, 3020 779, 1491, 1492, 1360, 1433, 0, 136, 1485, 631, 1492, 3021 114, 1501, 635, 114, 136, 1403, 1485, 100, 1472, 100, 3022 1474, 644, 136, 646, 647, 648, 1516, 114, 136, 114, 3023 116, 136, 1303, 1516, 114, 114, 136, 119, 1426, 34, 3024 10, 11, 12, 13, 14, 1433, 1426, 1501, 116, 116, 3025 113, 1037, 749, 1433, 119, 119, 1485, 680, 136, 114, 3026 114, 684, 136, 686, 341, 114, 51, 690, 345, 114, 3027 561, 41, 851, 562, 351, 698, 71, 565, 563, 963, 3028 65, 564, 1190, 68, 1455, 1347, 71, 364, 711, 712, 3029 1526, 368, 1280, 1101, 1492, 1308, 1433, 1485, 677, 69, 3030 1052, 677, 1071, 726, 899, 1485, 690, 907, 579, 74, 3031 855, 76, 77, 78, 893, 641, 253, 958, 1516, 1501, 3032 715, 1491, 87, 88, 1279, 74, 1208, 76, 77, 78, 3033 927, 482, 1403, 74, -1, 76, 77, 78, 87, 88, 3034 417, 567, -1, 113, 726, 115, 87, 88, 113, 567, 3035 115, 121, 122, 567, 431, 1426, 121, 122, -1, 436, 3036 939, -1, 1433, 158, 149, -1, -1, 444, -1, -1, 3037 -1, -1, 113, -1, 115, -1, 161, -1, 801, -1, 3038 121, 122, -1, -1, -1, 462, -1, -1, 465, -1, 3039 813, -1, 971, -1, -1, 10, 11, 12, 13, 14, 3040 -1, 68, 187, 480, -1, 482, 726, -1, -1, -1, 3041 77, -1, -1, 490, 1485, -1, -1, 494, 10, 11, 3042 12, 13, 14, -1, -1, 210, 41, -1, 1435, -1, 3043 1437, 74, 855, 76, 77, -1, 231, 222, 861, -1, 3044 1019, -1, -1, -1, 87, 88, 523, -1, -1, 41, 3045 -1, -1, 119, -1, 69, -1, -1, 252, -1, 74, 3046 -1, -1, 257, 78, -1, 1472, -1, 1474, -1, 892, 3047 113, 894, 87, 88, -1, 118, -1, 69, 901, 1434, 3048 -1, 1436, -1, 74, -1, -1, 983, -1, -1, -1, 3049 81, 568, -1, 84, 161, 86, 87, 88, 113, -1, 3050 74, 924, 76, 77, 78, -1, 121, 122, 585, 586, 3051 -1, -1, -1, 87, 88, -1, 1471, -1, 1473, 1098, 3052 597, 113, 945, 115, 115, 1022, -1, -1, 465, 121, 3053 122, -1, -1, -1, -1, 958, -1, 0, 615, 113, 3054 -1, 964, -1, 620, -1, 968, 331, 121, 122, 626, 3055 -1, -1, 629, 630, -1, 222, 351, -1, -1, -1, 3056 1515, -1, 1517, -1, -1, -1, -1, -1, 645, -1, 3057 74, 34, 76, 77, 78, 1530, 1531, 74, 1157, 1158, 3058 -1, 78, -1, 87, 88, -1, 663, -1, -1, 526, 3059 87, 88, 1015, 260, 531, -1, -1, 674, 265, -1, 3060 85, 68, -1, -1, 89, 90, 91, -1, 71, 113, 3061 -1, -1, -1, 280, -1, -1, 113, 84, 115, -1, 3062 405, -1, 417, 700, 121, 122, 703, -1, 113, 1052, 3063 115, -1, 117, 118, -1, 712, 431, -1, 715, -1, 3064 -1, 436, 579, 1066, -1, -1, -1, -1, 1071, 444, 3065 74, -1, 119, -1, -1, -1, -1, 81, -1, -1, 3066 84, 738, 86, 87, 88, 1088, 743, 462, -1, -1, 3067 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, 3068 -1, -1, -1, 350, 74, 480, -1, 482, 78, 1112, 3069 -1, 115, -1, -1, 161, 158, -1, 87, 88, -1, 3070 -1, 41, -1, -1, 781, -1, -1, -1, -1, 646, 3071 -1, 648, -1, -1, 791, 68, -1, 794, -1, -1, 3072 797, -1, -1, 113, -1, 802, -1, -1, 523, 69, 3073 -1, 121, 122, -1, 74, 812, 76, 77, 78, -1, 3074 74, 1164, 76, 77, 78, -1, -1, 87, 88, -1, 3075 -1, -1, -1, 87, 88, 222, -1, -1, -1, -1, 3076 -1, 698, -1, 430, -1, -1, 119, -1, -1, -1, 3077 -1, -1, -1, 113, -1, 115, -1, -1, -1, 446, 3078 -1, 121, 122, -1, -1, 862, 1365, -1, -1, 252, 3079 -1, 586, -1, 260, 257, -1, -1, -1, 265, -1, 3080 -1, -1, -1, 1382, 471, -1, -1, 884, 161, 1232, 3081 -1, 1234, 1235, -1, 891, -1, -1, 894, 10, 11, 3082 12, 13, 14, -1, -1, 190, 74, -1, 76, 77, 3083 78, -1, 197, -1, 629, 630, -1, -1, -1, 87, 3084 88, -1, -1, 920, -1, -1, -1, -1, -1, 41, 3085 645, -1, 929, 930, -1, -1, -1, -1, -1, -1, 3086 -1, -1, -1, 0, -1, 113, -1, 115, 663, 222, 3087 -1, -1, -1, 121, 122, 1454, 1455, 69, -1, 674, 3088 -1, -1, 74, 350, 76, 77, 78, -1, 351, -1, 3089 1313, -1, -1, -1, -1, 87, 88, 34, -1, -1, 3090 -1, -1, -1, -1, 269, 700, 983, 260, 703, -1, 3091 -1, -1, 265, -1, -1, -1, -1, -1, -1, 996, 3092 -1, 113, 589, 115, 1001, 1002, -1, 1004, 1005, 121, 3093 122, -1, -1, -1, 71, -1, -1, 1360, 1361, -1, 3094 -1, -1, -1, 738, -1, 1022, -1, 1370, 1371, -1, 3095 617, -1, -1, -1, 417, 622, -1, -1, -1, -1, 3096 -1, 326, 74, 430, 76, 77, 78, -1, 431, 334, 3097 -1, -1, 337, 436, -1, 87, 88, -1, -1, 1056, 3098 1057, 444, -1, -1, -1, 1408, 781, 10, 11, 12, 3099 13, 14, -1, -1, -1, -1, 791, 350, -1, 462, 3100 -1, 113, 797, -1, 471, -1, -1, 802, 945, 121, 3101 122, -1, -1, -1, -1, -1, -1, 480, 41, 482, 3102 -1, 158, -1, -1, 691, -1, -1, 964, -1, 0, 3103 1, 968, 397, -1, -1, -1, 401, -1, 705, -1, 3104 -1, -1, -1, -1, 1467, 1468, 69, -1, -1, -1, 3105 1127, 74, -1, 32, 1477, 78, -1, -1, -1, 726, 3106 523, -1, -1, 34, 87, 88, -1, 862, 1491, 1492, 3107 -1, -1, -1, -1, -1, -1, -1, 430, 1015, -1, 3108 10, 11, 12, 13, 14, -1, -1, -1, -1, 884, 3109 113, -1, 1169, 1516, -1, -1, 891, 68, 121, 122, 3110 71, -1, 28, 29, 30, 84, 85, -1, -1, -1, 3111 -1, 41, 477, 1190, -1, 252, -1, -1, 471, -1, 3112 257, -1, 589, 586, -1, 1202, -1, 1204, -1, 796, 3113 -1, 1208, -1, -1, -1, -1, -1, -1, -1, 69, 3114 -1, -1, -1, -1, 74, 0, 76, 77, 78, -1, 3115 617, -1, -1, -1, -1, 622, -1, 87, 88, -1, 3116 -1, -1, 1239, -1, -1, -1, 629, 630, -1, 1246, 3117 1247, 1248, -1, -1, 100, 1112, 102, -1, -1, 34, 3118 1257, 1258, 645, 113, -1, 115, -1, 158, -1, -1, 3119 -1, 121, 122, 1270, -1, -1, -1, -1, -1, -1, 3120 663, -1, 567, 568, -1, -1, 1001, 1002, -1, 1004, 3121 1005, 674, -1, -1, 351, -1, 71, -1, -1, -1, 3122 -1, -1, -1, -1, 691, -1, 1303, 1022, -1, -1, 3123 -1, -1, 1309, -1, -1, -1, 589, 700, 705, -1, 3124 703, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3125 -1, 222, -1, -1, -1, -1, 182, -1, -1, -1, 3126 -1, 1056, 1057, -1, 617, 244, 192, 193, -1, 622, 3127 -1, 197, -1, 199, 200, 738, -1, -1, -1, -1, 3128 417, 252, -1, -1, -1, 650, -1, -1, -1, 654, 3129 -1, -1, -1, -1, 431, 1232, -1, 1234, 1235, 436, 3130 -1, 1378, -1, 158, -1, -1, -1, 444, -1, -1, 3131 -1, 10, 11, 12, 13, 14, -1, -1, 781, 986, 3132 -1, -1, -1, -1, -1, 462, 1403, -1, 791, 796, 3133 -1, -1, 1127, -1, 797, -1, -1, -1, 691, 802, 3134 -1, -1, 41, 480, -1, 482, -1, -1, -1, 1426, 3135 -1, -1, 705, -1, -1, -1, 1433, 101, 102, 103, 3136 104, 105, 106, 107, 108, 109, 110, 111, -1, -1, 3137 69, -1, -1, -1, 1169, 74, 1313, 76, 77, 78, 3138 -1, -1, -1, -1, -1, -1, 523, -1, 87, 88, 3139 -1, 135, -1, -1, -1, 1190, -1, 252, -1, 862, 3140 379, -1, 257, -1, -1, -1, -1, 1202, 1485, 1204, 3141 -1, -1, -1, -1, 113, 1492, -1, -1, -1, -1, 3142 785, 884, 121, 122, -1, -1, -1, -1, 891, -1, 3143 -1, -1, -1, 1370, 1371, -1, -1, -1, -1, -1, 3144 -1, -1, -1, 796, 1239, -1, -1, -1, -1, 586, 3145 -1, 1246, 1247, 1248, -1, -1, -1, -1, -1, -1, 3146 431, -1, 1257, 1258, -1, -1, -1, -1, -1, -1, 3147 -1, 1408, -1, -1, -1, 1270, -1, -1, -1, -1, 3184 3148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3185 1271, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3186 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3187 27, 28, 29, -1, -1, 32, 33, 34, 1002, 1003, 3188 863, 1005, 1006, -1, -1, 42, -1, -1, -1, 1310, 3189 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1023, 3190 -1, -1, 885, -1, -1, -1, -1, -1, -1, 892, 3191 -1, -1, -1, 70, -1, -1, -1, -1, 75, -1, 3192 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, 3193 -1, 88, 89, 1057, 1058, -1, -1, 572, 573, -1, 3149 -1, -1, 629, 630, -1, -1, 351, -1, -1, -1, 3150 -1, 1168, -1, -1, -1, -1, -1, -1, 645, -1, 3151 489, 482, 491, -1, 1309, -1, -1, -1, -1, 986, 3152 -1, -1, -1, -1, -1, -1, 663, -1, -1, -1, 3153 -1, 1468, -1, 898, -1, -1, -1, 674, 1001, 1002, 3154 1477, 1004, 1005, -1, -1, -1, -1, -1, -1, 55, 3155 -1, 57, 523, -1, 60, 61, 62, -1, 64, 1022, 3156 -1, -1, 417, 700, -1, -1, 703, -1, -1, -1, 3157 -1, -1, 78, -1, -1, -1, 431, -1, -1, -1, 3158 -1, 436, -1, 1378, 90, 91, -1, -1, -1, 444, 3159 -1, -1, -1, 1056, 1057, -1, -1, -1, 1265, -1, 3160 -1, 738, -1, -1, -1, -1, -1, 462, 973, -1, 3161 -1, -1, -1, -1, -1, 586, -1, -1, -1, -1, 3162 -1, -1, -1, -1, 989, 480, -1, 482, -1, -1, 3163 -1, 1426, -1, 986, -1, -1, -1, -1, 1433, -1, 3164 -1, -1, -1, -1, 781, 571, 572, -1, -1, -1, 3165 -1, -1, -1, -1, 791, -1, 635, -1, 629, 630, 3166 797, -1, -1, -1, 1127, 802, -1, -1, 523, -1, 3167 -1, -1, 598, -1, 645, 601, 602, -1, 604, -1, 3168 606, 607, -1, -1, -1, 611, 612, -1, -1, -1, 3169 1485, -1, -1, 10, 11, 12, 13, 14, -1, 1064, 3170 -1, 1168, -1, -1, -1, 684, 1169, 686, -1, -1, 3171 -1, 690, -1, -1, -1, -1, -1, -1, -1, -1, 3172 -1, -1, -1, -1, 41, 862, -1, 1190, -1, -1, 3173 -1, 586, 703, -1, -1, -1, -1, -1, 1103, 1202, 3174 -1, 1204, -1, -1, -1, -1, -1, 884, -1, -1, 3175 -1, -1, 69, -1, 891, -1, -1, 74, -1, 76, 3176 77, 78, -1, -1, -1, -1, -1, -1, -1, -1, 3177 87, 88, -1, -1, 629, 630, 1239, -1, -1, -1, 3178 -1, -1, -1, 1246, 1247, 1248, -1, -1, -1, -1, 3179 645, -1, -1, -1, 1257, 1258, 113, -1, 1265, -1, 3180 -1, -1, -1, -1, 121, 122, -1, 1270, 663, -1, 3181 -1, -1, -1, -1, -1, 1168, -1, -1, -1, 674, 3182 -1, 747, 748, -1, -1, -1, -1, -1, -1, -1, 3183 -1, -1, -1, -1, -1, -1, -1, -1, 344, -1, 3184 346, -1, -1, -1, -1, 700, 1309, -1, 703, -1, 3185 -1, 357, 358, -1, -1, 28, 29, 30, -1, -1, 3186 -1, -1, -1, -1, 1001, 1002, -1, 1004, 1005, -1, 3187 -1, -1, -1, -1, -1, -1, 855, -1, -1, -1, 3188 -1, -1, 861, 738, -1, 1022, -1, -1, -1, -1, 3189 -1, 862, 10, 11, 12, 13, 14, 15, 16, 17, 3190 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3191 28, 29, 1265, 884, -1, 1378, -1, -1, -1, 1056, 3192 1057, -1, 901, 41, -1, -1, 781, 100, -1, 102, 3193 -1, -1, -1, -1, -1, -1, 791, -1, -1, -1, 3194 -1, -1, 797, -1, -1, -1, -1, 802, -1, -1, 3195 -1, 69, -1, -1, 127, -1, -1, -1, -1, 930, 3196 -1, -1, -1, 1426, -1, -1, -1, -1, -1, -1, 3197 1433, -1, -1, -1, -1, -1, -1, 903, -1, 958, 3194 3198 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3195 -1, 899, -1, -1, -1, -1, 904, 114, 1379, 116, 3196 -1, -1, -1, -1, 599, 122, 123, 602, 603, -1, 3197 605, -1, 607, 608, -1, -1, -1, 612, 613, 10, 3198 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3199 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 3200 -1, -1, -1, -1, 1128, -1, 1427, -1, -1, -1, 3201 -1, 42, 51, 1434, -1, -1, -1, -1, -1, 1002, 3202 1003, 7, 1005, 1006, 10, 11, 12, 13, 14, 68, 3203 -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, 3204 1023, -1, -1, -1, -1, -1, 1170, -1, -1, -1, 3205 81, -1, -1, -1, 40, 41, 42, 43, -1, 693, 3206 -1, 695, -1, -1, -1, 1486, -1, 1191, 702, 703, 3207 -1, -1, -1, 707, 1057, 1058, 115, -1, -1, 1203, 3208 119, 1205, -1, 69, 70, -1, 720, -1, -1, 75, 3209 -1, 725, -1, 79, -1, -1, 82, 83, 84, 85, 3210 86, 87, 88, 89, -1, 91, 92, -1, -1, 148, 3211 -1, 1059, -1, 748, 749, -1, 1240, -1, 752, 158, 3212 -1, -1, 161, 1247, 1248, 1249, -1, -1, 114, -1, 3213 116, -1, -1, -1, 1258, 1259, 122, 123, 124, 125, 3214 126, 127, -1, -1, 68, 1128, -1, 1271, -1, -1, 3215 -1, -1, -1, 77, -1, 79, -1, 81, -1, -1, 3216 -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, 3217 -1, 210, -1, -1, -1, -1, -1, -1, -1, -1, 3218 -1, -1, -1, 222, -1, -1, 1310, 1170, -1, -1, 3219 -1, -1, -1, -1, -1, 119, -1, 121, 122, 123, 3220 -1, 240, -1, -1, -1, -1, -1, -1, 1191, -1, 3221 -1, 845, -1, 847, 848, 849, -1, -1, -1, -1, 3222 1203, -1, 1205, -1, -1, -1, 265, -1, -1, -1, 3223 -1, -1, 866, 272, -1, -1, -1, 161, -1, 1187, 3224 -1, -1, -1, -1, -1, -1, 880, -1, -1, -1, 3225 -1, -1, -1, -1, -1, 1379, -1, 1240, 297, -1, 3226 -1, -1, -1, -1, 1247, 1248, 1249, -1, -1, 904, 3227 -1, 310, -1, -1, -1, 1258, 1259, -1, -1, -1, 3228 -1, -1, -1, -1, -1, 919, -1, -1, 1271, -1, 3229 -1, -1, -1, -1, -1, -1, -1, -1, 222, -1, 3230 224, 225, 226, 1427, -1, -1, 345, -1, -1, -1, 3231 1434, 350, -1, -1, -1, -1, -1, -1, -1, -1, 3232 -1, -1, -1, -1, -1, -1, -1, 1310, -1, 963, 3233 -1, -1, -1, -1, 968, -1, 260, -1, -1, 973, 3234 -1, 265, -1, -1, 978, -1, -1, -1, -1, 983, 3235 -1, 985, 986, -1, -1, 989, 280, -1, -1, -1, 3236 -1, -1, 1486, -1, 998, -1, -1, -1, -1, -1, 3199 1127, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3200 -1, -1, -1, -1, -1, -1, -1, 862, 7, 182, 3201 -1, 10, 11, 12, 13, 14, -1, 190, -1, 192, 3202 193, -1, 1485, -1, 197, -1, 199, 200, -1, 884, 3203 -1, -1, 1169, 1004, 1005, -1, 891, -1, -1, -1, 3204 39, 40, 41, 42, -1, -1, -1, -1, -1, -1, 3205 -1, 1022, -1, 1190, -1, -1, -1, -1, -1, -1, 3206 -1, -1, -1, -1, -1, 1202, -1, 1204, -1, 68, 3207 69, -1, -1, 1052, -1, 74, -1, -1, -1, 78, 3208 -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, 3209 -1, 90, 91, -1, -1, -1, 269, -1, -1, -1, 3210 -1, -1, 1239, -1, -1, -1, -1, -1, -1, 1246, 3211 1247, 1248, -1, -1, 113, -1, 115, -1, -1, -1, 3212 1257, 1258, 121, 122, 123, 124, 125, 126, -1, -1, 3213 -1, -1, 1058, 1270, -1, -1, -1, -1, -1, -1, 3214 -1, 51, -1, -1, -1, -1, 1001, 1002, -1, 1004, 3215 1005, -1, -1, -1, -1, -1, -1, -1, 68, -1, 3216 -1, -1, -1, -1, -1, -1, -1, 1022, -1, -1, 3217 -1, -1, 1309, -1, -1, -1, -1, -1, -1, -1, 3218 -1, 39, 40, -1, 42, 1164, 692, -1, 694, -1, 3219 -1, -1, -1, -1, -1, 701, 702, 1168, 1169, -1, 3220 706, 1056, 1057, -1, -1, 115, -1, -1, -1, 119, 3221 68, -1, -1, 719, -1, -1, 74, -1, 724, 1190, 3222 78, -1, -1, 81, 82, 83, 84, 85, 86, 87, 3223 88, -1, 90, 91, -1, -1, -1, 1208, 148, -1, 3224 -1, 1378, -1, -1, -1, 751, -1, -1, 158, -1, 3225 -1, 161, -1, -1, -1, 113, -1, 115, -1, -1, 3226 1186, -1, -1, 121, 122, 123, 124, 125, 126, -1, 3227 -1, -1, 1127, -1, -1, -1, 134, -1, -1, -1, 3228 -1, -1, -1, -1, -1, -1, 1257, 1258, -1, 1426, 3229 -1, -1, -1, -1, 1265, -1, 1433, -1, -1, 1270, 3230 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3231 -1, -1, 222, -1, 1169, -1, -1, -1, -1, -1, 3237 3232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3238 1014, 1015, -1, -1, -1, -1, 425, 426, -1, -1, 3239 -1, -1, 431, -1, -1, -1, 1379, -1, -1, -1, 3240 -1, -1, -1, -1, -1, -1, 1040, 331, -1, 1043, 3241 -1, -1, -1, 452, -1, -1, -1, -1, -1, -1, 3242 -1, -1, -1, -1, 1059, -1, 350, -1, -1, -1, 3243 -1, 355, 356, -1, -1, -1, -1, -1, -1, 363, 3244 -1, 480, -1, -1, 1427, -1, -1, -1, -1, -1, 3245 -1, 1434, 1086, -1, 493, -1, -1, -1, 1092, 1093, 3246 -1, -1, -1, -1, -1, -1, 505, -1, 507, -1, 3247 -1, 510, -1, 512, 513, -1, -1, 1111, -1, -1, 3248 -1, 405, 1116, -1, -1, 524, -1, 1121, -1, -1, 3249 -1, -1, -1, -1, -1, -1, -1, -1, 1132, 423, 3250 -1, -1, -1, 1486, 428, -1, 430, -1, -1, -1, 3251 -1, 1145, -1, 1147, 1148, 1149, 1150, -1, -1, -1, 3252 -1, -1, 446, -1, -1, 449, 450, -1, 1162, -1, 3253 1164, -1, -1, 457, 1168, -1, -1, 576, -1, -1, 3254 -1, -1, -1, -1, -1, -1, -1, 471, 587, -1, 3255 -1, 590, 1187, -1, 478, -1, -1, -1, -1, -1, 3256 -1, -1, 1196, 1197, -1, -1, 7, -1, -1, 10, 3257 11, 12, 13, 14, -1, -1, -1, 616, -1, -1, 3258 -1, -1, 621, 46, -1, -1, -1, -1, -1, -1, 3259 -1, 630, 631, -1, -1, -1, -1, -1, -1, 40, 3260 41, 42, 43, -1, -1, -1, -1, 646, -1, -1, 3261 -1, -1, -1, -1, -1, -1, 1250, 1251, -1, -1, 3262 -1, -1, -1, -1, -1, -1, 1260, -1, 69, 70, 3263 93, -1, -1, -1, 75, -1, -1, -1, 79, 678, 3264 103, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3265 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3266 -1, -1, -1, -1, -1, 704, 590, 706, -1, -1, 3267 -1, -1, -1, 114, -1, 116, -1, 40, 41, -1, 3268 43, 122, 123, 124, 125, 126, 127, -1, 1322, -1, 3269 1324, 1325, 1326, -1, 618, -1, -1, -1, -1, 623, 3270 739, -1, 1336, -1, -1, -1, 69, -1, -1, 172, 3271 1344, -1, 75, -1, -1, -1, 79, -1, -1, 82, 3272 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, 3273 -1, -1, 195, -1, -1, 1369, 1370, -1, -1, -1, 3274 -1, -1, -1, -1, -1, -1, 209, -1, -1, -1, 3275 -1, 114, -1, 116, -1, 218, -1, -1, 797, 122, 3276 123, 124, 125, 126, 127, 228, -1, -1, 692, -1, 3277 -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, 3278 1414, 1415, 706, -1, -1, -1, -1, -1, -1, -1, 3279 253, -1, -1, 1427, -1, 258, -1, -1, -1, -1, 3280 1434, -1, -1, 727, -1, -1, -1, -1, 271, -1, 3281 -1, -1, -1, -1, 277, -1, 279, -1, -1, -1, 3233 240, -1, 1303, -1, -1, 1190, -1, -1, 844, -1, 3234 846, 847, 848, -1, -1, -1, -1, 1202, 1485, 1204, 3235 -1, -1, -1, -1, -1, 265, -1, -1, -1, 865, 3236 -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, 3237 -1, -1, -1, 879, -1, -1, -1, -1, -1, -1, 3238 -1, -1, -1, -1, 1239, -1, -1, 297, -1, -1, 3239 -1, 1246, 1247, 1248, -1, -1, -1, -1, 571, 572, 3240 310, -1, 1257, 1258, -1, -1, -1, 1378, -1, -1, 3241 -1, -1, 918, -1, -1, 1270, -1, -1, -1, -1, 3242 -1, -1, -1, -1, -1, 598, -1, -1, 601, 602, 3243 -1, 604, 1403, 606, 607, 345, -1, -1, 611, 612, 3244 350, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3245 -1, -1, -1, -1, 1309, 1426, 962, -1, -1, -1, 3246 -1, 967, 1433, -1, -1, -1, 972, -1, -1, -1, 3247 -1, 977, -1, -1, -1, -1, 982, -1, 984, 985, 3248 -1, -1, 988, -1, -1, -1, -1, -1, -1, -1, 3249 -1, 997, -1, -1, -1, -1, -1, -1, -1, -1, 3250 -1, -1, -1, -1, -1, -1, -1, 1013, 1014, -1, 3251 -1, -1, -1, -1, 1485, 425, 426, -1, -1, -1, 3252 -1, 431, -1, 1378, -1, -1, -1, -1, -1, -1, 3253 -1, -1, -1, 1039, -1, -1, 1042, -1, -1, -1, 3254 -1, -1, 452, -1, -1, -1, 10, 11, 12, 13, 3255 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3256 24, 25, 26, 27, 28, 29, 30, -1, -1, -1, 3257 480, 1426, -1, -1, 747, 748, -1, 41, 1433, 1085, 3258 -1, -1, 492, -1, -1, 1091, 1092, -1, -1, -1, 3259 -1, -1, -1, -1, 504, -1, 506, -1, -1, 509, 3260 -1, 511, 512, -1, 1110, 69, -1, -1, -1, 1115, 3261 -1, -1, -1, 523, 1120, -1, 80, -1, -1, -1, 3262 -1, -1, -1, -1, -1, 1131, -1, -1, -1, -1, 3263 1485, -1, -1, -1, -1, -1, -1, -1, 1144, -1, 3264 1146, 1147, 1148, 1149, -1, -1, -1, 68, -1, -1, 3265 -1, -1, -1, -1, -1, 1161, 77, 1163, 79, -1, 3266 81, 1167, -1, -1, -1, 575, -1, 88, -1, -1, 3267 -1, -1, -1, -1, -1, -1, 586, -1, -1, 589, 3268 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1195, 3269 1196, -1, -1, -1, -1, -1, -1, -1, 119, -1, 3270 121, 122, 123, -1, -1, 615, -1, -1, -1, -1, 3271 620, -1, -1, -1, -1, -1, -1, -1, -1, 629, 3272 630, -1, -1, -1, -1, 898, -1, -1, -1, -1, 3273 903, -1, -1, -1, -1, 645, -1, -1, -1, -1, 3274 161, -1, -1, 1249, 1250, -1, -1, -1, -1, -1, 3275 -1, -1, -1, 1259, -1, -1, -1, -1, -1, -1, 3276 -1, -1, -1, -1, -1, -1, -1, 677, 10, 11, 3277 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3278 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3279 32, 33, 34, 703, -1, 705, -1, -1, -1, 41, 3280 -1, 222, -1, 224, 225, 226, -1, 46, -1, -1, 3281 -1, -1, -1, -1, -1, 1321, -1, 1323, 1324, 1325, 3282 -1, -1, -1, -1, -1, -1, -1, 69, 738, 1335, 3283 -1, -1, 74, -1, 76, 77, 78, 1343, -1, 260, 3284 -1, -1, -1, -1, 265, 87, 88, -1, -1, -1, 3285 -1, -1, -1, -1, 93, -1, -1, -1, -1, 280, 3286 -1, -1, 1368, 1369, 103, -1, -1, -1, -1, -1, 3287 -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, 3288 122, 148, -1, -1, -1, 1058, 796, -1, -1, -1, 3289 -1, 158, -1, -1, -1, -1, -1, -1, -1, -1, 3290 -1, -1, 169, 170, -1, -1, -1, 1413, 1414, -1, 3291 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3292 1426, -1, -1, -1, -1, -1, -1, 1433, -1, 350, 3293 -1, -1, -1, 172, 355, 356, -1, -1, -1, -1, 3294 -1, -1, 363, -1, -1, -1, -1, -1, -1, -1, 3295 -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, 3296 1466, -1, -1, -1, 1470, -1, -1, -1, -1, -1, 3297 209, -1, -1, 240, 884, -1, -1, -1, -1, 218, 3298 -1, 891, -1, -1, 405, -1, -1, -1, -1, 228, 3299 -1, -1, 1498, -1, 1500, -1, 906, 264, -1, -1, 3300 -1, -1, 423, -1, -1, -1, -1, 428, -1, 430, 3301 -1, -1, -1, 1186, 253, -1, -1, -1, -1, 258, 3302 -1, 931, 1528, 1529, -1, 446, -1, -1, 449, 450, 3303 1536, 1537, 271, -1, -1, -1, 457, -1, 277, -1, 3304 279, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3305 471, -1, -1, -1, -1, -1, -1, 478, -1, 298, 3282 3306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3283 -1, -1, -1, 1467, -1, 298, -1, 1471, -1, -1, 3284 -1, -1, -1, -1, -1, -1, 885, -1, -1, -1, 3285 -1, -1, -1, 892, -1, -1, -1, -1, -1, -1, 3286 -1, -1, 786, -1, -1, 1499, -1, 1501, 907, -1, 3287 -1, -1, -1, 797, -1, -1, 339, -1, -1, -1, 3288 343, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3289 814, -1, -1, 932, -1, 1529, 1530, -1, -1, -1, 3290 -1, -1, -1, 1537, 1538, -1, -1, -1, 371, -1, 3291 -1, -1, 375, 376, -1, 378, -1, -1, -1, -1, 3292 -1, -1, 385, 386, -1, 388, 389, -1, 391, -1, 3293 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3294 -1, -1, -1, -1, -1, 984, -1, 410, -1, -1, 3295 -1, -1, -1, -1, -1, 418, -1, -1, -1, 157, 3296 158, -1, -1, -1, -1, -1, 1005, 1006, -1, -1, 3297 -1, -1, -1, -1, -1, -1, -1, -1, -1, 442, 3307 -1, -1, -1, 983, 10, 11, 12, 13, 14, 15, 3308 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3309 26, 27, 28, 29, 1004, 1005, 32, 33, 34, -1, 3310 339, -1, -1, -1, 343, 41, -1, -1, -1, -1, 3311 -1, -1, 379, -1, -1, -1, -1, -1, -1, -1, 3298 3312 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3299 -1, -1, 190, -1, -1, -1, -1, -1, -1, 197, 3300 -1, 925, -1, -1, -1, 468, -1, -1, -1, -1, 3301 -1, 474, -1, -1, -1, -1, 479, -1, -1, -1, 3302 -1, -1, -1, 1062, -1, -1, -1, -1, -1, -1, 3303 -1, 955, 10, 11, 12, 13, 14, 15, 16, 17, 3304 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3305 28, 29, -1, 516, 32, 33, 34, -1, -1, -1, 3306 -1, -1, -1, 987, 42, -1, -1, -1, 531, -1, 3307 -1, 269, -1, -1, 998, -1, -1, -1, -1, -1, 3308 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1128, 3309 -1, -1, 70, -1, -1, -1, -1, 75, -1, 77, 3310 78, -1, -1, -1, -1, 568, -1, -1, -1, -1, 3311 88, 89, -1, -1, 577, -1, -1, -1, -1, -1, 3312 -1, -1, -1, -1, -1, -1, -1, -1, 326, -1, 3313 1169, -1, -1, -1, 597, -1, 334, 335, 116, 337, 3314 338, -1, -1, 1067, 122, 123, -1, 345, -1, -1, 3315 -1, 349, -1, -1, -1, -1, -1, 1081, -1, -1, 3316 -1, -1, -1, -1, -1, -1, 1205, -1, -1, -1, 3317 368, -1, 635, -1, 10, 11, 12, 13, 14, 15, 3318 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3319 26, 27, 28, 29, -1, -1, 32, 33, 34, 397, 3320 -1, -1, -1, 401, -1, -1, 42, -1, 671, -1, 3321 -1, -1, -1, -1, -1, -1, 679, -1, -1, 1258, 3322 1259, -1, -1, -1, -1, -1, -1, 1266, -1, -1, 3323 -1, -1, -1, 431, 70, -1, -1, -1, -1, 75, 3324 -1, 77, 78, 79, -1, 1169, -1, 710, -1, -1, 3325 -1, -1, 88, 89, -1, -1, -1, -1, 721, 722, 3313 -1, -1, 371, 69, -1, -1, 375, 376, -1, 378, 3314 76, 77, -1, -1, -1, -1, 385, 386, -1, 388, 3315 389, 1061, 391, -1, 393, -1, -1, -1, -1, -1, 3316 -1, -1, -1, -1, -1, -1, -1, -1, 589, -1, 3317 -1, 410, -1, -1, -1, -1, -1, -1, -1, 418, 3318 -1, -1, -1, -1, -1, 121, 122, -1, -1, -1, 3319 -1, -1, -1, -1, -1, -1, 617, -1, -1, -1, 3320 -1, 622, -1, 442, -1, 472, -1, -1, -1, -1, 3321 -1, -1, -1, -1, -1, -1, -1, 1127, -1, -1, 3322 -1, -1, -1, -1, -1, -1, -1, -1, -1, 468, 3323 -1, -1, -1, -1, -1, 474, -1, -1, -1, -1, 3324 479, -1, -1, -1, 511, -1, -1, -1, -1, -1, 3325 -1, -1, -1, -1, -1, -1, 523, -1, 1168, -1, 3326 -1, -1, 529, -1, -1, 532, 157, 158, -1, -1, 3327 691, -1, -1, -1, -1, -1, 515, -1, 545, -1, 3328 -1, -1, -1, -1, 705, -1, -1, -1, -1, -1, 3329 -1, 530, -1, -1, 1204, -1, -1, -1, -1, 190, 3330 -1, -1, -1, -1, -1, 726, 197, -1, 575, -1, 3331 -1, -1, -1, -1, -1, 582, -1, -1, -1, 586, 3332 -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, 3333 -1, -1, -1, -1, -1, -1, -1, 576, -1, -1, 3334 -1, -1, -1, -1, -1, -1, -1, 1257, 1258, -1, 3335 -1, -1, -1, -1, -1, 1265, -1, 596, -1, -1, 3336 -1, -1, -1, -1, 785, 632, -1, -1, -1, -1, 3337 -1, -1, -1, 640, -1, 796, -1, -1, 269, -1, 3326 3338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3327 -1, -1, -1, -1, -1, -1, -1, -1, 114, 477, 3328 116, -1, 480, -1, -1, -1, 122, 123, -1, -1, 3329 753, -1, -1, -1, -1, 758, -1, 10, 11, 12, 3339 -1, -1, 813, -1, -1, 634, -1, 10, 11, 12, 3330 3340 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3331 3341 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3332 33, 34, 520, -1, -1, -1, 524, -1, -1, 42, 3342 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, 3343 -1, 670, -1, -1, -1, 326, -1, -1, -1, 678, 3344 -1, -1, -1, 334, 335, -1, 337, 338, -1, 716, 3345 -1, -1, -1, -1, 345, -1, 69, -1, 349, -1, 3346 -1, 74, -1, 76, 77, 78, -1, -1, 1378, -1, 3347 709, 738, -1, 740, 87, 88, -1, 368, -1, -1, 3348 -1, 720, 721, 750, -1, -1, -1, -1, -1, 756, 3333 3349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3334 1379, -1, 1266, -1, -1, -1, -1, -1, -1, -1, 3335 -1, -1, -1, -1, -1, 818, -1, 70, -1, -1, 3336 -1, -1, 825, -1, 77, 78, -1, -1, -1, -1, 3337 568, 569, -1, -1, -1, 838, -1, 840, -1, -1, 3338 -1, -1, -1, -1, -1, -1, -1, -1, 586, 587, 3339 853, -1, -1, -1, -1, -1, 859, 1436, 596, 1438, 3340 598, 599, -1, 116, -1, 148, -1, 605, 871, 122, 3341 123, 874, -1, -1, -1, 158, -1, 615, 616, -1, 3342 -1, -1, -1, 621, -1, -1, 169, 170, -1, -1, 3343 -1, -1, 630, 631, 1473, -1, 1475, -1, -1, -1, 3344 -1, -1, -1, -1, -1, -1, -1, -1, 646, -1, 3345 -1, -1, -1, 651, 652, -1, -1, 655, 656, -1, 3346 -1, -1, -1, 1502, 662, -1, 283, -1, 285, 286, 3347 -1, -1, -1, -1, -1, -1, -1, -1, 295, 296, 3348 -1, -1, -1, 681, -1, -1, -1, -1, 40, 41, 3349 -1, 43, -1, 310, 311, -1, -1, 240, -1, -1, 3350 -1, -1, -1, -1, -1, -1, 704, 705, -1, -1, 3351 -1, -1, -1, -1, -1, -1, -1, 69, -1, 982, 3352 -1, 264, -1, 75, -1, 77, 78, 79, 345, -1, 3353 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 3354 92, 739, -1, -1, -1, 743, 744, -1, -1, -1, 3350 113, -1, 115, 924, -1, -1, 397, -1, 121, 122, 3351 401, -1, -1, 752, -1, -1, -1, -1, 757, -1, 3352 -1, -1, -1, -1, -1, 1435, -1, 1437, -1, 796, 3353 797, -1, -1, 954, -1, -1, -1, -1, -1, -1, 3354 431, -1, -1, -1, -1, 812, -1, -1, -1, -1, 3355 3355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3356 -1, -1, 114, 380, 116, -1, 118, 119, -1, -1, 3357 122, 123, 124, 125, 126, 127, -1, -1, -1, -1, 3358 1043, -1, -1, -1, -1, -1, -1, -1, 786, -1, 3359 -1, -1, -1, 1517, -1, -1, -1, -1, -1, -1, 3360 -1, -1, -1, -1, 802, -1, 804, -1, -1, -1, 3361 -1, -1, -1, -1, 1077, -1, 814, -1, -1, 1082, 3362 -1, -1, -1, -1, -1, -1, -1, 1090, -1, -1, 3363 -1, -1, -1, -1, -1, -1, 379, -1, 10, 11, 3364 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3365 22, 23, 24, 25, 26, 27, 28, 29, 30, -1, 3366 -1, 1124, -1, -1, -1, -1, -1, -1, -1, -1, 3367 42, -1, 1135, -1, -1, 1138, -1, 1140, -1, -1, 3368 -1, -1, -1, -1, -1, -1, -1, 885, -1, -1, 3369 -1, -1, 1155, 1156, 892, 893, -1, 895, 70, -1, 3370 -1, 899, -1, -1, -1, -1, -1, -1, -1, 81, 3371 -1, -1, 1175, -1, -1, -1, -1, -1, -1, -1, 3372 -1, -1, 920, 921, -1, -1, -1, -1, -1, 472, 3373 -1, -1, 549, 550, 551, 552, 553, 554, 555, 556, 3374 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 3375 -1, -1, -1, -1, -1, -1, -1, 955, 1221, -1, 3376 -1, -1, -1, -1, -1, -1, 1229, -1, -1, 512, 3377 -1, -1, -1, -1, -1, -1, 974, 975, -1, -1, 3378 -1, 524, -1, -1, -1, -1, 984, 530, -1, -1, 3379 533, -1, 990, 991, -1, 993, 994, 995, -1, -1, 3380 -1, -1, -1, 546, -1, -1, -1, 1005, 1006, -1, 3381 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3382 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3383 -1, -1, -1, 576, -1, -1, 1299, -1, 1301, -1, 3384 583, -1, 42, -1, 587, -1, -1, -1, -1, -1, 3385 -1, -1, -1, -1, 1317, -1, 1319, -1, -1, -1, 3386 -1, -1, -1, -1, -1, -1, -1, 1065, -1, 1067, 3387 70, 1334, 689, -1, 1072, -1, -1, -1, -1, -1, 3388 -1, -1, -1, 1081, -1, -1, 1349, 1350, -1, -1, 3389 633, -1, -1, -1, -1, -1, -1, 1360, 641, -1, 3390 1363, -1, -1, -1, -1, -1, 1104, 1105, -1, -1, 3356 -1, -1, 1472, -1, 1474, 986, -1, -1, -1, -1, 3357 -1, -1, -1, -1, -1, -1, 997, -1, 817, -1, 3358 -1, -1, -1, -1, 851, 824, 477, -1, 855, 480, 3359 -1, 1501, -1, -1, -1, -1, -1, -1, 837, -1, 3360 839, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3361 -1, -1, -1, 852, -1, -1, -1, 884, -1, 858, 3362 -1, -1, -1, -1, 891, -1, -1, -1, 519, -1, 3363 -1, 870, 523, -1, 873, -1, -1, -1, -1, -1, 3364 -1, -1, -1, -1, -1, 1066, -1, -1, -1, -1, 3365 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1080, 3366 -1, -1, -1, -1, 931, -1, -1, -1, -1, -1, 3367 -1, -1, -1, -1, -1, -1, 567, 568, -1, -1, 3391 3368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3392 -1, -1, 1385, -1, -1, -1, -1, -1, -1, -1, 3393 1128, 1394, -1, 750, 1397, -1, 1399, 1400, 1401, -1, 3394 -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 3395 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3396 27, 28, 29, 780, -1, 32, 33, 34, 35, 36, 3397 37, 38, -1, -1, 717, 42, -1, 1440, -1, 1442, 3398 -1, 1444, -1, -1, -1, -1, -1, -1, -1, -1, 3399 -1, -1, -1, -1, -1, -1, 739, 1460, 741, -1, 3400 -1, -1, -1, 70, -1, -1, -1, 1205, 751, -1, 3401 77, 78, -1, -1, 757, -1, -1, 3, 4, 5, 3369 -1, 958, -1, -1, 585, 586, 963, -1, -1, 966, 3370 -1, -1, -1, -1, 595, -1, 597, 598, -1, -1, 3371 -1, -1, -1, 604, -1, -1, -1, -1, -1, 986, 3372 -1, -1, -1, 614, 615, -1, -1, -1, -1, 620, 3373 997, -1, -1, -1, -1, -1, -1, -1, 629, 630, 3374 -1, -1, 981, -1, -1, -1, -1, 1168, -1, -1, 3375 1017, -1, 1019, -1, 645, -1, -1, -1, -1, 650, 3376 651, -1, -1, 654, 655, -1, -1, 1034, 1035, 283, 3377 661, 285, 286, -1, -1, -1, -1, -1, -1, -1, 3378 -1, 295, 296, -1, -1, -1, -1, 1054, -1, 680, 3379 -1, -1, -1, -1, -1, -1, 310, 311, -1, -1, 3380 -1, -1, -1, 1042, -1, -1, -1, -1, -1, -1, 3381 -1, -1, 703, 704, -1, -1, -1, -1, -1, -1, 3382 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383 -1, 345, -1, -1, -1, -1, -1, 1076, -1, -1, 3384 -1, 1108, 1081, -1, 1265, -1, -1, 738, -1, -1, 3385 1089, 742, 743, -1, -1, -1, -1, -1, -1, -1, 3386 1127, -1, -1, -1, -1, -1, 380, -1, -1, -1, 3387 -1, -1, -1, -1, -1, 1142, 1143, -1, -1, -1, 3388 -1, -1, -1, -1, 1123, -1, -1, -1, -1, -1, 3389 -1, -1, -1, -1, 785, 1134, -1, -1, 1137, -1, 3390 1139, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3391 801, -1, 803, -1, -1, 1154, 1155, -1, -1, -1, 3392 -1, -1, 813, -1, -1, -1, -1, -1, -1, -1, 3393 -1, -1, -1, -1, -1, 1174, -1, -1, -1, -1, 3394 -1, -1, -1, -1, -1, 0, -1, -1, 3, 4, 3395 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3396 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3397 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3398 35, 1220, -1, 38, -1, -1, 41, 42, -1, 1228, 3399 -1, -1, -1, 884, -1, -1, -1, -1, -1, -1, 3400 891, 892, -1, 894, -1, -1, -1, 898, -1, -1, 3401 -1, 66, -1, -1, 69, -1, 71, 1284, 73, 74, 3402 1287, 76, 77, 78, -1, -1, -1, -1, 919, 920, 3403 -1, -1, 87, 88, 548, 549, 550, 551, 552, 553, 3404 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 3405 564, 565, -1, -1, -1, -1, -1, -1, 113, 1298, 3406 115, 1300, -1, 954, -1, -1, 121, 122, -1, -1, 3407 -1, -1, -1, -1, -1, -1, -1, 1316, -1, 1318, 3408 -1, -1, 973, 974, -1, -1, -1, -1, -1, -1, 3409 -1, -1, 983, -1, 1333, 1516, -1, -1, 989, 990, 3410 -1, 992, 993, 994, -1, -1, -1, -1, -1, 1348, 3411 1349, -1, -1, 1004, 1005, -1, -1, -1, -1, -1, 3412 1359, -1, -1, 1362, 10, 11, 12, 13, 14, 15, 3413 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3414 26, 27, 28, 29, 30, 1384, -1, -1, -1, -1, 3415 -1, -1, -1, -1, 1393, 41, -1, 1396, -1, 1398, 3416 1399, 1400, -1, -1, -1, -1, -1, -1, -1, -1, 3417 -1, -1, -1, 1064, 688, 1066, -1, -1, -1, -1, 3418 1071, -1, -1, 69, -1, -1, -1, -1, -1, 1080, 3419 -1, -1, -1, -1, 80, -1, -1, -1, -1, -1, 3420 1439, -1, 1441, -1, 1443, -1, -1, -1, -1, -1, 3421 -1, -1, 1103, 1104, -1, -1, -1, -1, -1, -1, 3422 1459, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3423 -1, -1, -1, -1, 1501, 749, 1127, 3, 4, 5, 3402 3424 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3403 3425 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3404 26, 27, 28, 29, -1, -1, 32, 33, 34, 35, 3405 -1, -1, -1, 39, 797, 798, 42, 43, -1, -1, 3406 1258, 1259, -1, -1, -1, -1, -1, -1, -1, -1, 3407 813, -1, -1, -1, -1, -1, -1, 894, -1, -1, 3408 -1, 67, -1, -1, 70, -1, 72, -1, 74, 75, 3409 -1, 77, 78, 79, -1, -1, -1, -1, -1, -1, 3410 -1, -1, 88, 89, -1, -1, -1, -1, -1, 852, 3411 -1, -1, -1, 856, -1, -1, -1, 40, 41, -1, 3412 43, -1, -1, 940, -1, -1, -1, -1, 114, -1, 3413 116, -1, -1, -1, 120, -1, 122, 123, -1, -1, 3414 -1, -1, 885, -1, -1, -1, 69, -1, -1, 892, 3415 -1, -1, 75, -1, -1, 972, 79, -1, -1, 82, 3416 83, 84, 85, 86, 87, 88, 89, 984, 91, 92, 3426 26, 27, 28, 29, -1, 779, 32, 33, 34, 35, 3427 -1, -1, 38, 39, 40, 41, 42, 43, -1, 45, 3428 -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 3429 -1, -1, -1, 59, -1, -1, -1, 63, 64, -1, 3430 66, -1, 68, 69, -1, 71, -1, 73, 74, -1, 3431 76, 77, 78, 1204, -1, 81, 82, 83, 84, 85, 3432 86, 87, 88, -1, 90, 91, -1, -1, -1, -1, 3417 3433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3418 -1, 1379, -1, -1, -1, -1, -1, -1, -1, 932, 3419 -1, 114, -1, 116, -1, -1, 119, -1, -1, 122, 3420 123, 124, 125, 126, 127, -1, 1023, -1, -1, -1, 3421 -1, -1, -1, -1, -1, -1, 959, -1, -1, -1, 3422 -1, 964, -1, -1, 967, -1, -1, -1, -1, -1, 3434 -1, -1, -1, -1, -1, -1, -1, 113, -1, 115, 3435 -1, -1, 118, -1, -1, 121, 122, 123, 124, 125, 3436 126, -1, -1, -1, -1, 131, 1257, 1258, -1, -1, 3437 136, -1, -1, -1, -1, -1, -1, -1, -1, 893, 3438 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3439 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3440 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3441 33, 34, 35, -1, -1, 38, 39, 40, 41, 42, 3442 -1, -1, -1, -1, -1, 939, -1, -1, -1, -1, 3423 3443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3424 -1, -1, -1, -1, 987, -1, -1, -1, -1, -1, 3425 -1, -1, -1, -1, -1, 998, -1, -1, -1, -1, 3426 -1, -1, 40, 41, -1, 43, -1, -1, -1, -1, 3427 1468, -1, -1, -1, -1, 1018, -1, 1020, -1, -1, 3428 -1, -1, 1099, -1, -1, -1, -1, -1, -1, -1, 3429 -1, 69, 1035, 1036, 1492, 1493, -1, 75, -1, -1, 3430 -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, 3431 88, 89, 1055, 91, 92, -1, -1, -1, -1, 1517, 3444 -1, -1, -1, -1, -1, 68, 69, -1, 71, -1, 3445 73, 74, -1, 76, 77, 78, -1, 971, 81, 82, 3446 83, 84, 85, 86, 87, 88, -1, 90, 91, 983, 3432 3447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3433 -1, -1, -1, -1, -1, -1, 114, -1, 116, -1, 3434 -1, 1158, 1159, 121, 122, 123, 124, 125, 126, 127, 3435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3436 -1, -1, -1, -1, -1, -1, 1109, -1, -1, -1, 3437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3438 -1, -1, -1, -1, -1, 1128, -1, -1, -1, -1, 3439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3440 1143, 1144, 3, 4, 5, 6, 7, 8, 9, 10, 3441 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3442 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3443 -1, 32, 33, 34, 35, -1, -1, -1, 39, 40, 3444 41, 42, 43, 44, -1, 46, -1, -1, 49, 50, 3445 51, 52, 53, 54, 55, 56, -1, -1, -1, 60, 3446 -1, -1, -1, 64, 65, -1, 67, -1, 69, 70, 3447 -1, 72, -1, 74, 75, -1, 77, 78, 79, -1, 3448 -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3449 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3451 -1, -1, -1, 114, -1, 116, -1, -1, 119, -1, 3452 -1, 122, 123, 124, 125, 126, 127, -1, -1, -1, 3453 -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, 3454 -1, -1, 1285, -1, -1, 1288, -1, -1, -1, 1366, 3455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3456 -1, -1, -1, -1, -1, -1, 1383, -1, -1, -1, 3457 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 3458 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3459 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3460 29, -1, -1, 32, 33, 34, 35, -1, -1, -1, 3461 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, 3462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3463 -1, -1, -1, -1, -1, -1, -1, -1, 1455, 1456, 3464 69, 70, -1, 72, -1, 74, 75, -1, 77, 78, 3465 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, 3466 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 3467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3468 -1, -1, -1, -1, -1, 114, -1, 116, -1, -1, 3469 -1, -1, -1, 122, 123, 124, 125, 126, 127, -1, 3470 -1, -1, -1, -1, -1, -1, -1, -1, 137, 3, 3448 -1, -1, -1, -1, -1, -1, -1, 1378, -1, -1, 3449 113, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3450 123, 124, 125, 126, -1, -1, -1, -1, 1022, -1, 3451 -1, -1, -1, 136, -1, -1, -1, -1, -1, 3, 3471 3452 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3472 3453 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3473 3454 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3474 34, 35, -1, -1, -1, 39, 40, 41, 42, 43, 3475 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1502, 3455 34, 35, -1, -1, 38, -1, -1, 41, 42, -1, 3476 3456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3477 -1, -1, -1, -1, -1, 69, 70, -1, 72, -1, 3478 74, 75, -1, 77, 78, 79, -1, -1, 82, 83, 3479 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 3457 -1, -1, -1, -1, -1, -1, 1467, -1, -1, -1, 3458 -1, -1, 66, -1, 1098, 69, -1, 71, -1, 73, 3459 74, -1, 76, 77, 78, -1, -1, -1, -1, -1, 3460 1491, 1492, -1, 87, 88, -1, -1, -1, -1, -1, 3461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3462 -1, -1, -1, -1, -1, 1516, -1, -1, -1, 113, 3463 -1, 115, -1, -1, -1, 119, -1, 121, 122, -1, 3464 -1, -1, -1, 1157, 1158, 3, 4, 5, 6, 7, 3465 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3466 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3467 28, 29, -1, -1, 32, 33, 34, 35, -1, -1, 3468 38, 39, 40, 41, 42, -1, -1, -1, -1, -1, 3480 3469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3481 3470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3482 114, -1, 116, -1, -1, -1, -1, -1, 122, 123, 3483 124, 125, 126, 127, 4, 5, 6, 7, 8, 9, 3471 68, 69, -1, 71, -1, 73, 74, -1, 76, 77, 3472 78, -1, -1, 81, 82, 83, 84, 85, 86, 87, 3473 88, -1, 90, 91, -1, -1, -1, -1, -1, -1, 3474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3475 -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, 3476 -1, -1, -1, 121, 122, 123, 124, 125, 126, -1, 3477 -1, -1, -1, -1, -1, 4, 5, 6, 7, 8, 3478 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3479 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3480 29, -1, -1, 32, 33, 34, -1, -1, -1, -1, 3481 39, 40, 41, 42, -1, -1, -1, -1, -1, -1, 3482 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3483 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 3484 69, -1, 71, -1, 73, 74, -1, 76, 77, 78, 3485 -1, 1365, 81, 82, 83, 84, 85, 86, 87, 88, 3486 -1, 90, 91, -1, -1, -1, -1, -1, 1382, -1, 3487 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3488 -1, -1, -1, -1, 113, -1, 115, -1, -1, -1, 3489 -1, 120, 121, 122, 123, 124, 125, 126, 4, 5, 3490 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3491 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3492 26, 27, 28, 29, -1, -1, 32, 33, 34, -1, 3493 -1, -1, -1, 39, 40, 41, 42, -1, -1, -1, 3494 1454, 1455, -1, -1, -1, -1, -1, -1, -1, -1, 3495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3496 -1, -1, 68, 69, -1, 71, -1, 73, 74, -1, 3497 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, 3498 86, 87, 88, -1, 90, 91, -1, -1, -1, -1, 3499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3500 -1, -1, -1, -1, -1, -1, -1, 113, -1, 115, 3501 -1, -1, -1, -1, 120, 121, 122, 123, 124, 125, 3502 126, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3503 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3504 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3505 33, 34, -1, -1, -1, -1, 39, 40, 41, 42, 3506 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3508 -1, -1, -1, -1, -1, 68, 69, -1, 71, -1, 3509 73, 74, -1, 76, 77, 78, -1, -1, 81, 82, 3510 83, 84, 85, 86, 87, 88, -1, 90, 91, -1, 3511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3512 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3513 113, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3514 123, 124, 125, 126, 4, 5, 6, 7, 8, 9, 3515 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3516 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3517 -1, -1, 32, 33, 34, -1, -1, -1, -1, 39, 3518 40, 41, 42, -1, -1, -1, -1, -1, -1, -1, 3519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3520 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, 3521 -1, 71, -1, 73, 74, -1, 76, 77, 78, -1, 3522 -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, 3523 90, 91, -1, -1, -1, -1, -1, -1, -1, -1, 3524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3525 -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, 3526 -1, 121, 122, 123, 124, 125, 126, 4, 5, 6, 3527 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3528 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3529 27, 28, 29, -1, -1, 32, 33, 34, -1, -1, 3530 -1, -1, 39, 40, 41, 42, -1, -1, -1, -1, 3531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3533 -1, 68, 69, -1, 71, -1, 73, 74, -1, 76, 3534 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, 3535 87, 88, -1, 90, 91, -1, -1, -1, -1, -1, 3536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3537 -1, -1, -1, -1, -1, -1, 113, -1, 115, -1, 3538 -1, -1, -1, -1, 121, 122, 123, 124, 125, 126, 3539 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3540 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3541 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3542 33, 34, 35, -1, -1, 38, -1, -1, 41, 42, 3543 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3545 -1, -1, -1, 66, -1, -1, 69, -1, 71, -1, 3546 73, 74, -1, 76, 77, 78, -1, -1, -1, -1, 3547 -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, 3548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3550 113, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3551 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3552 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3553 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3554 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, 3555 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3556 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3557 29, -1, -1, 32, 33, 34, 69, -1, 71, -1, 3558 73, 74, 41, 76, 77, 78, -1, -1, -1, -1, 3559 -1, -1, -1, -1, 87, 88, -1, -1, -1, -1, 3560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3561 69, -1, -1, -1, -1, -1, -1, 76, 77, -1, 3562 113, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3563 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3564 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3565 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 3566 33, 34, 35, -1, -1, 38, -1, -1, 41, -1, 3567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3569 -1, -1, -1, -1, -1, -1, 69, -1, 71, -1, 3570 73, -1, -1, 76, 77, -1, -1, 80, 3, 4, 3571 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3572 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3573 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3574 35, -1, 115, 38, -1, -1, 41, -1, 121, 122, 3575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3577 -1, -1, -1, -1, 69, -1, 71, -1, 73, -1, 3578 -1, 76, 77, 3, 4, 5, 6, 7, 8, 9, 3484 3579 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3485 3580 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3486 3581 -1, -1, 32, 33, 34, -1, -1, -1, -1, -1, 3487 40, 41, 42, 43, 10, 11, 12, 13, 14, 15, 3488 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3489 26, 27, 28, 29, -1, -1, 32, 33, 34, 69, 3490 70, -1, 72, -1, 74, 75, 42, 77, 78, 79, 3491 -1, -1, 82, 83, 84, 85, 86, 87, 88, 89, 3492 -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, 3493 -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, 3494 -1, 77, 78, -1, 114, -1, 116, -1, -1, -1, 3495 -1, 121, 122, 123, 124, 125, 126, 127, 4, 5, 3582 115, 41, -1, -1, -1, -1, 121, 122, -1, 7, 3583 -1, -1, 10, 11, 12, 13, 14, -1, -1, -1, 3584 -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 3585 -1, 71, -1, 73, -1, -1, 76, 77, -1, -1, 3586 -1, 39, 40, 41, 42, -1, -1, -1, -1, -1, 3587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3589 68, 69, -1, -1, -1, 115, 74, -1, -1, -1, 3590 78, 121, 122, 81, 82, 83, 84, 85, 86, 87, 3591 88, -1, 90, 91, -1, -1, -1, -1, -1, -1, 3592 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3593 -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, 3594 -1, -1, -1, 121, 122, 123, 124, 125, 126, 4, 3595 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3596 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3597 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3598 -1, -1, -1, -1, -1, -1, 41, -1, -1, 10, 3599 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3600 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3601 -1, 32, 33, 34, 69, -1, 71, -1, 73, 74, 3602 41, 76, 77, 78, -1, -1, -1, -1, -1, -1, 3603 -1, -1, 87, 88, -1, -1, -1, -1, -1, -1, 3604 -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, 3605 -1, -1, -1, -1, -1, 76, 77, -1, 113, -1, 3606 115, -1, -1, -1, -1, -1, 121, 122, 4, 5, 3496 3607 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3497 3608 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3498 26, 27, 28, 29, -1, -1, 32, 33, 34, -1, 3499 -1, -1, -1, -1, 40, 41, 42, 43, 10, 11, 3609 26, 27, 28, 29, 115, -1, 32, 33, 34, -1, 3610 121, 122, -1, -1, -1, 41, -1, -1, -1, -1, 3611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3612 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3613 -1, -1, -1, 69, -1, 71, -1, 73, -1, -1, 3614 76, 77, -1, 4, 5, 6, 7, 8, 9, 10, 3615 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3616 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3617 -1, 32, 33, 34, -1, -1, -1, -1, 114, 115, 3618 41, -1, -1, -1, -1, 121, 122, -1, -1, -1, 3619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3620 -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, 3621 71, -1, 73, -1, -1, 76, 77, -1, -1, -1, 3622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3623 -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, 3624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3625 -1, -1, -1, -1, 115, -1, -1, -1, -1, -1, 3626 121, 122, 4, 5, 6, 7, 8, 9, 10, 11, 3500 3627 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3501 3628 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3502 32, 33, 34, 69, 70, -1, 72, -1, 74, 75, 3503 42, 77, 78, 79, -1, -1, 82, 83, 84, 85, 3504 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, 3505 -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, 3506 -1, -1, -1, -1, -1, 77, 78, -1, 114, -1, 3507 116, -1, -1, -1, -1, 121, 122, 123, 124, 125, 3508 126, 127, 4, 5, 6, 7, 8, 9, 10, 11, 3509 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3510 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3511 32, 33, 34, -1, -1, -1, -1, -1, 40, 41, 3512 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, 3629 32, 33, 34, -1, -1, -1, -1, -1, -1, 41, 3630 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3631 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3632 28, 29, -1, -1, 32, 33, 34, 69, -1, 71, 3633 -1, 73, -1, 41, 76, 77, -1, -1, -1, -1, 3513 3634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3514 -1, -1, -1, -1, -1, -1, -1, 69, 70, -1, 3515 72, -1, 74, 75, -1, 77, 78, 79, -1, -1, 3516 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 3517 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3635 -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, 3636 -1, 69, -1, -1, -1, -1, -1, -1, 76, 77, 3637 -1, -1, -1, 115, -1, -1, -1, -1, -1, 121, 3638 122, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3639 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3640 23, 24, 25, 26, 27, 28, 29, 115, -1, 32, 3641 33, 34, -1, 121, 122, -1, -1, -1, 41, -1, 3518 3642 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3519 -1, -1, 114, -1, 116, -1, -1, -1, -1, -1, 3520 122, 123, 124, 125, 126, 127, 4, 5, 6, 7, 3643 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3644 -1, -1, -1, -1, -1, -1, 69, -1, 71, -1, 3645 73, -1, -1, 76, 77, -1, 4, 5, 6, 7, 3521 3646 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3522 3647 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3523 3648 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3524 -1, -1, 40, 41, 42, 43, -1, -1, -1, -1,3649 -1, -1, 115, 41, -1, -1, -1, -1, 121, 122, 3525 3650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3526 3651 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3527 -1, 69, 70, -1, 72, -1, 74, 75, -1, 77, 3528 78, 79, -1, -1, 82, 83, 84, 85, 86, 87, 3529 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, 3652 -1, 69, -1, 71, -1, 73, -1, -1, 76, 77, 3653 -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3654 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3655 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3656 33, 34, -1, -1, -1, -1, -1, 115, 41, -1, 3657 -1, -1, -1, 121, 122, -1, -1, -1, -1, -1, 3530 3658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3531 -1, -1, -1, -1, -1, -1, 114, -1, 116, -1, 3532 -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, 3533 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3659 -1, -1, -1, -1, -1, -1, 69, -1, 71, -1, 3660 73, -1, -1, 76, 77, 10, 11, 12, 13, 14, 3661 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3662 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3663 -1, -1, -1, -1, 39, 40, 41, 42, -1, -1, 3664 -1, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3666 -1, -1, -1, 68, 69, -1, -1, -1, -1, 74, 3667 -1, 76, 77, 78, -1, -1, 81, 82, 83, 84, 3668 85, 86, 87, 88, -1, 90, 91, -1, -1, -1, 3669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3670 -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, 3671 115, -1, -1, 118, -1, -1, 121, 122, 123, 124, 3672 125, 126, 10, 11, 12, 13, 14, 15, 16, 17, 3673 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3674 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3675 -1, 39, 40, 41, 42, -1, -1, -1, -1, -1, 3676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3678 68, 69, -1, -1, -1, -1, 74, -1, 76, 77, 3679 78, -1, -1, 81, 82, 83, 84, 85, 86, 87, 3680 88, -1, 90, 91, -1, -1, -1, -1, -1, -1, 3681 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3682 -1, -1, -1, -1, -1, 113, 114, 115, -1, -1, 3683 -1, -1, -1, 121, 122, 123, 124, 125, 126, 10, 3684 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3685 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3686 -1, 32, 33, 34, -1, -1, -1, -1, 39, 40, 3687 41, 42, -1, -1, -1, -1, -1, -1, -1, -1, 3688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3689 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1, 3690 -1, -1, -1, 74, -1, 76, 77, 78, -1, -1, 3691 81, 82, 83, 84, 85, 86, 87, 88, -1, 90, 3692 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3694 -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 3695 121, 122, 123, 124, 125, 126, 10, 11, 12, 13, 3534 3696 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3535 3697 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3536 34, -1, -1, -1, -1, -1, 40, 41, 42, 43,3698 34, -1, -1, -1, -1, 39, 40, 41, 42, -1, 3537 3699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3538 3700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3539 -1, -1, -1, -1, -1, 69, 70, -1, 72, -1, 3540 74, 75, -1, 77, 78, 79, -1, -1, 82, 83, 3541 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 3701 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1, 3702 74, -1, 76, 77, 78, -1, -1, 81, 82, 83, 3703 84, 85, 86, 87, 88, -1, 90, 91, -1, -1, 3704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3705 -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 3706 -1, 115, -1, -1, -1, -1, -1, 121, 122, 123, 3707 124, 125, 126, 10, 11, 12, 13, 14, 15, 16, 3708 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3709 27, 28, 29, -1, -1, 32, 33, 34, -1, -1, 3710 -1, -1, 39, 40, 41, 42, -1, -1, -1, -1, 3542 3711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3543 3712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3544 114, -1, 116, -1, -1, -1, -1, -1, 122, 123, 3545 124, 125, 126, 127, 0, -1, -1, 3, 4, 5, 3546 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 3547 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3548 26, 27, 28, 29, -1, -1, 32, 33, 34, 35, 3549 -1, -1, -1, 39, -1, -1, 42, 43, -1, -1, 3713 -1, 68, 69, -1, -1, -1, -1, 74, -1, 76, 3714 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, 3715 87, 88, -1, 90, 91, -1, -1, -1, -1, -1, 3550 3716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3552 -1, 67, -1, -1, 70, -1, 72, -1, 74, 75, 3553 -1, 77, 78, 79, -1, -1, -1, -1, -1, -1, 3554 -1, -1, 88, 89, -1, -1, -1, -1, -1, -1, 3555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3556 -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 3557 116, -1, -1, -1, -1, -1, 122, 123, 3, 4, 3558 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3559 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3560 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3561 35, -1, -1, -1, 39, -1, -1, 42, 43, -1, 3562 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3564 -1, -1, 67, -1, -1, 70, -1, 72, -1, 74, 3565 75, -1, 77, 78, 79, -1, -1, -1, -1, -1, 3566 -1, -1, -1, 88, 89, -1, -1, -1, -1, -1, 3567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3568 -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, 3569 -1, 116, -1, -1, -1, -1, -1, 122, 123, 3, 3570 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3571 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3572 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3573 34, -1, -1, -1, -1, -1, -1, -1, 42, -1, 3574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3576 -1, -1, -1, -1, -1, -1, 70, -1, 72, -1, 3577 74, 75, -1, 77, 78, 79, -1, -1, -1, -1, 3578 -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, 3579 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3581 114, -1, 116, -1, -1, -1, -1, -1, 122, 123, 3582 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3583 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3584 23, 24, 25, 26, 27, 28, 29, 30, -1, 32, 3585 33, 34, 35, -1, -1, -1, 39, -1, -1, 42, 3586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3588 -1, -1, -1, -1, -1, -1, -1, 70, -1, 72, 3589 -1, 74, -1, -1, 77, 78, -1, -1, 81, 3, 3590 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3591 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3592 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3593 34, 35, -1, 116, -1, 39, -1, -1, 42, 122, 3594 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3596 -1, -1, -1, -1, -1, -1, 70, -1, 72, -1, 3597 74, -1, -1, 77, 78, 3, 4, 5, 6, 7, 3598 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3599 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3600 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3601 -1, -1, 116, -1, 42, -1, -1, -1, 122, 123, 3602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3604 -1, -1, 70, -1, 72, -1, 74, -1, -1, 77, 3605 78, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3606 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3607 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3608 33, 34, -1, -1, -1, -1, -1, -1, 116, 42, 3609 -1, -1, -1, -1, 122, 123, -1, -1, -1, -1, 3610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3611 -1, -1, -1, -1, -1, -1, -1, 70, -1, 72, 3612 -1, 74, 75, -1, 77, 78, 79, -1, -1, -1, 3613 -1, -1, -1, -1, -1, 88, 89, -1, -1, -1, 3614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3615 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3616 -1, 114, -1, 116, -1, -1, -1, -1, -1, 122, 3617 123, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3618 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3619 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3620 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 3621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3623 -1, -1, -1, -1, -1, -1, -1, 70, -1, 72, 3624 -1, 74, -1, -1, 77, 78, 4, 5, 6, 7, 3625 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3626 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3627 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3628 -1, -1, 115, 116, 42, -1, -1, -1, -1, 122, 3629 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3631 -1, -1, 70, -1, 72, -1, 74, -1, -1, 77, 3632 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3634 -1, -1, -1, 101, -1, -1, -1, -1, -1, -1, 3635 -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, 3636 -1, -1, -1, -1, 122, 123, 4, 5, 6, 7, 3637 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3638 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3639 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3640 -1, -1, -1, -1, 42, -1, 10, 11, 12, 13, 3641 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3642 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3643 34, -1, 70, -1, 72, -1, 74, -1, 42, 77, 3644 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3646 -1, -1, -1, 101, -1, -1, 70, -1, -1, -1, 3647 -1, -1, -1, 77, 78, -1, -1, -1, 116, -1, 3648 -1, -1, -1, -1, 122, 123, 4, 5, 6, 7, 3649 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3650 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3651 28, 29, 116, -1, 32, 33, 34, -1, 122, 123, 3652 -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, 3653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3655 -1, -1, 70, -1, 72, -1, 74, -1, -1, 77, 3656 78, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3657 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3658 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3659 33, 34, -1, -1, -1, -1, -1, -1, 116, 42, 3660 -1, -1, -1, -1, 122, 123, -1, -1, -1, -1, 3661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3662 -1, -1, -1, -1, -1, -1, -1, 70, -1, 72, 3663 -1, 74, -1, -1, 77, 78, 4, 5, 6, 7, 3664 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 3665 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3666 28, 29, -1, -1, 32, 33, 34, -1, -1, -1, 3667 -1, -1, -1, 116, 42, -1, -1, -1, -1, 122, 3668 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3670 -1, -1, 70, -1, 72, -1, 74, -1, -1, 77, 3671 78, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3672 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3673 29, -1, -1, 32, 33, 34, -1, -1, -1, -1, 3674 -1, 40, 41, 42, 43, -1, -1, -1, 116, -1, 3675 -1, -1, -1, -1, 122, 123, -1, -1, -1, -1, 3676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3677 69, 70, -1, -1, -1, -1, 75, -1, 77, 78, 3678 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, 3679 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 3680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3681 -1, -1, -1, -1, -1, 114, -1, 116, -1, -1, 3682 119, -1, -1, 122, 123, 124, 125, 126, 127, 10, 3683 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3684 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3685 -1, 32, 33, 34, -1, -1, -1, -1, -1, 40, 3686 41, 42, 43, 10, 11, 12, 13, 14, 15, 16, 3687 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3688 27, 28, 29, -1, -1, 32, 33, 34, 69, 70, 3689 -1, -1, -1, -1, 75, 42, 77, 78, 79, -1, 3690 -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3691 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3692 -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 3693 77, 78, -1, 114, 115, 116, -1, -1, -1, -1, 3694 -1, 122, 123, 124, 125, 126, 127, 10, 11, 12, 3695 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3696 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3697 33, 34, -1, -1, -1, 122, 123, 40, 41, 42, 3698 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3700 -1, -1, -1, -1, -1, -1, 69, 70, -1, -1, 3701 -1, -1, 75, -1, 77, 78, 79, -1, -1, 82, 3702 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, 3703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3705 -1, 114, -1, 116, -1, -1, -1, -1, -1, 122, 3706 123, 124, 125, 126, 127, 10, 11, 12, 13, 14, 3707 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3708 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3709 -1, -1, -1, -1, -1, 40, 41, 42, 43, -1, 3710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3712 -1, -1, -1, -1, 69, 70, -1, -1, -1, -1, 3713 75, -1, 77, 78, 79, -1, -1, 82, 83, 84, 3714 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, 3715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3716 -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, 3717 -1, 116, -1, -1, -1, -1, -1, 122, 123, 124, 3718 125, 126, 127, 10, 11, 12, 13, 14, 15, 16, 3719 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3720 27, 28, 29, -1, -1, 32, 33, 34, -1, -1, 3721 -1, -1, -1, 40, 41, 42, 43, -1, -1, -1, 3722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3724 -1, -1, 69, 70, -1, -1, -1, -1, 75, -1, 3725 77, 78, 79, -1, -1, 82, 83, 84, 85, 86, 3726 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, 3727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728 -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 3729 -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, 3730 127, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3731 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3732 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3733 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 3734 42, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3735 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3736 29, -1, -1, 32, 33, 34, -1, -1, 70, -1, 3737 72, -1, 74, 42, 43, 77, 78, -1, -1, -1, 3738 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3739 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3740 29, 70, -1, 32, 33, 34, -1, -1, 77, 78, 3741 -1, -1, -1, 42, 43, -1, -1, 119, -1, -1, 3742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3744 -1, 70, -1, -1, -1, -1, -1, 116, 77, 78, 3745 -1, 120, -1, 122, 123, -1, 10, 11, 12, 13, 3746 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3747 24, 25, 26, 27, 28, 29, -1, -1, 32, 33, 3748 34, -1, -1, -1, -1, -1, -1, 116, 42, 43, 3749 -1, 120, -1, 122, 123, -1, 10, 11, 12, 13, 3750 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3751 24, 25, 26, 27, 28, 29, 70, -1, 32, 33, 3752 34, -1, -1, 77, 78, -1, -1, -1, 42, 10, 3753 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3754 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3755 -1, 32, 33, 34, -1, -1, 70, -1, -1, -1, 3756 -1, 42, 116, 77, 78, -1, 120, -1, 122, 123, 3757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3758 -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, 3759 -1, -1, -1, -1, -1, -1, 77, 78, -1, -1, 3760 -1, -1, 116, -1, -1, -1, -1, -1, 122, 123, 3761 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3762 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3763 26, 27, 28, 29, -1, 116, 32, 33, 34, -1, 3764 -1, 122, 123, -1, -1, -1, 42, 10, 11, 12, 3765 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3766 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3767 33, 34, -1, -1, 70, -1, -1, -1, -1, 42, 3768 -1, 77, 78, -1, -1, -1, -1, -1, -1, -1, 3769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3770 -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, 3771 -1, -1, -1, -1, 77, 78, -1, -1, -1, -1, 3772 116, -1, -1, -1, -1, -1, 122, 123, -1, -1, 3773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3775 -1, -1, -1, 116, -1, -1, -1, -1, -1, 122, 3776 123, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3777 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3778 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3779 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 3780 -1, 40, 41, -1, 43, 44, -1, 46, -1, -1, 3781 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, 3782 59, 60, -1, -1, -1, 64, 65, 70, 67, 72, 3783 69, 74, -1, -1, 77, 78, 75, -1, -1, -1, 3784 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, 3785 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 3786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3787 -1, -1, 115, -1, -1, 114, -1, 116, -1, -1, 3788 119, -1, -1, 122, 123, 124, 125, 126, 127, -1, 3789 -1, 40, 41, 132, 43, 44, -1, 46, 137, -1, 3790 49, 50, 51, 52, 53, 54, 55, 56, -1, -1, 3791 -1, 60, -1, -1, -1, 64, 65, -1, 67, -1, 3792 69, -1, -1, -1, -1, -1, 75, -1, -1, -1, 3793 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, 3794 89, -1, 91, 92, -1, -1, -1, -1, -1, -1, 3795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3796 -1, -1, -1, -1, -1, 114, -1, 116, -1, -1, 3797 119, -1, -1, 122, 123, 124, 125, 126, 127, -1, 3798 -1, -1, -1, 132, -1, -1, -1, -1, 137, 4, 3799 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3800 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3801 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3802 -1, -1, -1, -1, -1, -1, -1, 42, -1, 40, 3803 41, -1, 43, 44, -1, 46, 47, 48, 49, 50, 3804 51, 52, 53, 54, 55, 56, -1, -1, 59, 60, 3805 -1, -1, -1, 64, 65, 70, 67, 72, 69, 74, 3806 -1, -1, 77, 78, 75, -1, -1, -1, 79, -1, 3807 -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3808 91, 92, -1, -1, -1, -1, 101, -1, -1, -1, 3809 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3810 -1, -1, -1, 114, -1, 116, -1, -1, 119, -1, 3811 -1, 122, 123, 124, 125, 126, 127, -1, -1, 40, 3812 41, 132, 43, 44, -1, 46, 47, 48, 49, 50, 3813 51, 52, 53, 54, 55, 56, -1, -1, -1, 60, 3814 -1, -1, -1, 64, 65, -1, 67, -1, 69, -1, 3815 -1, -1, -1, -1, 75, -1, -1, -1, 79, -1, 3816 -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3817 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, 3818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3819 -1, -1, -1, 114, -1, 116, -1, -1, 119, -1, 3820 -1, 122, 123, 124, 125, 126, 127, -1, -1, 40, 3821 41, 132, 43, 44, -1, 46, -1, -1, 49, 50, 3822 51, 52, 53, 54, 55, 56, -1, -1, -1, 60, 3823 -1, -1, -1, 64, 65, -1, 67, -1, 69, -1, 3824 -1, -1, -1, -1, 75, -1, -1, -1, 79, -1, 3825 -1, 82, 83, 84, 85, 86, 87, 88, 89, -1, 3826 91, 92, -1, -1, -1, -1, -1, -1, 40, 41, 3827 -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, 3828 -1, -1, -1, 114, -1, 116, -1, -1, 119, -1, 3829 -1, 122, 123, 124, 125, 126, 127, 69, -1, -1, 3830 -1, 132, -1, 75, -1, -1, -1, 79, -1, -1, 3831 82, 83, 84, 85, 86, 87, 88, 89, -1, 91, 3832 92, -1, -1, -1, -1, -1, -1, 40, 41, -1, 3833 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3834 -1, -1, 114, -1, 116, -1, -1, 119, -1, -1, 3835 122, 123, 124, 125, 126, 127, 69, -1, -1, -1, 3836 -1, -1, 75, -1, -1, -1, 79, -1, -1, 82, 3837 83, 84, 85, 86, 87, 88, 89, -1, 91, 92, 3838 -1, -1, -1, -1, -1, -1, 40, 41, -1, 43, 3839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3840 -1, 114, -1, 116, -1, -1, -1, -1, -1, 122, 3841 123, 124, 125, 126, 127, 69, -1, -1, -1, -1, 3842 -1, 75, -1, -1, -1, 79, -1, -1, 82, 83, 3843 84, 85, 86, 87, 88, 89, -1, 91, 92, -1, 3844 -1, -1, -1, -1, -1, 40, 41, -1, 43, -1, 3845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3846 114, -1, 116, -1, -1, -1, -1, -1, 122, 123, 3847 124, 125, 126, 127, 69, -1, -1, -1, -1, -1, 3848 75, -1, -1, -1, 79, -1, -1, 82, 83, 84, 3849 85, 86, 87, 88, 89, -1, 91, 92, -1, -1, 3850 -1, -1, -1, -1, 40, 41, -1, 43, -1, -1, 3851 -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, 3852 -1, 116, -1, -1, -1, -1, -1, 122, 123, 124, 3853 125, 126, 127, 69, -1, -1, -1, -1, -1, 75, 3854 -1, -1, -1, 79, -1, -1, 82, 83, 84, 85, 3855 86, 87, 88, 89, -1, 91, 92, -1, -1, -1, 3856 -1, -1, -1, 40, 41, -1, 43, -1, -1, -1, 3857 -1, -1, -1, -1, -1, -1, -1, -1, 114, -1, 3858 116, -1, -1, -1, -1, -1, 122, 123, 124, 125, 3859 126, 127, 69, -1, -1, -1, -1, -1, 75, -1, 3860 -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, 3861 87, 88, 89, -1, 91, 92, -1, -1, -1, -1, 3862 -1, -1, 40, 41, -1, 43, -1, -1, -1, -1, 3863 -1, -1, -1, -1, -1, -1, -1, 114, -1, 116, 3864 -1, -1, -1, -1, -1, 122, 123, 124, 125, 126, 3865 127, 69, -1, -1, -1, -1, -1, 75, -1, -1, 3866 -1, 79, -1, -1, 82, 83, 84, 85, 86, 87, 3867 88, 89, -1, 91, 92, -1, -1, -1, -1, -1, 3868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3869 -1, -1, -1, -1, -1, -1, 114, -1, 116, -1, 3870 -1, -1, -1, -1, 122, 123, 124, 125, 126, 127, 3871 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3872 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 3873 24, 25, 26, 27, 28, 29, -1, -1, -1, -1, 3874 -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, 3875 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3876 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3877 -1, -1, 32, 33, 34, -1, 70, -1, 72, -1, 3878 74, 75, 42, 77, 78, 79, -1, -1, -1, -1, 3879 -1, -1, -1, -1, 88, 89, -1, -1, -1, -1, 3880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3881 70, -1, -1, -1, -1, 75, -1, 77, 78, -1, 3882 -1, -1, -1, -1, -1, -1, -1, -1, 88, 89, 3717 -1, -1, -1, -1, -1, -1, 113, -1, 115, -1, 3718 -1, -1, -1, -1, 121, 122, 123, 124, 125, 126, 3883 3719 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3884 3720 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3885 3721 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3886 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 3722 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, 3723 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3724 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3725 -1, -1, 32, 33, 34, -1, 69, -1, 71, -1, 3726 73, 41, -1, 76, 77, -1, -1, -1, -1, -1, 3727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3728 -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 3729 -1, -1, -1, -1, 74, -1, 76, 77, -1, -1, 3730 -1, -1, -1, -1, -1, 118, -1, 87, 88, -1, 3731 -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3732 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3733 26, 27, 28, 29, -1, 115, 32, 33, 34, -1, 3734 -1, 121, 122, -1, -1, 41, 42, 10, 11, 12, 3735 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3736 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3737 33, 34, -1, 69, -1, -1, -1, -1, 41, 42, 3738 76, 77, -1, -1, -1, -1, -1, -1, -1, -1, 3739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3740 -1, -1, -1, -1, -1, -1, 69, -1, -1, -1, 3741 -1, -1, -1, 76, 77, -1, -1, -1, -1, 115, 3742 -1, -1, -1, 119, -1, 121, 122, -1, -1, -1, 3743 -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3744 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3745 29, -1, 115, 32, 33, 34, 119, -1, 121, 122, 3746 -1, -1, 41, 42, 10, 11, 12, 13, 14, 15, 3747 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3748 26, 27, 28, 29, -1, -1, 32, 33, 34, -1, 3749 69, -1, -1, -1, -1, 41, -1, 76, 77, -1, 3887 3750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3888 3751 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3889 -1, -1, -1, -1, -1, -1, -1, 70, -1, 72, 3890 -1, 74, -1, -1, 77, 78, 3, 4, 5, 6, 3752 -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, 3753 76, 77, -1, -1, -1, -1, 115, -1, -1, -1, 3754 119, -1, 121, 122, -1, -1, -1, -1, 10, 11, 3755 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3756 22, 23, 24, 25, 26, 27, 28, 29, -1, 115, 3757 32, 33, 34, -1, -1, 121, 122, -1, -1, 41, 3758 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 3759 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3760 -1, -1, 32, 33, 34, -1, -1, 69, -1, -1, 3761 -1, 41, -1, -1, 76, 77, -1, -1, -1, -1, 3762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3763 -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 3764 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, 3765 -1, -1, -1, 115, -1, -1, -1, -1, -1, 121, 3766 122, -1, -1, -1, 10, 11, 12, 13, 14, 15, 3767 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 3768 26, 27, 28, 29, -1, 115, 32, 33, 34, -1, 3769 -1, 121, 122, -1, -1, 41, -1, -1, -1, -1, 3770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3772 -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, 3773 76, 77, -1, 4, 5, 6, 7, 8, 9, 10, 3774 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 3775 21, 22, 23, 24, 25, 26, 27, 28, 29, -1, 3776 -1, 32, 33, 34, -1, -1, -1, -1, -1, 115, 3777 41, -1, -1, -1, -1, 121, 122, -1, -1, -1, 3778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3779 -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, 3780 71, -1, 73, -1, -1, 76, 77, 39, 40, -1, 3781 42, 43, -1, 45, -1, -1, 48, 49, 50, 51, 3782 52, 53, 54, 55, -1, -1, 58, 59, -1, -1, 3783 -1, 63, 64, -1, 66, -1, 68, -1, -1, -1, 3784 -1, -1, 74, 114, -1, -1, 78, -1, -1, 81, 3785 82, 83, 84, 85, 86, 87, 88, -1, 90, 91, 3786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3788 -1, 113, -1, 115, -1, -1, 118, -1, -1, 121, 3789 122, 123, 124, 125, 126, -1, -1, 39, 40, 131, 3790 42, 43, -1, 45, 136, -1, 48, 49, 50, 51, 3791 52, 53, 54, 55, -1, -1, -1, 59, -1, -1, 3792 -1, 63, 64, -1, 66, -1, 68, -1, -1, -1, 3793 -1, -1, 74, -1, -1, -1, 78, -1, -1, 81, 3794 82, 83, 84, 85, 86, 87, 88, -1, 90, 91, 3795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3796 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3797 -1, 113, -1, 115, -1, -1, 118, -1, -1, 121, 3798 122, 123, 124, 125, 126, -1, -1, -1, -1, 131, 3799 -1, -1, -1, -1, 136, 4, 5, 6, 7, 8, 3800 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 3801 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 3802 29, -1, -1, 32, 33, 34, -1, -1, -1, -1, 3803 -1, -1, 41, -1, 39, 40, -1, 42, 43, -1, 3804 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 3805 55, -1, -1, 58, 59, -1, -1, -1, 63, 64, 3806 69, 66, 71, 68, 73, -1, -1, 76, 77, 74, 3807 -1, -1, -1, 78, -1, -1, 81, 82, 83, 84, 3808 85, 86, 87, 88, -1, 90, 91, -1, -1, -1, 3809 -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, 3810 -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, 3811 115, -1, -1, 118, -1, -1, 121, 122, 123, 124, 3812 125, 126, -1, -1, 39, 40, 131, 42, 43, -1, 3813 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 3814 55, -1, -1, -1, 59, -1, -1, -1, 63, 64, 3815 -1, 66, -1, 68, -1, -1, -1, -1, -1, 74, 3816 -1, -1, -1, 78, -1, -1, 81, 82, 83, 84, 3817 85, 86, 87, 88, -1, 90, 91, -1, -1, -1, 3818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3819 -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, 3820 115, -1, -1, 118, -1, -1, 121, 122, 123, 124, 3821 125, 126, -1, -1, 39, 40, 131, 42, 43, -1, 3822 45, -1, -1, 48, 49, 50, 51, 52, 53, 54, 3823 55, -1, -1, -1, 59, -1, -1, -1, 63, 64, 3824 -1, 66, -1, 68, -1, -1, -1, -1, -1, 74, 3825 -1, -1, -1, 78, -1, -1, 81, 82, 83, 84, 3826 85, 86, 87, 88, -1, 90, 91, -1, -1, -1, 3827 -1, -1, -1, 39, 40, -1, 42, -1, -1, -1, 3828 -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, 3829 115, -1, -1, 118, -1, -1, 121, 122, 123, 124, 3830 125, 126, 68, -1, -1, -1, 131, -1, 74, -1, 3831 76, 77, 78, -1, -1, 81, 82, 83, 84, 85, 3832 86, 87, 88, -1, 90, 91, -1, -1, -1, -1, 3833 -1, -1, 39, 40, -1, 42, -1, -1, -1, -1, 3834 -1, -1, -1, -1, -1, -1, -1, 113, -1, 115, 3835 -1, 117, 118, -1, -1, 121, 122, 123, 124, 125, 3836 126, 68, -1, -1, -1, -1, -1, 74, -1, -1, 3837 -1, 78, -1, -1, 81, 82, 83, 84, 85, 86, 3838 87, 88, -1, 90, 91, -1, -1, -1, -1, -1, 3839 -1, 39, 40, -1, 42, -1, -1, -1, -1, -1, 3840 -1, -1, -1, -1, -1, -1, 113, -1, 115, -1, 3841 -1, 118, -1, -1, 121, 122, 123, 124, 125, 126, 3842 68, -1, -1, -1, -1, -1, 74, -1, -1, -1, 3843 78, -1, -1, 81, 82, 83, 84, 85, 86, 87, 3844 88, -1, 90, 91, -1, -1, -1, -1, -1, -1, 3845 39, 40, -1, 42, -1, -1, -1, -1, -1, -1, 3846 -1, -1, -1, -1, -1, 113, -1, 115, -1, -1, 3847 -1, -1, 120, 121, 122, 123, 124, 125, 126, 68, 3848 -1, -1, -1, -1, -1, 74, -1, -1, -1, 78, 3849 -1, -1, 81, 82, 83, 84, 85, 86, 87, 88, 3850 -1, 90, 91, -1, -1, -1, -1, -1, -1, 39, 3851 40, -1, 42, -1, -1, -1, -1, -1, -1, -1, 3852 -1, -1, -1, -1, 113, -1, 115, -1, -1, 118, 3853 -1, -1, 121, 122, 123, 124, 125, 126, 68, -1, 3854 -1, -1, -1, -1, 74, -1, -1, -1, 78, -1, 3855 -1, 81, 82, 83, 84, 85, 86, 87, 88, -1, 3856 90, 91, -1, -1, -1, -1, -1, -1, 39, 40, 3857 -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, 3858 -1, -1, -1, 113, -1, 115, -1, -1, -1, -1, 3859 -1, 121, 122, 123, 124, 125, 126, 68, -1, -1, 3860 -1, -1, -1, 74, -1, -1, -1, 78, -1, -1, 3861 81, 82, 83, 84, 85, 86, 87, 88, -1, 90, 3862 91, -1, -1, -1, -1, -1, -1, 39, 40, -1, 3863 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3864 -1, -1, 113, -1, 115, -1, -1, -1, -1, -1, 3865 121, 122, 123, 124, 125, 126, 68, -1, -1, -1, 3866 -1, -1, 74, -1, -1, -1, 78, -1, -1, 81, 3867 82, 83, 84, 85, 86, 87, 88, -1, 90, 91, 3868 -1, -1, -1, -1, -1, -1, 39, 40, -1, 42, 3869 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3870 -1, 113, -1, 115, -1, -1, -1, -1, -1, 121, 3871 122, 123, 124, 125, 126, 68, -1, -1, -1, -1, 3872 -1, 74, -1, -1, -1, 78, -1, -1, 81, 82, 3873 83, 84, 85, 86, 87, 88, -1, 90, 91, -1, 3874 -1, -1, -1, -1, -1, 39, 40, -1, 42, -1, 3875 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3876 113, -1, 115, -1, -1, -1, -1, -1, 121, 122, 3877 123, 124, 125, 126, 68, -1, -1, -1, -1, -1, 3878 74, -1, -1, -1, 78, -1, -1, 81, 82, 83, 3879 84, 85, 86, 87, 88, -1, 90, 91, -1, -1, 3880 -1, -1, -1, -1, 39, 40, -1, 42, -1, -1, 3881 -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 3882 -1, 115, -1, -1, -1, -1, -1, 121, 122, 123, 3883 124, 125, 126, 68, -1, -1, -1, -1, -1, 74, 3884 -1, -1, -1, 78, -1, -1, 81, 82, 83, 84, 3885 85, 86, 87, 88, -1, 90, 91, -1, -1, -1, 3886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3887 -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, 3888 115, -1, -1, -1, -1, -1, 121, 122, 123, 124, 3889 125, 126, 4, 5, 6, 7, 8, 9, 10, 11, 3890 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3891 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3892 -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 3893 -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 3894 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 3895 28, 29, -1, -1, 32, 33, 34, 69, -1, 71, 3896 -1, 73, 74, 41, 76, 77, 78, -1, -1, -1, 3897 -1, -1, -1, -1, -1, 87, 88, -1, -1, -1, 3898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3899 -1, 69, -1, -1, -1, -1, 74, -1, 76, 77, 3900 -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 3901 88, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3902 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3903 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3904 32, 33, 34, -1, -1, -1, -1, -1, -1, 41, 3905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3907 -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, 3908 -1, 73, -1, -1, 76, 77, 3, 4, 5, 6, 3891 3909 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 3892 3910 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 3893 3911 27, 28, 29, -1, -1, 32, 33, 34, -1, -1, 3894 -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,3912 -1, -1, -1, -1, 41, -1, -1, -1, -1, -1, 3895 3913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3896 3914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3897 -1, -1, -1, 70, -1, 72, -1, 74, -1, -1, 3898 77, 78, 4, 5, 6, 7, 8, 9, 10, 11, 3899 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3900 22, 23, 24, 25, 26, 27, 28, 29, -1, -1, 3901 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 3902 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3915 -1, -1, 69, -1, 71, -1, 73, -1, -1, 76, 3916 77, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3917 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3918 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3919 33, 34, -1, -1, -1, -1, -1, -1, 41, -1, 3903 3920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3904 -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, 3905 72, -1, 74, -1, -1, 77, 78 3921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3922 -1, -1, -1, -1, -1, -1, 69, -1, 71, -1, 3923 73, -1, -1, 76, 77, 10, 11, 12, 13, 14, 3924 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 3925 25, 26, 27, 28, 29, -1, -1, 32, 33, 34, 3926 35, 36, 37, -1, -1, -1, 41, 10, 11, 12, 3927 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 3928 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 3929 33, 34, -1, -1, 69, -1, -1, -1, 41, -1, 3930 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1, 3931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3932 -1, -1, -1, -1, -1, -1, 69, -1, -1, -1, 3933 -1, -1, -1, 76, 77 3906 3934 }; 3907 3935 … … 3913 3941 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 3914 3942 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 3915 34, 35, 39, 42, 43, 67, 70, 72, 74, 75, 3916 77, 78, 79, 88, 89, 114, 116, 122, 123, 142, 3917 145, 157, 206, 220, 221, 222, 223, 224, 225, 226, 3918 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 3919 237, 239, 240, 241, 242, 243, 244, 245, 247, 248, 3920 249, 250, 251, 252, 254, 262, 263, 290, 291, 292, 3921 300, 303, 309, 310, 312, 314, 315, 321, 326, 330, 3922 331, 332, 333, 334, 335, 336, 337, 357, 374, 375, 3923 376, 377, 75, 144, 145, 157, 223, 225, 233, 235, 3924 244, 248, 250, 291, 84, 114, 319, 320, 321, 319, 3925 319, 75, 77, 78, 79, 143, 144, 280, 281, 301, 3926 302, 77, 78, 281, 114, 312, 11, 207, 114, 157, 3927 326, 331, 332, 333, 335, 336, 337, 117, 139, 226, 3928 233, 235, 330, 334, 373, 374, 377, 378, 140, 112, 3929 136, 284, 119, 140, 181, 77, 78, 142, 279, 140, 3930 140, 140, 121, 140, 77, 78, 114, 157, 316, 325, 3931 326, 327, 328, 329, 330, 334, 338, 339, 340, 341, 3932 342, 348, 3, 30, 81, 246, 3, 5, 77, 116, 3933 157, 225, 236, 240, 242, 251, 292, 330, 334, 377, 3934 223, 225, 235, 244, 248, 250, 291, 330, 334, 35, 3935 241, 241, 236, 242, 140, 241, 236, 241, 236, 78, 3936 114, 119, 281, 292, 119, 281, 241, 236, 121, 140, 3937 140, 0, 139, 114, 181, 319, 319, 139, 116, 233, 3938 235, 375, 279, 279, 136, 235, 114, 157, 316, 326, 3939 330, 116, 157, 377, 313, 238, 321, 114, 297, 114, 3940 114, 54, 114, 40, 41, 43, 69, 75, 79, 82, 3941 83, 84, 85, 86, 87, 91, 92, 114, 116, 124, 3942 125, 126, 127, 141, 145, 146, 147, 148, 149, 156, 3943 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 3944 167, 168, 169, 170, 172, 175, 233, 283, 299, 373, 3945 378, 235, 115, 115, 115, 115, 115, 115, 115, 116, 3946 233, 357, 375, 116, 122, 157, 172, 225, 226, 232, 3947 235, 239, 240, 244, 247, 248, 250, 269, 270, 274, 3948 275, 276, 277, 291, 357, 369, 370, 371, 372, 377, 3949 378, 114, 330, 334, 377, 114, 121, 137, 116, 119, 3950 157, 172, 285, 285, 120, 139, 121, 137, 114, 121, 3951 137, 121, 137, 121, 137, 319, 137, 326, 327, 328, 3952 329, 339, 340, 341, 342, 235, 325, 338, 67, 318, 3953 116, 319, 356, 357, 319, 319, 181, 139, 114, 319, 3954 356, 319, 319, 235, 316, 114, 114, 234, 235, 233, 3955 235, 139, 233, 373, 378, 181, 139, 279, 284, 225, 3956 240, 330, 334, 181, 139, 301, 235, 244, 137, 235, 3957 235, 299, 255, 253, 265, 281, 264, 235, 301, 137, 3958 137, 312, 139, 144, 278, 3, 140, 215, 216, 230, 3959 232, 235, 139, 318, 114, 318, 172, 326, 235, 114, 3960 139, 279, 119, 35, 36, 37, 38, 233, 293, 294, 3961 296, 139, 133, 136, 298, 139, 236, 241, 242, 279, 3962 322, 323, 324, 114, 146, 114, 156, 114, 156, 159, 3963 114, 156, 114, 114, 156, 156, 116, 172, 177, 181, 3964 233, 282, 373, 377, 139, 84, 86, 90, 91, 92, 3965 114, 116, 118, 119, 102, 103, 104, 105, 106, 107, 3966 108, 109, 110, 111, 112, 136, 174, 159, 159, 122, 3967 128, 129, 124, 125, 93, 94, 95, 96, 130, 131, 3968 97, 98, 123, 132, 133, 99, 100, 134, 114, 157, 3969 352, 353, 354, 355, 356, 115, 121, 114, 356, 357, 3970 114, 356, 357, 139, 233, 375, 117, 139, 140, 233, 3971 235, 368, 369, 377, 378, 140, 114, 116, 157, 326, 3972 343, 344, 345, 346, 347, 348, 349, 350, 351, 357, 3973 358, 359, 360, 361, 362, 363, 157, 377, 235, 140, 3974 140, 157, 233, 235, 370, 279, 233, 357, 370, 279, 3975 139, 139, 139, 139, 75, 116, 118, 145, 281, 285, 3976 286, 287, 288, 289, 139, 139, 139, 139, 139, 139, 3977 316, 115, 115, 115, 115, 115, 115, 115, 325, 338, 3978 114, 284, 117, 215, 139, 316, 177, 283, 177, 283, 3979 316, 116, 215, 318, 181, 139, 215, 115, 43, 116, 3980 120, 233, 256, 257, 258, 373, 119, 121, 379, 136, 3981 266, 119, 235, 271, 272, 273, 276, 277, 115, 121, 3982 181, 139, 122, 172, 139, 232, 235, 270, 369, 377, 3983 310, 311, 114, 157, 343, 115, 121, 136, 380, 281, 3984 293, 114, 119, 281, 283, 293, 115, 121, 114, 146, 3985 115, 135, 282, 282, 282, 151, 172, 283, 282, 139, 3986 115, 121, 115, 114, 157, 356, 364, 365, 366, 367, 3987 115, 121, 172, 116, 144, 150, 151, 139, 116, 144, 3988 150, 172, 159, 159, 159, 160, 160, 161, 161, 162, 3989 162, 162, 162, 163, 163, 164, 165, 166, 167, 168, 3990 135, 177, 139, 353, 354, 355, 235, 352, 319, 319, 3991 172, 283, 139, 278, 233, 357, 370, 235, 239, 117, 3992 377, 117, 114, 139, 326, 344, 345, 346, 349, 359, 3993 360, 361, 117, 139, 235, 343, 347, 358, 114, 319, 3994 362, 380, 319, 319, 380, 114, 319, 362, 319, 319, 3995 319, 319, 357, 233, 368, 378, 279, 117, 121, 117, 3996 121, 380, 233, 370, 380, 267, 268, 269, 270, 267, 3997 279, 172, 139, 116, 281, 135, 121, 379, 285, 116, 3998 135, 289, 31, 217, 218, 279, 267, 144, 316, 144, 3999 318, 114, 356, 357, 114, 356, 357, 146, 357, 181, 4000 271, 115, 115, 115, 115, 139, 181, 215, 181, 119, 4001 257, 258, 139, 114, 135, 157, 259, 261, 325, 326, 4002 338, 364, 121, 137, 121, 137, 281, 255, 281, 120, 4003 170, 171, 265, 140, 140, 144, 230, 140, 140, 267, 4004 114, 157, 377, 140, 120, 235, 294, 172, 295, 140, 4005 139, 139, 114, 140, 115, 323, 177, 178, 135, 137, 4006 116, 146, 208, 209, 210, 115, 121, 115, 115, 115, 4007 115, 172, 365, 366, 367, 235, 364, 319, 319, 119, 4008 159, 172, 173, 176, 121, 139, 115, 121, 172, 139, 4009 120, 170, 135, 271, 115, 115, 115, 352, 271, 115, 4010 233, 370, 116, 122, 157, 172, 172, 235, 349, 271, 4011 115, 115, 115, 115, 115, 115, 115, 7, 235, 343, 4012 347, 358, 139, 139, 380, 139, 139, 140, 140, 140, 4013 140, 284, 170, 171, 172, 317, 139, 285, 287, 120, 4014 139, 219, 281, 43, 44, 46, 49, 50, 51, 52, 4015 53, 54, 55, 56, 60, 64, 65, 75, 132, 178, 4016 179, 180, 181, 182, 183, 185, 186, 198, 200, 201, 4017 206, 220, 315, 31, 140, 136, 284, 139, 139, 115, 4018 140, 181, 255, 137, 137, 326, 171, 235, 260, 261, 4019 260, 281, 319, 120, 266, 379, 115, 121, 117, 117, 4020 140, 235, 121, 380, 297, 115, 293, 223, 225, 233, 4021 305, 306, 307, 308, 299, 115, 115, 135, 171, 114, 4022 115, 135, 121, 144, 115, 115, 115, 364, 286, 121, 4023 140, 176, 82, 85, 87, 144, 152, 153, 154, 151, 4024 140, 152, 170, 140, 114, 356, 357, 140, 139, 140, 4025 140, 140, 172, 115, 140, 114, 356, 357, 114, 362, 4026 114, 362, 357, 234, 7, 122, 140, 172, 271, 271, 4027 270, 274, 274, 275, 115, 121, 121, 115, 101, 127, 4028 140, 140, 152, 285, 172, 121, 137, 220, 224, 235, 4029 239, 114, 114, 179, 114, 114, 75, 137, 75, 137, 4030 75, 122, 178, 114, 181, 173, 173, 135, 149, 137, 4031 140, 139, 140, 219, 115, 172, 271, 271, 319, 115, 4032 120, 259, 120, 139, 115, 139, 140, 316, 120, 139, 4033 140, 140, 115, 119, 208, 117, 171, 137, 208, 210, 4034 115, 114, 356, 357, 379, 173, 117, 140, 155, 116, 4035 153, 155, 155, 121, 140, 90, 118, 117, 140, 115, 4036 139, 115, 117, 117, 117, 140, 115, 139, 139, 139, 4037 172, 172, 140, 117, 140, 140, 140, 140, 139, 139, 4038 171, 171, 117, 117, 140, 281, 235, 177, 177, 50, 4039 177, 139, 137, 137, 137, 177, 137, 177, 61, 62, 4040 63, 202, 203, 204, 137, 66, 137, 319, 119, 183, 4041 120, 137, 140, 140, 101, 276, 277, 115, 306, 121, 4042 137, 121, 137, 120, 304, 135, 146, 115, 115, 135, 4043 139, 120, 117, 86, 139, 153, 117, 116, 153, 116, 4044 153, 117, 271, 117, 271, 271, 271, 140, 140, 117, 4045 117, 115, 115, 117, 121, 101, 270, 101, 140, 117, 4046 115, 115, 114, 115, 178, 199, 220, 137, 115, 114, 4047 114, 181, 204, 61, 62, 172, 179, 150, 115, 115, 4048 119, 139, 139, 305, 146, 211, 114, 137, 211, 271, 4049 152, 139, 139, 140, 140, 140, 140, 117, 117, 139, 4050 140, 117, 179, 47, 48, 119, 189, 190, 191, 177, 4051 179, 140, 115, 178, 119, 191, 101, 139, 101, 139, 4052 114, 114, 137, 120, 139, 279, 316, 120, 121, 135, 4053 171, 115, 140, 140, 152, 152, 115, 115, 115, 115, 4054 274, 45, 171, 187, 188, 317, 135, 139, 179, 189, 4055 115, 137, 179, 137, 139, 115, 139, 115, 139, 101, 4056 139, 101, 139, 137, 305, 146, 144, 212, 115, 137, 4057 115, 117, 140, 140, 179, 101, 121, 135, 140, 213, 4058 214, 220, 137, 178, 178, 213, 181, 205, 233, 373, 4059 181, 205, 115, 139, 115, 139, 120, 115, 121, 117, 4060 117, 171, 187, 190, 192, 193, 139, 137, 190, 194, 4061 195, 140, 114, 157, 316, 364, 144, 140, 181, 205, 4062 181, 205, 114, 137, 144, 179, 184, 120, 190, 220, 4063 178, 59, 184, 197, 120, 190, 115, 235, 115, 140, 4064 140, 299, 179, 184, 137, 196, 197, 184, 197, 181, 4065 181, 115, 115, 115, 196, 140, 140, 181, 181, 140, 4066 140 3943 34, 35, 38, 41, 42, 66, 69, 71, 73, 74, 3944 76, 77, 78, 87, 88, 113, 115, 121, 122, 141, 3945 144, 156, 205, 219, 220, 221, 222, 223, 224, 225, 3946 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 3947 236, 238, 239, 240, 241, 242, 243, 244, 246, 247, 3948 248, 249, 250, 251, 253, 261, 262, 289, 290, 291, 3949 299, 302, 308, 309, 311, 313, 314, 320, 325, 329, 3950 330, 331, 332, 333, 334, 335, 336, 356, 373, 374, 3951 375, 376, 74, 143, 144, 156, 222, 224, 232, 234, 3952 243, 247, 249, 290, 83, 113, 318, 319, 320, 318, 3953 318, 74, 76, 77, 78, 142, 143, 279, 280, 300, 3954 301, 76, 77, 280, 113, 311, 11, 206, 113, 156, 3955 325, 330, 331, 332, 334, 335, 336, 116, 138, 225, 3956 232, 234, 329, 333, 372, 373, 376, 377, 139, 111, 3957 135, 283, 118, 139, 180, 76, 77, 141, 278, 139, 3958 139, 139, 120, 139, 76, 77, 113, 156, 315, 324, 3959 325, 326, 327, 328, 329, 333, 337, 338, 339, 340, 3960 341, 347, 3, 30, 80, 245, 3, 5, 76, 115, 3961 156, 224, 235, 239, 241, 250, 291, 329, 333, 376, 3962 222, 224, 234, 243, 247, 249, 290, 329, 333, 35, 3963 240, 240, 235, 241, 139, 240, 235, 240, 235, 77, 3964 113, 118, 280, 291, 118, 280, 240, 235, 120, 139, 3965 139, 0, 138, 113, 180, 318, 318, 138, 115, 232, 3966 234, 374, 278, 278, 135, 234, 113, 156, 315, 325, 3967 329, 115, 156, 376, 312, 237, 320, 113, 296, 113, 3968 113, 53, 113, 39, 40, 42, 68, 74, 78, 81, 3969 82, 83, 84, 85, 86, 90, 91, 113, 115, 123, 3970 124, 125, 126, 140, 144, 145, 146, 147, 148, 155, 3971 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 3972 166, 167, 168, 169, 171, 174, 232, 282, 298, 372, 3973 377, 234, 114, 114, 114, 114, 114, 114, 114, 115, 3974 232, 356, 374, 115, 121, 156, 171, 224, 225, 231, 3975 234, 238, 239, 243, 246, 247, 249, 268, 269, 273, 3976 274, 275, 276, 290, 356, 368, 369, 370, 371, 376, 3977 377, 113, 329, 333, 376, 113, 120, 136, 115, 118, 3978 156, 171, 284, 284, 119, 138, 120, 136, 113, 120, 3979 136, 120, 136, 120, 136, 318, 136, 325, 326, 327, 3980 328, 338, 339, 340, 341, 234, 324, 337, 66, 317, 3981 115, 318, 355, 356, 318, 318, 180, 138, 113, 318, 3982 355, 318, 318, 234, 315, 113, 113, 233, 234, 232, 3983 234, 138, 232, 372, 377, 180, 138, 278, 283, 224, 3984 239, 329, 333, 180, 138, 300, 234, 243, 136, 234, 3985 234, 298, 254, 252, 264, 280, 263, 234, 300, 136, 3986 136, 311, 138, 143, 277, 3, 139, 214, 215, 229, 3987 231, 234, 138, 317, 113, 317, 171, 325, 234, 113, 3988 138, 278, 118, 35, 36, 37, 232, 292, 293, 295, 3989 138, 132, 135, 297, 138, 235, 240, 241, 278, 321, 3990 322, 323, 113, 145, 113, 155, 113, 155, 158, 113, 3991 155, 113, 113, 155, 155, 115, 171, 176, 180, 232, 3992 281, 372, 376, 138, 83, 85, 89, 90, 91, 113, 3993 115, 117, 118, 101, 102, 103, 104, 105, 106, 107, 3994 108, 109, 110, 111, 135, 173, 158, 158, 121, 127, 3995 128, 123, 124, 92, 93, 94, 95, 129, 130, 96, 3996 97, 122, 131, 132, 98, 99, 133, 113, 156, 351, 3997 352, 353, 354, 355, 114, 120, 113, 355, 356, 113, 3998 355, 356, 138, 232, 374, 116, 138, 139, 232, 234, 3999 367, 368, 376, 377, 139, 113, 115, 156, 325, 342, 4000 343, 344, 345, 346, 347, 348, 349, 350, 356, 357, 4001 358, 359, 360, 361, 362, 156, 376, 234, 139, 139, 4002 156, 232, 234, 369, 278, 232, 356, 369, 278, 138, 4003 138, 138, 138, 74, 115, 117, 144, 280, 284, 285, 4004 286, 287, 288, 138, 138, 138, 138, 138, 138, 315, 4005 114, 114, 114, 114, 114, 114, 114, 324, 337, 113, 4006 283, 116, 214, 138, 315, 176, 282, 176, 282, 315, 4007 115, 214, 317, 180, 138, 214, 114, 42, 115, 119, 4008 232, 255, 256, 257, 372, 118, 120, 378, 135, 265, 4009 118, 234, 270, 271, 272, 275, 276, 114, 120, 180, 4010 138, 121, 171, 138, 231, 234, 269, 368, 376, 309, 4011 310, 113, 156, 342, 114, 120, 135, 379, 280, 292, 4012 113, 118, 280, 282, 292, 114, 120, 113, 145, 114, 4013 134, 281, 281, 281, 150, 171, 282, 281, 138, 114, 4014 120, 114, 113, 156, 355, 363, 364, 365, 366, 114, 4015 120, 171, 115, 143, 149, 150, 138, 115, 143, 149, 4016 171, 158, 158, 158, 159, 159, 160, 160, 161, 161, 4017 161, 161, 162, 162, 163, 164, 165, 166, 167, 134, 4018 176, 138, 352, 353, 354, 234, 351, 318, 318, 171, 4019 282, 138, 277, 232, 356, 369, 234, 238, 116, 376, 4020 116, 113, 138, 325, 343, 344, 345, 348, 358, 359, 4021 360, 116, 138, 234, 342, 346, 357, 113, 318, 361, 4022 379, 318, 318, 379, 113, 318, 361, 318, 318, 318, 4023 318, 356, 232, 367, 377, 278, 116, 120, 116, 120, 4024 379, 232, 369, 379, 266, 267, 268, 269, 266, 278, 4025 171, 138, 115, 280, 134, 120, 378, 284, 115, 134, 4026 288, 31, 216, 217, 278, 266, 143, 315, 143, 317, 4027 113, 355, 356, 113, 355, 356, 145, 356, 180, 270, 4028 114, 114, 114, 114, 138, 180, 214, 180, 118, 256, 4029 257, 138, 113, 134, 156, 258, 260, 324, 325, 337, 4030 363, 120, 136, 120, 136, 280, 254, 280, 119, 169, 4031 170, 264, 139, 139, 143, 229, 139, 139, 266, 113, 4032 156, 376, 139, 119, 234, 293, 171, 294, 139, 138, 4033 138, 113, 139, 114, 322, 176, 177, 134, 136, 115, 4034 145, 207, 208, 209, 114, 120, 114, 114, 114, 114, 4035 171, 364, 365, 366, 234, 363, 318, 318, 118, 158, 4036 171, 172, 175, 120, 138, 114, 120, 171, 138, 119, 4037 169, 134, 270, 114, 114, 114, 351, 270, 114, 232, 4038 369, 115, 121, 156, 171, 171, 234, 348, 270, 114, 4039 114, 114, 114, 114, 114, 114, 7, 234, 342, 346, 4040 357, 138, 138, 379, 138, 138, 139, 139, 139, 139, 4041 283, 169, 170, 171, 316, 138, 284, 286, 119, 138, 4042 218, 280, 42, 43, 45, 48, 49, 50, 51, 52, 4043 53, 54, 55, 59, 63, 64, 74, 131, 177, 178, 4044 179, 180, 181, 182, 184, 185, 197, 199, 200, 205, 4045 219, 314, 31, 139, 135, 283, 138, 138, 114, 139, 4046 180, 254, 136, 136, 325, 170, 234, 259, 260, 259, 4047 280, 318, 119, 265, 378, 114, 120, 116, 116, 139, 4048 234, 120, 379, 296, 114, 292, 222, 224, 232, 304, 4049 305, 306, 307, 298, 114, 114, 134, 170, 113, 114, 4050 134, 120, 143, 114, 114, 114, 363, 285, 120, 139, 4051 175, 81, 84, 86, 143, 151, 152, 153, 150, 139, 4052 151, 169, 139, 113, 355, 356, 139, 138, 139, 139, 4053 139, 171, 114, 139, 113, 355, 356, 113, 361, 113, 4054 361, 356, 233, 7, 121, 139, 171, 270, 270, 269, 4055 273, 273, 274, 114, 120, 120, 114, 100, 126, 139, 4056 139, 151, 284, 171, 120, 136, 219, 223, 234, 238, 4057 113, 113, 178, 113, 113, 74, 136, 74, 136, 74, 4058 121, 177, 113, 180, 172, 172, 134, 148, 136, 139, 4059 138, 139, 218, 114, 171, 270, 270, 318, 114, 119, 4060 258, 119, 138, 114, 138, 139, 315, 119, 138, 139, 4061 139, 114, 118, 207, 116, 170, 136, 207, 209, 114, 4062 113, 355, 356, 378, 172, 116, 139, 154, 115, 152, 4063 154, 154, 120, 139, 89, 117, 116, 139, 114, 138, 4064 114, 116, 116, 116, 139, 114, 138, 138, 138, 171, 4065 171, 139, 116, 139, 139, 139, 139, 138, 138, 170, 4066 170, 116, 116, 139, 280, 234, 176, 176, 49, 176, 4067 138, 136, 136, 136, 176, 136, 176, 60, 61, 62, 4068 201, 202, 203, 136, 65, 136, 318, 118, 182, 119, 4069 136, 139, 139, 100, 275, 276, 114, 305, 120, 136, 4070 120, 136, 119, 303, 134, 145, 114, 114, 134, 138, 4071 119, 116, 85, 138, 152, 116, 115, 152, 115, 152, 4072 116, 270, 116, 270, 270, 270, 139, 139, 116, 116, 4073 114, 114, 116, 120, 100, 269, 100, 139, 116, 114, 4074 114, 113, 114, 177, 198, 219, 136, 114, 113, 113, 4075 180, 203, 60, 61, 171, 178, 149, 114, 114, 118, 4076 138, 138, 304, 145, 210, 113, 136, 210, 270, 151, 4077 138, 138, 139, 139, 139, 139, 116, 116, 138, 139, 4078 116, 178, 46, 47, 118, 188, 189, 190, 176, 178, 4079 139, 114, 177, 118, 190, 100, 138, 100, 138, 113, 4080 113, 136, 119, 138, 278, 315, 119, 120, 134, 170, 4081 114, 139, 139, 151, 151, 114, 114, 114, 114, 273, 4082 44, 170, 186, 187, 316, 134, 138, 178, 188, 114, 4083 136, 178, 136, 138, 114, 138, 114, 138, 100, 138, 4084 100, 138, 136, 304, 145, 143, 211, 114, 136, 114, 4085 116, 139, 139, 178, 100, 120, 134, 139, 212, 213, 4086 219, 136, 177, 177, 212, 180, 204, 232, 372, 180, 4087 204, 114, 138, 114, 138, 119, 114, 120, 116, 116, 4088 170, 186, 189, 191, 192, 138, 136, 189, 193, 194, 4089 139, 113, 156, 315, 363, 143, 139, 180, 204, 180, 4090 204, 113, 136, 143, 178, 183, 119, 189, 219, 177, 4091 58, 183, 196, 119, 189, 114, 234, 114, 139, 139, 4092 298, 178, 183, 136, 195, 196, 183, 196, 180, 180, 4093 114, 114, 114, 195, 139, 139, 180, 180, 139, 139 4067 4094 }; 4068 4095 … … 7537 7564 /* Line 1806 of yacc.c */ 7538 7565 #line 1895 "parser.yy" 7566 { (yyval.tclass) = DeclarationNode::Ftype; } 7567 break; 7568 7569 case 494: 7570 7571 /* Line 1806 of yacc.c */ 7572 #line 1897 "parser.yy" 7539 7573 { (yyval.tclass) = DeclarationNode::Dtype; } 7540 7574 break; 7541 7575 7542 case 494:7543 7544 /* Line 1806 of yacc.c */7545 #line 1897 "parser.yy"7546 { (yyval.tclass) = DeclarationNode::Ftype; }7547 break;7548 7549 7576 case 495: 7550 7577 7551 7578 /* Line 1806 of yacc.c */ 7552 #line 1 899"parser.yy"7553 { (yyval. tclass) = DeclarationNode::Ttype; }7579 #line 1902 "parser.yy" 7580 { (yyval.decl) = nullptr; } 7554 7581 break; 7555 7582 … … 7558 7585 /* Line 1806 of yacc.c */ 7559 7586 #line 1904 "parser.yy" 7560 { (yyval.decl) = nullptr; }7587 { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7561 7588 break; 7562 7589 … … 7564 7591 7565 7592 /* Line 1806 of yacc.c */ 7566 #line 1906 "parser.yy" 7567 { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); } 7568 break; 7569 7570 case 498: 7571 7572 /* Line 1806 of yacc.c */ 7573 #line 1911 "parser.yy" 7593 #line 1909 "parser.yy" 7574 7594 { 7575 7595 typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) ); … … 7578 7598 break; 7579 7599 7600 case 498: 7601 7602 /* Line 1806 of yacc.c */ 7603 #line 1914 "parser.yy" 7604 { (yyval.decl) = (yyvsp[(4) - (5)].decl); } 7605 break; 7606 7580 7607 case 499: 7581 7608 7582 7609 /* Line 1806 of yacc.c */ 7583 7610 #line 1916 "parser.yy" 7584 { (yyval.decl) = (yyvsp[(4) - (5)].decl); }7611 { (yyval.decl) = nullptr; } 7585 7612 break; 7586 7613 … … 7588 7615 7589 7616 /* Line 1806 of yacc.c */ 7590 #line 1918 "parser.yy" 7591 { (yyval.decl) = nullptr; } 7592 break; 7593 7594 case 501: 7595 7596 /* Line 1806 of yacc.c */ 7597 #line 1923 "parser.yy" 7617 #line 1921 "parser.yy" 7598 7618 { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); } 7599 7619 break; 7600 7620 7621 case 502: 7622 7623 /* Line 1806 of yacc.c */ 7624 #line 1924 "parser.yy" 7625 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); } 7626 break; 7627 7601 7628 case 503: 7602 7629 7603 7630 /* Line 1806 of yacc.c */ 7604 7631 #line 1926 "parser.yy" 7605 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) )); }7632 { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); } 7606 7633 break; 7607 7634 … … 7609 7636 7610 7637 /* Line 1806 of yacc.c */ 7611 #line 19 28"parser.yy"7612 { (yyval. en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }7638 #line 1931 "parser.yy" 7639 { (yyval.decl) = (yyvsp[(2) - (2)].decl); } 7613 7640 break; 7614 7641 … … 7617 7644 /* Line 1806 of yacc.c */ 7618 7645 #line 1933 "parser.yy" 7619 { (yyval.decl) = (yyvsp[( 2) - (2)].decl); }7646 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); } 7620 7647 break; 7621 7648 … … 7624 7651 /* Line 1806 of yacc.c */ 7625 7652 #line 1935 "parser.yy" 7626 { (yyval.decl) = (yyvsp[( 3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }7653 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); } 7627 7654 break; 7628 7655 … … 7630 7657 7631 7658 /* Line 1806 of yacc.c */ 7632 #line 19 37"parser.yy"7633 { (yyval.decl) = (yyvsp[(1) - ( 3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl)) ); }7659 #line 1940 "parser.yy" 7660 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); } 7634 7661 break; 7635 7662 … … 7638 7665 /* Line 1806 of yacc.c */ 7639 7666 #line 1942 "parser.yy" 7640 { (yyval.decl) = (yyvsp[(1) - ( 2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }7667 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7641 7668 break; 7642 7669 … … 7644 7671 7645 7672 /* Line 1806 of yacc.c */ 7646 #line 1944 "parser.yy" 7647 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); } 7648 break; 7649 7650 case 510: 7651 7652 /* Line 1806 of yacc.c */ 7653 #line 1949 "parser.yy" 7673 #line 1947 "parser.yy" 7654 7674 { 7655 7675 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD ); … … 7658 7678 break; 7659 7679 7660 case 51 1:7661 7662 /* Line 1806 of yacc.c */ 7663 #line 195 4"parser.yy"7680 case 510: 7681 7682 /* Line 1806 of yacc.c */ 7683 #line 1952 "parser.yy" 7664 7684 { 7665 7685 typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG ); … … 7668 7688 break; 7669 7689 7670 case 51 2:7671 7672 /* Line 1806 of yacc.c */ 7673 #line 196 2"parser.yy"7690 case 511: 7691 7692 /* Line 1806 of yacc.c */ 7693 #line 1960 "parser.yy" 7674 7694 { 7675 7695 typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID ); … … 7678 7698 break; 7679 7699 7680 case 51 3:7681 7682 /* Line 1806 of yacc.c */ 7683 #line 196 7"parser.yy"7700 case 512: 7701 7702 /* Line 1806 of yacc.c */ 7703 #line 1965 "parser.yy" 7684 7704 { 7685 7705 typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) ); … … 7688 7708 break; 7689 7709 7690 case 51 4:7691 7692 /* Line 1806 of yacc.c */ 7693 #line 197 2"parser.yy"7710 case 513: 7711 7712 /* Line 1806 of yacc.c */ 7713 #line 1970 "parser.yy" 7694 7714 { 7695 7715 typedefTable.leaveTrait(); … … 7699 7719 break; 7700 7720 7701 case 51 6:7702 7703 /* Line 1806 of yacc.c */ 7704 #line 198 2"parser.yy"7721 case 515: 7722 7723 /* Line 1806 of yacc.c */ 7724 #line 1980 "parser.yy" 7705 7725 { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); } 7706 7726 break; 7707 7727 7708 case 51 9:7709 7710 /* Line 1806 of yacc.c */ 7711 #line 199 2"parser.yy"7728 case 518: 7729 7730 /* Line 1806 of yacc.c */ 7731 #line 1990 "parser.yy" 7712 7732 { 7713 7733 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7716 7736 break; 7717 7737 7718 case 5 20:7719 7720 /* Line 1806 of yacc.c */ 7721 #line 199 7"parser.yy"7738 case 519: 7739 7740 /* Line 1806 of yacc.c */ 7741 #line 1995 "parser.yy" 7722 7742 { 7723 7743 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7726 7746 break; 7727 7747 7728 case 52 1:7729 7730 /* Line 1806 of yacc.c */ 7731 #line 200 2"parser.yy"7748 case 520: 7749 7750 /* Line 1806 of yacc.c */ 7751 #line 2000 "parser.yy" 7732 7752 { 7733 7753 typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID ); … … 7736 7756 break; 7737 7757 7738 case 52 2:7739 7740 /* Line 1806 of yacc.c */ 7741 #line 20 10"parser.yy"7758 case 521: 7759 7760 /* Line 1806 of yacc.c */ 7761 #line 2008 "parser.yy" 7742 7762 { 7743 7763 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7746 7766 break; 7747 7767 7748 case 52 3:7749 7750 /* Line 1806 of yacc.c */ 7751 #line 201 5"parser.yy"7768 case 522: 7769 7770 /* Line 1806 of yacc.c */ 7771 #line 2013 "parser.yy" 7752 7772 { 7753 7773 typedefTable.addToEnclosingScope2( TypedefTable::ID ); … … 7756 7776 break; 7757 7777 7778 case 523: 7779 7780 /* Line 1806 of yacc.c */ 7781 #line 2023 "parser.yy" 7782 {} 7783 break; 7784 7758 7785 case 524: 7759 7786 7760 7787 /* Line 1806 of yacc.c */ 7761 7788 #line 2025 "parser.yy" 7789 { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl); } 7790 break; 7791 7792 case 526: 7793 7794 /* Line 1806 of yacc.c */ 7795 #line 2031 "parser.yy" 7796 { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); } 7797 break; 7798 7799 case 527: 7800 7801 /* Line 1806 of yacc.c */ 7802 #line 2036 "parser.yy" 7803 { (yyval.decl) = nullptr; } 7804 break; 7805 7806 case 531: 7807 7808 /* Line 1806 of yacc.c */ 7809 #line 2044 "parser.yy" 7762 7810 {} 7763 7811 break; 7764 7812 7765 case 525:7766 7767 /* Line 1806 of yacc.c */7768 #line 2027 "parser.yy"7769 { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl); }7770 break;7771 7772 case 527:7773 7774 /* Line 1806 of yacc.c */7775 #line 2033 "parser.yy"7776 { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }7777 break;7778 7779 case 528:7780 7781 /* Line 1806 of yacc.c */7782 #line 2038 "parser.yy"7783 { (yyval.decl) = nullptr; }7784 break;7785 7786 7813 case 532: 7787 7814 7788 7815 /* Line 1806 of yacc.c */ 7789 7816 #line 2046 "parser.yy" 7790 {}7791 break;7792 7793 case 533:7794 7795 /* Line 1806 of yacc.c */7796 #line 2048 "parser.yy"7797 7817 { 7798 7818 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" … … 7801 7821 break; 7802 7822 7803 case 53 4:7804 7805 /* Line 1806 of yacc.c */ 7806 #line 205 3"parser.yy"7823 case 533: 7824 7825 /* Line 1806 of yacc.c */ 7826 #line 2051 "parser.yy" 7807 7827 { 7808 7828 linkage = linkageStack.top(); … … 7812 7832 break; 7813 7833 7814 case 53 5:7815 7816 /* Line 1806 of yacc.c */ 7817 #line 205 9"parser.yy"7834 case 534: 7835 7836 /* Line 1806 of yacc.c */ 7837 #line 2057 "parser.yy" 7818 7838 { // mark all fields in list 7819 7839 for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() ) … … 7823 7843 break; 7824 7844 7825 case 53 7:7826 7827 /* Line 1806 of yacc.c */ 7828 #line 207 4"parser.yy"7845 case 536: 7846 7847 /* Line 1806 of yacc.c */ 7848 #line 2072 "parser.yy" 7829 7849 { 7830 7850 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7834 7854 break; 7835 7855 7836 case 53 8:7837 7838 /* Line 1806 of yacc.c */ 7839 #line 20 80"parser.yy"7856 case 537: 7857 7858 /* Line 1806 of yacc.c */ 7859 #line 2078 "parser.yy" 7840 7860 { 7841 7861 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7845 7865 break; 7846 7866 7847 case 53 9:7848 7849 /* Line 1806 of yacc.c */ 7850 #line 208 9"parser.yy"7867 case 538: 7868 7869 /* Line 1806 of yacc.c */ 7870 #line 2087 "parser.yy" 7851 7871 { 7852 7872 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7856 7876 break; 7857 7877 7858 case 5 40:7859 7860 /* Line 1806 of yacc.c */ 7861 #line 209 5"parser.yy"7878 case 539: 7879 7880 /* Line 1806 of yacc.c */ 7881 #line 2093 "parser.yy" 7862 7882 { 7863 7883 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7867 7887 break; 7868 7888 7869 case 54 1:7870 7871 /* Line 1806 of yacc.c */ 7872 #line 2 101"parser.yy"7889 case 540: 7890 7891 /* Line 1806 of yacc.c */ 7892 #line 2099 "parser.yy" 7873 7893 { 7874 7894 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7878 7898 break; 7879 7899 7880 case 54 2:7881 7882 /* Line 1806 of yacc.c */ 7883 #line 210 7"parser.yy"7900 case 541: 7901 7902 /* Line 1806 of yacc.c */ 7903 #line 2105 "parser.yy" 7884 7904 { 7885 7905 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7889 7909 break; 7890 7910 7891 case 54 3:7892 7893 /* Line 1806 of yacc.c */ 7894 #line 211 3"parser.yy"7911 case 542: 7912 7913 /* Line 1806 of yacc.c */ 7914 #line 2111 "parser.yy" 7895 7915 { 7896 7916 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7900 7920 break; 7901 7921 7902 case 54 4:7903 7904 /* Line 1806 of yacc.c */ 7905 #line 21 21"parser.yy"7922 case 543: 7923 7924 /* Line 1806 of yacc.c */ 7925 #line 2119 "parser.yy" 7906 7926 { 7907 7927 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7911 7931 break; 7912 7932 7913 case 54 5:7914 7915 /* Line 1806 of yacc.c */ 7916 #line 212 7"parser.yy"7933 case 544: 7934 7935 /* Line 1806 of yacc.c */ 7936 #line 2125 "parser.yy" 7917 7937 { 7918 7938 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7922 7942 break; 7923 7943 7924 case 54 6:7925 7926 /* Line 1806 of yacc.c */ 7927 #line 213 5"parser.yy"7944 case 545: 7945 7946 /* Line 1806 of yacc.c */ 7947 #line 2133 "parser.yy" 7928 7948 { 7929 7949 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7933 7953 break; 7934 7954 7935 case 54 7:7936 7937 /* Line 1806 of yacc.c */ 7938 #line 21 41"parser.yy"7955 case 546: 7956 7957 /* Line 1806 of yacc.c */ 7958 #line 2139 "parser.yy" 7939 7959 { 7940 7960 typedefTable.addToEnclosingScope( TypedefTable::ID ); … … 7944 7964 break; 7945 7965 7966 case 550: 7967 7968 /* Line 1806 of yacc.c */ 7969 #line 2154 "parser.yy" 7970 { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); } 7971 break; 7972 7946 7973 case 551: 7947 7974 7948 7975 /* Line 1806 of yacc.c */ 7949 #line 215 6"parser.yy"7950 { (yyval. en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }7976 #line 2159 "parser.yy" 7977 { (yyval.constant) = nullptr; } 7951 7978 break; 7952 7979 … … 7955 7982 /* Line 1806 of yacc.c */ 7956 7983 #line 2161 "parser.yy" 7957 { (yyval.constant) = nullptr; }7984 { (yyval.constant) = (yyvsp[(3) - (5)].constant); } 7958 7985 break; 7959 7986 … … 7961 7988 7962 7989 /* Line 1806 of yacc.c */ 7963 #line 2163 "parser.yy" 7964 { (yyval.constant) = (yyvsp[(3) - (5)].constant); } 7965 break; 7966 7967 case 554: 7968 7969 /* Line 1806 of yacc.c */ 7970 #line 2168 "parser.yy" 7990 #line 2166 "parser.yy" 7971 7991 { (yyval.decl) = nullptr; } 7972 7992 break; 7973 7993 7994 case 556: 7995 7996 /* Line 1806 of yacc.c */ 7997 #line 2173 "parser.yy" 7998 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7999 break; 8000 7974 8001 case 557: 7975 8002 7976 8003 /* Line 1806 of yacc.c */ 7977 #line 2175 "parser.yy" 7978 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 7979 break; 7980 7981 case 558: 7982 7983 /* Line 1806 of yacc.c */ 7984 #line 2181 "parser.yy" 8004 #line 2179 "parser.yy" 7985 8005 { (yyval.decl) = nullptr; } 7986 8006 break; 7987 8007 8008 case 562: 8009 8010 /* Line 1806 of yacc.c */ 8011 #line 2190 "parser.yy" 8012 { delete (yyvsp[(3) - (4)].en); } 8013 break; 8014 7988 8015 case 563: 7989 8016 7990 8017 /* Line 1806 of yacc.c */ 7991 #line 219 2"parser.yy"7992 { delete (yyvsp[( 3) - (4)].en); }8018 #line 2194 "parser.yy" 8019 { delete (yyvsp[(1) - (1)].tok); } 7993 8020 break; 7994 8021 … … 7996 8023 7997 8024 /* Line 1806 of yacc.c */ 8025 #line 2195 "parser.yy" 8026 { delete (yyvsp[(1) - (1)].decl); } 8027 break; 8028 8029 case 565: 8030 8031 /* Line 1806 of yacc.c */ 7998 8032 #line 2196 "parser.yy" 7999 { delete (yyvsp[(1) - (1)]. tok); }8000 break; 8001 8002 case 56 5:8033 { delete (yyvsp[(1) - (1)].decl); } 8034 break; 8035 8036 case 566: 8003 8037 8004 8038 /* Line 1806 of yacc.c */ … … 8007 8041 break; 8008 8042 8009 case 566:8010 8011 /* Line 1806 of yacc.c */8012 #line 2198 "parser.yy"8013 { delete (yyvsp[(1) - (1)].decl); }8014 break;8015 8016 8043 case 567: 8017 8044 8018 8045 /* Line 1806 of yacc.c */ 8019 #line 2 199"parser.yy"8020 { delete (yyvsp[(1) - (1)].decl); }8021 break; 8022 8023 case 56 8:8024 8025 /* Line 1806 of yacc.c */ 8026 #line 223 4"parser.yy"8046 #line 2232 "parser.yy" 8047 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8048 break; 8049 8050 case 569: 8051 8052 /* Line 1806 of yacc.c */ 8053 #line 2235 "parser.yy" 8027 8054 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8028 8055 break; … … 8038 8065 8039 8066 /* Line 1806 of yacc.c */ 8040 #line 2239 "parser.yy" 8041 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8042 break; 8043 8044 case 572: 8045 8046 /* Line 1806 of yacc.c */ 8047 #line 2244 "parser.yy" 8067 #line 2242 "parser.yy" 8048 8068 { 8049 8069 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8052 8072 break; 8053 8073 8074 case 572: 8075 8076 /* Line 1806 of yacc.c */ 8077 #line 2247 "parser.yy" 8078 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8079 break; 8080 8054 8081 case 573: 8055 8082 8056 8083 /* Line 1806 of yacc.c */ 8057 #line 2249 "parser.yy" 8084 #line 2252 "parser.yy" 8085 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8086 break; 8087 8088 case 574: 8089 8090 /* Line 1806 of yacc.c */ 8091 #line 2254 "parser.yy" 8092 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8093 break; 8094 8095 case 575: 8096 8097 /* Line 1806 of yacc.c */ 8098 #line 2256 "parser.yy" 8058 8099 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8059 8100 break; 8060 8101 8061 case 574:8062 8063 /* Line 1806 of yacc.c */8064 #line 2254 "parser.yy"8065 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8066 break;8067 8068 case 575:8069 8070 /* Line 1806 of yacc.c */8071 #line 2256 "parser.yy"8072 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8073 break;8074 8075 8102 case 576: 8076 8103 8077 8104 /* Line 1806 of yacc.c */ 8078 #line 22 58"parser.yy"8079 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8105 #line 2261 "parser.yy" 8106 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8080 8107 break; 8081 8108 … … 8084 8111 /* Line 1806 of yacc.c */ 8085 8112 #line 2263 "parser.yy" 8086 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8113 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8087 8114 break; 8088 8115 … … 8098 8125 /* Line 1806 of yacc.c */ 8099 8126 #line 2267 "parser.yy" 8127 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8128 break; 8129 8130 case 580: 8131 8132 /* Line 1806 of yacc.c */ 8133 #line 2272 "parser.yy" 8134 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8135 break; 8136 8137 case 581: 8138 8139 /* Line 1806 of yacc.c */ 8140 #line 2274 "parser.yy" 8141 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8142 break; 8143 8144 case 582: 8145 8146 /* Line 1806 of yacc.c */ 8147 #line 2283 "parser.yy" 8148 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8149 break; 8150 8151 case 584: 8152 8153 /* Line 1806 of yacc.c */ 8154 #line 2286 "parser.yy" 8155 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8156 break; 8157 8158 case 585: 8159 8160 /* Line 1806 of yacc.c */ 8161 #line 2291 "parser.yy" 8162 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8163 break; 8164 8165 case 586: 8166 8167 /* Line 1806 of yacc.c */ 8168 #line 2293 "parser.yy" 8169 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8170 break; 8171 8172 case 587: 8173 8174 /* Line 1806 of yacc.c */ 8175 #line 2295 "parser.yy" 8176 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8177 break; 8178 8179 case 588: 8180 8181 /* Line 1806 of yacc.c */ 8182 #line 2300 "parser.yy" 8183 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8184 break; 8185 8186 case 589: 8187 8188 /* Line 1806 of yacc.c */ 8189 #line 2302 "parser.yy" 8190 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8191 break; 8192 8193 case 590: 8194 8195 /* Line 1806 of yacc.c */ 8196 #line 2304 "parser.yy" 8197 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8198 break; 8199 8200 case 591: 8201 8202 /* Line 1806 of yacc.c */ 8203 #line 2309 "parser.yy" 8100 8204 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8101 break;8102 8103 case 580:8104 8105 /* Line 1806 of yacc.c */8106 #line 2269 "parser.yy"8107 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8108 break;8109 8110 case 581:8111 8112 /* Line 1806 of yacc.c */8113 #line 2274 "parser.yy"8114 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8115 break;8116 8117 case 582:8118 8119 /* Line 1806 of yacc.c */8120 #line 2276 "parser.yy"8121 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8122 break;8123 8124 case 583:8125 8126 /* Line 1806 of yacc.c */8127 #line 2285 "parser.yy"8128 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8129 break;8130 8131 case 585:8132 8133 /* Line 1806 of yacc.c */8134 #line 2288 "parser.yy"8135 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8136 break;8137 8138 case 586:8139 8140 /* Line 1806 of yacc.c */8141 #line 2293 "parser.yy"8142 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8143 break;8144 8145 case 587:8146 8147 /* Line 1806 of yacc.c */8148 #line 2295 "parser.yy"8149 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8150 break;8151 8152 case 588:8153 8154 /* Line 1806 of yacc.c */8155 #line 2297 "parser.yy"8156 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8157 break;8158 8159 case 589:8160 8161 /* Line 1806 of yacc.c */8162 #line 2302 "parser.yy"8163 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8164 break;8165 8166 case 590:8167 8168 /* Line 1806 of yacc.c */8169 #line 2304 "parser.yy"8170 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8171 break;8172 8173 case 591:8174 8175 /* Line 1806 of yacc.c */8176 #line 2306 "parser.yy"8177 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8178 8205 break; 8179 8206 … … 8189 8216 /* Line 1806 of yacc.c */ 8190 8217 #line 2313 "parser.yy" 8218 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8219 break; 8220 8221 case 597: 8222 8223 /* Line 1806 of yacc.c */ 8224 #line 2328 "parser.yy" 8225 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); } 8226 break; 8227 8228 case 598: 8229 8230 /* Line 1806 of yacc.c */ 8231 #line 2330 "parser.yy" 8232 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); } 8233 break; 8234 8235 case 599: 8236 8237 /* Line 1806 of yacc.c */ 8238 #line 2332 "parser.yy" 8239 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8240 break; 8241 8242 case 600: 8243 8244 /* Line 1806 of yacc.c */ 8245 #line 2337 "parser.yy" 8246 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8247 break; 8248 8249 case 601: 8250 8251 /* Line 1806 of yacc.c */ 8252 #line 2339 "parser.yy" 8253 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8254 break; 8255 8256 case 602: 8257 8258 /* Line 1806 of yacc.c */ 8259 #line 2341 "parser.yy" 8260 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8261 break; 8262 8263 case 603: 8264 8265 /* Line 1806 of yacc.c */ 8266 #line 2346 "parser.yy" 8191 8267 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8192 break;8193 8194 case 594:8195 8196 /* Line 1806 of yacc.c */8197 #line 2315 "parser.yy"8198 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8199 break;8200 8201 case 598:8202 8203 /* Line 1806 of yacc.c */8204 #line 2330 "parser.yy"8205 { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }8206 break;8207 8208 case 599:8209 8210 /* Line 1806 of yacc.c */8211 #line 2332 "parser.yy"8212 { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }8213 break;8214 8215 case 600:8216 8217 /* Line 1806 of yacc.c */8218 #line 2334 "parser.yy"8219 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8220 break;8221 8222 case 601:8223 8224 /* Line 1806 of yacc.c */8225 #line 2339 "parser.yy"8226 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8227 break;8228 8229 case 602:8230 8231 /* Line 1806 of yacc.c */8232 #line 2341 "parser.yy"8233 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8234 break;8235 8236 case 603:8237 8238 /* Line 1806 of yacc.c */8239 #line 2343 "parser.yy"8240 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8241 8268 break; 8242 8269 … … 8252 8279 /* Line 1806 of yacc.c */ 8253 8280 #line 2350 "parser.yy" 8254 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8281 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8255 8282 break; 8256 8283 … … 8258 8285 8259 8286 /* Line 1806 of yacc.c */ 8260 #line 23 52"parser.yy"8261 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8262 break; 8263 8264 case 60 7:8265 8266 /* Line 1806 of yacc.c */ 8267 #line 236 7"parser.yy"8287 #line 2365 "parser.yy" 8288 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8289 break; 8290 8291 case 608: 8292 8293 /* Line 1806 of yacc.c */ 8294 #line 2368 "parser.yy" 8268 8295 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8269 8296 break; … … 8276 8303 break; 8277 8304 8278 case 61 0:8279 8280 /* Line 1806 of yacc.c */ 8281 #line 237 2"parser.yy"8282 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8305 case 611: 8306 8307 /* Line 1806 of yacc.c */ 8308 #line 2376 "parser.yy" 8309 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8283 8310 break; 8284 8311 … … 8286 8313 8287 8314 /* Line 1806 of yacc.c */ 8288 #line 2378 "parser.yy" 8315 #line 2381 "parser.yy" 8316 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8317 break; 8318 8319 case 613: 8320 8321 /* Line 1806 of yacc.c */ 8322 #line 2383 "parser.yy" 8323 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8324 break; 8325 8326 case 614: 8327 8328 /* Line 1806 of yacc.c */ 8329 #line 2385 "parser.yy" 8289 8330 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8290 8331 break; 8291 8332 8292 case 613:8293 8294 /* Line 1806 of yacc.c */8295 #line 2383 "parser.yy"8296 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }8297 break;8298 8299 case 614:8300 8301 /* Line 1806 of yacc.c */8302 #line 2385 "parser.yy"8303 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8304 break;8305 8306 8333 case 615: 8307 8334 8308 8335 /* Line 1806 of yacc.c */ 8309 #line 23 87"parser.yy"8310 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8336 #line 2390 "parser.yy" 8337 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8311 8338 break; 8312 8339 … … 8315 8342 /* Line 1806 of yacc.c */ 8316 8343 #line 2392 "parser.yy" 8317 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8344 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8318 8345 break; 8319 8346 … … 8329 8356 /* Line 1806 of yacc.c */ 8330 8357 #line 2396 "parser.yy" 8331 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8358 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8332 8359 break; 8333 8360 … … 8335 8362 8336 8363 /* Line 1806 of yacc.c */ 8337 #line 2398 "parser.yy" 8364 #line 2401 "parser.yy" 8365 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8366 break; 8367 8368 case 620: 8369 8370 /* Line 1806 of yacc.c */ 8371 #line 2403 "parser.yy" 8372 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8373 break; 8374 8375 case 621: 8376 8377 /* Line 1806 of yacc.c */ 8378 #line 2405 "parser.yy" 8338 8379 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8339 8380 break; 8340 8381 8341 case 620:8342 8343 /* Line 1806 of yacc.c */8344 #line 2403 "parser.yy"8345 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8346 break;8347 8348 case 621:8349 8350 /* Line 1806 of yacc.c */8351 #line 2405 "parser.yy"8352 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8353 break;8354 8355 8382 case 622: 8356 8383 8357 8384 /* Line 1806 of yacc.c */ 8358 #line 24 07"parser.yy"8359 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8360 break; 8361 8362 case 62 3:8363 8364 /* Line 1806 of yacc.c */ 8365 #line 241 7"parser.yy"8385 #line 2415 "parser.yy" 8386 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8387 break; 8388 8389 case 624: 8390 8391 /* Line 1806 of yacc.c */ 8392 #line 2418 "parser.yy" 8366 8393 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8367 8394 break; … … 8377 8404 8378 8405 /* Line 1806 of yacc.c */ 8379 #line 242 2"parser.yy"8380 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }8406 #line 2425 "parser.yy" 8407 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8381 8408 break; 8382 8409 … … 8385 8412 /* Line 1806 of yacc.c */ 8386 8413 #line 2427 "parser.yy" 8387 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0) ); }8414 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8388 8415 break; 8389 8416 … … 8392 8419 /* Line 1806 of yacc.c */ 8393 8420 #line 2429 "parser.yy" 8394 { (yyval.decl) = (yyvsp[( 3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) )); }8421 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8395 8422 break; 8396 8423 … … 8398 8425 8399 8426 /* Line 1806 of yacc.c */ 8400 #line 243 1"parser.yy"8401 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8427 #line 2434 "parser.yy" 8428 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8402 8429 break; 8403 8430 … … 8406 8433 /* Line 1806 of yacc.c */ 8407 8434 #line 2436 "parser.yy" 8408 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8435 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8409 8436 break; 8410 8437 … … 8420 8447 /* Line 1806 of yacc.c */ 8421 8448 #line 2440 "parser.yy" 8422 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8449 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8423 8450 break; 8424 8451 … … 8426 8453 8427 8454 /* Line 1806 of yacc.c */ 8428 #line 2442 "parser.yy" 8455 #line 2445 "parser.yy" 8456 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8457 break; 8458 8459 case 634: 8460 8461 /* Line 1806 of yacc.c */ 8462 #line 2447 "parser.yy" 8463 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8464 break; 8465 8466 case 635: 8467 8468 /* Line 1806 of yacc.c */ 8469 #line 2449 "parser.yy" 8429 8470 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8430 8471 break; 8431 8472 8432 case 634:8433 8434 /* Line 1806 of yacc.c */8435 #line 2447 "parser.yy"8436 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8437 break;8438 8439 case 635:8440 8441 /* Line 1806 of yacc.c */8442 #line 2449 "parser.yy"8443 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8444 break;8445 8446 8473 case 636: 8447 8474 8448 8475 /* Line 1806 of yacc.c */ 8449 #line 24 51"parser.yy"8450 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8451 break; 8452 8453 case 63 7:8454 8455 /* Line 1806 of yacc.c */ 8456 #line 248 2"parser.yy"8476 #line 2480 "parser.yy" 8477 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8478 break; 8479 8480 case 638: 8481 8482 /* Line 1806 of yacc.c */ 8483 #line 2483 "parser.yy" 8457 8484 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8458 8485 break; … … 8468 8495 8469 8496 /* Line 1806 of yacc.c */ 8470 #line 2487 "parser.yy" 8471 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8472 break; 8473 8474 case 641: 8475 8476 /* Line 1806 of yacc.c */ 8477 #line 2492 "parser.yy" 8497 #line 2490 "parser.yy" 8478 8498 { 8479 8499 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8482 8502 break; 8483 8503 8484 case 64 2:8485 8486 /* Line 1806 of yacc.c */ 8487 #line 249 7"parser.yy"8504 case 641: 8505 8506 /* Line 1806 of yacc.c */ 8507 #line 2495 "parser.yy" 8488 8508 { 8489 8509 typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) ); … … 8492 8512 break; 8493 8513 8514 case 642: 8515 8516 /* Line 1806 of yacc.c */ 8517 #line 2503 "parser.yy" 8518 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8519 break; 8520 8494 8521 case 643: 8495 8522 8496 8523 /* Line 1806 of yacc.c */ 8497 8524 #line 2505 "parser.yy" 8498 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0) ); }8525 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8499 8526 break; 8500 8527 … … 8503 8530 /* Line 1806 of yacc.c */ 8504 8531 #line 2507 "parser.yy" 8505 { (yyval.decl) = (yyvsp[( 3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) )); }8532 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8506 8533 break; 8507 8534 … … 8509 8536 8510 8537 /* Line 1806 of yacc.c */ 8511 #line 25 09"parser.yy"8512 { (yyval.decl) = (yyvsp[( 2) - (3)].decl); }8538 #line 2512 "parser.yy" 8539 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8513 8540 break; 8514 8541 … … 8517 8544 /* Line 1806 of yacc.c */ 8518 8545 #line 2514 "parser.yy" 8519 { (yyval.decl) = (yyvsp[( 1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }8546 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8520 8547 break; 8521 8548 … … 8523 8550 8524 8551 /* Line 1806 of yacc.c */ 8525 #line 251 6"parser.yy"8526 { (yyval.decl) = (yyvsp[( 2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }8552 #line 2519 "parser.yy" 8553 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); } 8527 8554 break; 8528 8555 … … 8531 8558 /* Line 1806 of yacc.c */ 8532 8559 #line 2521 "parser.yy" 8533 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }8534 break;8535 8536 case 649:8537 8538 /* Line 1806 of yacc.c */8539 #line 2523 "parser.yy"8540 8560 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8561 break; 8562 8563 case 650: 8564 8565 /* Line 1806 of yacc.c */ 8566 #line 2536 "parser.yy" 8567 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8541 8568 break; 8542 8569 … … 8551 8578 8552 8579 /* Line 1806 of yacc.c */ 8553 #line 254 0"parser.yy"8554 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8580 #line 2543 "parser.yy" 8581 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8555 8582 break; 8556 8583 … … 8559 8586 /* Line 1806 of yacc.c */ 8560 8587 #line 2545 "parser.yy" 8561 { (yyval.decl) = DeclarationNode::newPointer( 0); }8588 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8562 8589 break; 8563 8590 … … 8566 8593 /* Line 1806 of yacc.c */ 8567 8594 #line 2547 "parser.yy" 8568 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }8595 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8569 8596 break; 8570 8597 … … 8573 8600 /* Line 1806 of yacc.c */ 8574 8601 #line 2549 "parser.yy" 8575 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0) ); }8602 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8576 8603 break; 8577 8604 … … 8580 8607 /* Line 1806 of yacc.c */ 8581 8608 #line 2551 "parser.yy" 8582 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8583 break;8584 8585 case 657:8586 8587 /* Line 1806 of yacc.c */8588 #line 2553 "parser.yy"8589 8609 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8610 break; 8611 8612 case 658: 8613 8614 /* Line 1806 of yacc.c */ 8615 #line 2557 "parser.yy" 8616 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8590 8617 break; 8591 8618 … … 8601 8628 /* Line 1806 of yacc.c */ 8602 8629 #line 2561 "parser.yy" 8603 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8630 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8604 8631 break; 8605 8632 … … 8607 8634 8608 8635 /* Line 1806 of yacc.c */ 8609 #line 2563 "parser.yy" 8636 #line 2566 "parser.yy" 8637 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); } 8638 break; 8639 8640 case 662: 8641 8642 /* Line 1806 of yacc.c */ 8643 #line 2568 "parser.yy" 8644 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8645 break; 8646 8647 case 663: 8648 8649 /* Line 1806 of yacc.c */ 8650 #line 2570 "parser.yy" 8610 8651 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8611 8652 break; 8612 8653 8613 case 662:8614 8615 /* Line 1806 of yacc.c */8616 #line 2568 "parser.yy"8617 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }8618 break;8619 8620 case 663:8621 8622 /* Line 1806 of yacc.c */8623 #line 2570 "parser.yy"8624 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }8625 break;8626 8627 8654 case 664: 8628 8655 8629 8656 /* Line 1806 of yacc.c */ 8630 #line 257 2"parser.yy"8631 { (yyval.decl) = (yyvsp[(2) - (3)].decl); }8657 #line 2576 "parser.yy" 8658 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8632 8659 break; 8633 8660 … … 8636 8663 /* Line 1806 of yacc.c */ 8637 8664 #line 2578 "parser.yy" 8638 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }8639 break;8640 8641 case 666:8642 8643 /* Line 1806 of yacc.c */8644 #line 2580 "parser.yy"8645 8665 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); } 8646 8666 break; 8647 8667 8668 case 667: 8669 8670 /* Line 1806 of yacc.c */ 8671 #line 2584 "parser.yy" 8672 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); } 8673 break; 8674 8648 8675 case 668: 8649 8676 8650 8677 /* Line 1806 of yacc.c */ 8651 8678 #line 2586 "parser.yy" 8652 { (yyval.decl) = DeclarationNode::new Array( (yyvsp[(3) - (5)].en), 0, false); }8679 { (yyval.decl) = DeclarationNode::newVarArray( 0 ); } 8653 8680 break; 8654 8681 … … 8657 8684 /* Line 1806 of yacc.c */ 8658 8685 #line 2588 "parser.yy" 8659 { (yyval.decl) = DeclarationNode::newVarArray( 0); }8686 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); } 8660 8687 break; 8661 8688 … … 8664 8691 /* Line 1806 of yacc.c */ 8665 8692 #line 2590 "parser.yy" 8666 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }8667 break;8668 8669 case 671:8670 8671 /* Line 1806 of yacc.c */8672 #line 2592 "parser.yy"8673 8693 { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); } 8694 break; 8695 8696 case 672: 8697 8698 /* Line 1806 of yacc.c */ 8699 #line 2605 "parser.yy" 8700 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8674 8701 break; 8675 8702 … … 8684 8711 8685 8712 /* Line 1806 of yacc.c */ 8686 #line 26 09"parser.yy"8687 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8713 #line 2612 "parser.yy" 8714 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8688 8715 break; 8689 8716 … … 8692 8719 /* Line 1806 of yacc.c */ 8693 8720 #line 2614 "parser.yy" 8694 { (yyval.decl) = DeclarationNode::newPointer( 0); }8721 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8695 8722 break; 8696 8723 … … 8699 8726 /* Line 1806 of yacc.c */ 8700 8727 #line 2616 "parser.yy" 8701 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }8728 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8702 8729 break; 8703 8730 … … 8706 8733 /* Line 1806 of yacc.c */ 8707 8734 #line 2618 "parser.yy" 8708 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0) ); }8735 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8709 8736 break; 8710 8737 … … 8713 8740 /* Line 1806 of yacc.c */ 8714 8741 #line 2620 "parser.yy" 8715 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8716 break;8717 8718 case 679:8719 8720 /* Line 1806 of yacc.c */8721 #line 2622 "parser.yy"8722 8742 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8743 break; 8744 8745 case 680: 8746 8747 /* Line 1806 of yacc.c */ 8748 #line 2626 "parser.yy" 8749 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8723 8750 break; 8724 8751 … … 8734 8761 /* Line 1806 of yacc.c */ 8735 8762 #line 2630 "parser.yy" 8736 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8763 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8737 8764 break; 8738 8765 … … 8740 8767 8741 8768 /* Line 1806 of yacc.c */ 8742 #line 2632 "parser.yy" 8769 #line 2635 "parser.yy" 8770 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); } 8771 break; 8772 8773 case 684: 8774 8775 /* Line 1806 of yacc.c */ 8776 #line 2637 "parser.yy" 8777 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8778 break; 8779 8780 case 685: 8781 8782 /* Line 1806 of yacc.c */ 8783 #line 2639 "parser.yy" 8743 8784 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8744 8785 break; 8745 8786 8746 case 684: 8747 8748 /* Line 1806 of yacc.c */ 8749 #line 2637 "parser.yy" 8750 { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); } 8751 break; 8752 8753 case 685: 8754 8755 /* Line 1806 of yacc.c */ 8756 #line 2639 "parser.yy" 8757 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8758 break; 8759 8760 case 686: 8761 8762 /* Line 1806 of yacc.c */ 8763 #line 2641 "parser.yy" 8764 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8765 break; 8766 8767 case 688: 8768 8769 /* Line 1806 of yacc.c */ 8770 #line 2648 "parser.yy" 8787 case 687: 8788 8789 /* Line 1806 of yacc.c */ 8790 #line 2646 "parser.yy" 8771 8791 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); } 8772 8792 break; 8773 8793 8794 case 689: 8795 8796 /* Line 1806 of yacc.c */ 8797 #line 2657 "parser.yy" 8798 { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); } 8799 break; 8800 8774 8801 case 690: 8775 8802 8776 8803 /* Line 1806 of yacc.c */ 8777 #line 26 59"parser.yy"8778 { (yyval.decl) = DeclarationNode::new Array( 0, 0, false); }8804 #line 2660 "parser.yy" 8805 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 8779 8806 break; 8780 8807 … … 8783 8810 /* Line 1806 of yacc.c */ 8784 8811 #line 2662 "parser.yy" 8785 { (yyval.decl) = DeclarationNode::new VarArray( (yyvsp[(3) - (6)].decl)); }8812 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); } 8786 8813 break; 8787 8814 … … 8789 8816 8790 8817 /* Line 1806 of yacc.c */ 8791 #line 266 4"parser.yy"8792 { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }8818 #line 2665 "parser.yy" 8819 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 8793 8820 break; 8794 8821 … … 8797 8824 /* Line 1806 of yacc.c */ 8798 8825 #line 2667 "parser.yy" 8799 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[( 4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }8826 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); } 8800 8827 break; 8801 8828 … … 8804 8831 /* Line 1806 of yacc.c */ 8805 8832 #line 2669 "parser.yy" 8806 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }8807 break;8808 8809 case 695:8810 8811 /* Line 1806 of yacc.c */8812 #line 2671 "parser.yy"8813 8833 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); } 8834 break; 8835 8836 case 696: 8837 8838 /* Line 1806 of yacc.c */ 8839 #line 2683 "parser.yy" 8840 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); } 8814 8841 break; 8815 8842 … … 8824 8851 8825 8852 /* Line 1806 of yacc.c */ 8826 #line 26 87"parser.yy"8827 { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl)); }8853 #line 2690 "parser.yy" 8854 { (yyval.decl) = DeclarationNode::newPointer( 0 ); } 8828 8855 break; 8829 8856 … … 8832 8859 /* Line 1806 of yacc.c */ 8833 8860 #line 2692 "parser.yy" 8834 { (yyval.decl) = DeclarationNode::newPointer( 0); }8861 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); } 8835 8862 break; 8836 8863 … … 8839 8866 /* Line 1806 of yacc.c */ 8840 8867 #line 2694 "parser.yy" 8841 { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }8868 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); } 8842 8869 break; 8843 8870 … … 8846 8873 /* Line 1806 of yacc.c */ 8847 8874 #line 2696 "parser.yy" 8848 { (yyval.decl) = (yyvsp[( 2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0) ); }8875 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); } 8849 8876 break; 8850 8877 … … 8853 8880 /* Line 1806 of yacc.c */ 8854 8881 #line 2698 "parser.yy" 8855 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }8856 break;8857 8858 case 703:8859 8860 /* Line 1806 of yacc.c */8861 #line 2700 "parser.yy"8862 8882 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8883 break; 8884 8885 case 704: 8886 8887 /* Line 1806 of yacc.c */ 8888 #line 2704 "parser.yy" 8889 { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); } 8863 8890 break; 8864 8891 … … 8874 8901 /* Line 1806 of yacc.c */ 8875 8902 #line 2708 "parser.yy" 8876 { (yyval.decl) = (yyvsp[(2) - ( 4)].decl)->addArray( (yyvsp[(4) - (4)].decl)); }8903 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8877 8904 break; 8878 8905 … … 8880 8907 8881 8908 /* Line 1806 of yacc.c */ 8882 #line 2710 "parser.yy" 8909 #line 2713 "parser.yy" 8910 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8911 break; 8912 8913 case 708: 8914 8915 /* Line 1806 of yacc.c */ 8916 #line 2715 "parser.yy" 8883 8917 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8884 8918 break; 8885 8919 8886 case 708: 8887 8888 /* Line 1806 of yacc.c */ 8889 #line 2715 "parser.yy" 8890 { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); } 8891 break; 8892 8893 case 709: 8894 8895 /* Line 1806 of yacc.c */ 8896 #line 2717 "parser.yy" 8897 { (yyval.decl) = (yyvsp[(2) - (3)].decl); } 8898 break; 8899 8900 case 712: 8901 8902 /* Line 1806 of yacc.c */ 8903 #line 2727 "parser.yy" 8920 case 711: 8921 8922 /* Line 1806 of yacc.c */ 8923 #line 2725 "parser.yy" 8904 8924 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 8905 8925 break; 8906 8926 8927 case 714: 8928 8929 /* Line 1806 of yacc.c */ 8930 #line 2735 "parser.yy" 8931 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8932 break; 8933 8907 8934 case 715: 8908 8935 8909 8936 /* Line 1806 of yacc.c */ 8910 8937 #line 2737 "parser.yy" 8938 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8939 break; 8940 8941 case 716: 8942 8943 /* Line 1806 of yacc.c */ 8944 #line 2739 "parser.yy" 8911 8945 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8912 8946 break; 8913 8947 8914 case 71 6:8915 8916 /* Line 1806 of yacc.c */ 8917 #line 27 39"parser.yy"8948 case 717: 8949 8950 /* Line 1806 of yacc.c */ 8951 #line 2741 "parser.yy" 8918 8952 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8919 8953 break; 8920 8954 8921 case 71 7:8922 8923 /* Line 1806 of yacc.c */ 8924 #line 274 1"parser.yy"8955 case 718: 8956 8957 /* Line 1806 of yacc.c */ 8958 #line 2743 "parser.yy" 8925 8959 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8926 8960 break; 8927 8961 8928 case 71 8:8929 8930 /* Line 1806 of yacc.c */ 8931 #line 274 3"parser.yy"8962 case 719: 8963 8964 /* Line 1806 of yacc.c */ 8965 #line 2745 "parser.yy" 8932 8966 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8933 8967 break; 8934 8968 8935 case 719: 8936 8937 /* Line 1806 of yacc.c */ 8938 #line 2745 "parser.yy" 8969 case 720: 8970 8971 /* Line 1806 of yacc.c */ 8972 #line 2752 "parser.yy" 8973 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8974 break; 8975 8976 case 721: 8977 8978 /* Line 1806 of yacc.c */ 8979 #line 2754 "parser.yy" 8980 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8981 break; 8982 8983 case 722: 8984 8985 /* Line 1806 of yacc.c */ 8986 #line 2756 "parser.yy" 8987 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8988 break; 8989 8990 case 723: 8991 8992 /* Line 1806 of yacc.c */ 8993 #line 2758 "parser.yy" 8994 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 8995 break; 8996 8997 case 724: 8998 8999 /* Line 1806 of yacc.c */ 9000 #line 2760 "parser.yy" 9001 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9002 break; 9003 9004 case 725: 9005 9006 /* Line 1806 of yacc.c */ 9007 #line 2763 "parser.yy" 9008 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9009 break; 9010 9011 case 726: 9012 9013 /* Line 1806 of yacc.c */ 9014 #line 2765 "parser.yy" 9015 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9016 break; 9017 9018 case 727: 9019 9020 /* Line 1806 of yacc.c */ 9021 #line 2767 "parser.yy" 9022 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 9023 break; 9024 9025 case 728: 9026 9027 /* Line 1806 of yacc.c */ 9028 #line 2769 "parser.yy" 9029 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); } 9030 break; 9031 9032 case 729: 9033 9034 /* Line 1806 of yacc.c */ 9035 #line 2771 "parser.yy" 9036 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 9037 break; 9038 9039 case 730: 9040 9041 /* Line 1806 of yacc.c */ 9042 #line 2776 "parser.yy" 9043 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); } 9044 break; 9045 9046 case 731: 9047 9048 /* Line 1806 of yacc.c */ 9049 #line 2778 "parser.yy" 9050 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); } 9051 break; 9052 9053 case 732: 9054 9055 /* Line 1806 of yacc.c */ 9056 #line 2783 "parser.yy" 9057 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); } 9058 break; 9059 9060 case 733: 9061 9062 /* Line 1806 of yacc.c */ 9063 #line 2785 "parser.yy" 9064 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); } 9065 break; 9066 9067 case 735: 9068 9069 /* Line 1806 of yacc.c */ 9070 #line 2812 "parser.yy" 9071 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); } 9072 break; 9073 9074 case 739: 9075 9076 /* Line 1806 of yacc.c */ 9077 #line 2823 "parser.yy" 8939 9078 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 8940 9079 break; 8941 9080 8942 case 7 20:8943 8944 /* Line 1806 of yacc.c */ 8945 #line 2 747"parser.yy"9081 case 740: 9082 9083 /* Line 1806 of yacc.c */ 9084 #line 2825 "parser.yy" 8946 9085 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 8947 9086 break; 8948 9087 8949 case 721: 8950 8951 /* Line 1806 of yacc.c */ 8952 #line 2754 "parser.yy" 8953 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); } 8954 break; 8955 8956 case 722: 8957 8958 /* Line 1806 of yacc.c */ 8959 #line 2756 "parser.yy" 9088 case 741: 9089 9090 /* Line 1806 of yacc.c */ 9091 #line 2827 "parser.yy" 9092 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9093 break; 9094 9095 case 742: 9096 9097 /* Line 1806 of yacc.c */ 9098 #line 2829 "parser.yy" 9099 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9100 break; 9101 9102 case 743: 9103 9104 /* Line 1806 of yacc.c */ 9105 #line 2831 "parser.yy" 9106 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); } 9107 break; 9108 9109 case 744: 9110 9111 /* Line 1806 of yacc.c */ 9112 #line 2833 "parser.yy" 9113 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); } 9114 break; 9115 9116 case 745: 9117 9118 /* Line 1806 of yacc.c */ 9119 #line 2840 "parser.yy" 9120 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9121 break; 9122 9123 case 746: 9124 9125 /* Line 1806 of yacc.c */ 9126 #line 2842 "parser.yy" 9127 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9128 break; 9129 9130 case 747: 9131 9132 /* Line 1806 of yacc.c */ 9133 #line 2844 "parser.yy" 8960 9134 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8961 9135 break; 8962 9136 8963 case 7 23:8964 8965 /* Line 1806 of yacc.c */ 8966 #line 2 758"parser.yy"8967 { (yyval.decl) = (yyvsp[( 4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8968 break; 8969 8970 case 7 24:8971 8972 /* Line 1806 of yacc.c */ 8973 #line 2 760"parser.yy"8974 { (yyval.decl) = (yyvsp[( 3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }8975 break; 8976 8977 case 7 25:8978 8979 /* Line 1806 of yacc.c */ 8980 #line 2 762"parser.yy"9137 case 748: 9138 9139 /* Line 1806 of yacc.c */ 9140 #line 2846 "parser.yy" 9141 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9142 break; 9143 9144 case 749: 9145 9146 /* Line 1806 of yacc.c */ 9147 #line 2848 "parser.yy" 9148 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); } 9149 break; 9150 9151 case 750: 9152 9153 /* Line 1806 of yacc.c */ 9154 #line 2850 "parser.yy" 8981 9155 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); } 8982 9156 break; 8983 9157 8984 case 726:8985 8986 /* Line 1806 of yacc.c */8987 #line 2765 "parser.yy"8988 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }8989 break;8990 8991 case 727:8992 8993 /* Line 1806 of yacc.c */8994 #line 2767 "parser.yy"8995 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }8996 break;8997 8998 case 728:8999 9000 /* Line 1806 of yacc.c */9001 #line 2769 "parser.yy"9002 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }9003 break;9004 9005 case 729:9006 9007 /* Line 1806 of yacc.c */9008 #line 2771 "parser.yy"9009 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }9010 break;9011 9012 case 730:9013 9014 /* Line 1806 of yacc.c */9015 #line 2773 "parser.yy"9016 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9017 break;9018 9019 case 731:9020 9021 /* Line 1806 of yacc.c */9022 #line 2778 "parser.yy"9023 { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }9024 break;9025 9026 case 732:9027 9028 /* Line 1806 of yacc.c */9029 #line 2780 "parser.yy"9030 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }9031 break;9032 9033 case 733:9034 9035 /* Line 1806 of yacc.c */9036 #line 2785 "parser.yy"9037 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }9038 break;9039 9040 case 734:9041 9042 /* Line 1806 of yacc.c */9043 #line 2787 "parser.yy"9044 { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }9045 break;9046 9047 case 736:9048 9049 /* Line 1806 of yacc.c */9050 #line 2814 "parser.yy"9051 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }9052 break;9053 9054 case 740:9055 9056 /* Line 1806 of yacc.c */9057 #line 2825 "parser.yy"9058 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9059 break;9060 9061 case 741:9062 9063 /* Line 1806 of yacc.c */9064 #line 2827 "parser.yy"9065 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9066 break;9067 9068 case 742:9069 9070 /* Line 1806 of yacc.c */9071 #line 2829 "parser.yy"9072 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9073 break;9074 9075 case 743:9076 9077 /* Line 1806 of yacc.c */9078 #line 2831 "parser.yy"9079 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9080 break;9081 9082 case 744:9083 9084 /* Line 1806 of yacc.c */9085 #line 2833 "parser.yy"9086 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }9087 break;9088 9089 case 745:9090 9091 /* Line 1806 of yacc.c */9092 #line 2835 "parser.yy"9093 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }9094 break;9095 9096 case 746:9097 9098 /* Line 1806 of yacc.c */9099 #line 2842 "parser.yy"9100 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }9101 break;9102 9103 case 747:9104 9105 /* Line 1806 of yacc.c */9106 #line 2844 "parser.yy"9107 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }9108 break;9109 9110 case 748:9111 9112 /* Line 1806 of yacc.c */9113 #line 2846 "parser.yy"9114 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9115 break;9116 9117 case 749:9118 9119 /* Line 1806 of yacc.c */9120 #line 2848 "parser.yy"9121 { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }9122 break;9123 9124 case 750:9125 9126 /* Line 1806 of yacc.c */9127 #line 2850 "parser.yy"9128 { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }9129 break;9130 9131 9158 case 751: 9132 9159 9133 9160 /* Line 1806 of yacc.c */ 9134 #line 285 2"parser.yy"9135 { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }9161 #line 2855 "parser.yy" 9162 { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); } 9136 9163 break; 9137 9164 … … 9139 9166 9140 9167 /* Line 1806 of yacc.c */ 9141 #line 28 57"parser.yy"9142 { (yyval.decl) = DeclarationNode::new Tuple( (yyvsp[(3) - (5)].decl)); }9168 #line 2862 "parser.yy" 9169 { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); } 9143 9170 break; 9144 9171 … … 9150 9177 break; 9151 9178 9152 case 75 4:9153 9154 /* Line 1806 of yacc.c */ 9155 #line 28 66"parser.yy"9156 { (yyval. decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }9179 case 756: 9180 9181 /* Line 1806 of yacc.c */ 9182 #line 2888 "parser.yy" 9183 { (yyval.en) = nullptr; } 9157 9184 break; 9158 9185 … … 9161 9188 /* Line 1806 of yacc.c */ 9162 9189 #line 2890 "parser.yy" 9163 { (yyval.en) = nullptr; }9164 break;9165 9166 case 758:9167 9168 /* Line 1806 of yacc.c */9169 #line 2892 "parser.yy"9170 9190 { (yyval.en) = (yyvsp[(2) - (2)].en); } 9171 9191 break; … … 9174 9194 9175 9195 /* Line 1806 of yacc.c */ 9176 #line 91 77 "Parser/parser.cc"9196 #line 9197 "Parser/parser.cc" 9177 9197 default: break; 9178 9198 } … … 9405 9425 9406 9426 /* Line 2067 of yacc.c */ 9407 #line 289 5"parser.yy"9427 #line 2893 "parser.yy" 9408 9428 9409 9429 // ----end of grammar---- -
src/Parser/parser.h
r2162c2c rbb82c03 73 73 FTYPE = 291, 74 74 DTYPE = 292, 75 TTYPE = 293, 76 TRAIT = 294, 77 SIZEOF = 295, 78 OFFSETOF = 296, 79 ATTRIBUTE = 297, 80 EXTENSION = 298, 81 IF = 299, 82 ELSE = 300, 83 SWITCH = 301, 84 CASE = 302, 85 DEFAULT = 303, 86 DO = 304, 87 WHILE = 305, 88 FOR = 306, 89 BREAK = 307, 90 CONTINUE = 308, 91 GOTO = 309, 92 RETURN = 310, 93 CHOOSE = 311, 94 DISABLE = 312, 95 ENABLE = 313, 96 FALLTHRU = 314, 97 TRY = 315, 98 CATCH = 316, 99 CATCHRESUME = 317, 100 FINALLY = 318, 101 THROW = 319, 102 THROWRESUME = 320, 103 AT = 321, 104 ASM = 322, 105 ALIGNAS = 323, 106 ALIGNOF = 324, 107 ATOMIC = 325, 108 GENERIC = 326, 109 NORETURN = 327, 110 STATICASSERT = 328, 111 THREADLOCAL = 329, 112 IDENTIFIER = 330, 113 QUOTED_IDENTIFIER = 331, 114 TYPEDEFname = 332, 115 TYPEGENname = 333, 116 ATTR_IDENTIFIER = 334, 117 ATTR_TYPEDEFname = 335, 118 ATTR_TYPEGENname = 336, 119 INTEGERconstant = 337, 120 CHARACTERconstant = 338, 121 STRINGliteral = 339, 122 REALDECIMALconstant = 340, 123 REALFRACTIONconstant = 341, 124 FLOATINGconstant = 342, 125 ZERO = 343, 126 ONE = 344, 127 ARROW = 345, 128 ICR = 346, 129 DECR = 347, 130 LS = 348, 131 RS = 349, 132 LE = 350, 133 GE = 351, 134 EQ = 352, 135 NE = 353, 136 ANDAND = 354, 137 OROR = 355, 138 ELLIPSIS = 356, 139 MULTassign = 357, 140 DIVassign = 358, 141 MODassign = 359, 142 PLUSassign = 360, 143 MINUSassign = 361, 144 LSassign = 362, 145 RSassign = 363, 146 ANDassign = 364, 147 ERassign = 365, 148 ORassign = 366, 149 ATassign = 367, 150 THEN = 368 75 TRAIT = 293, 76 SIZEOF = 294, 77 OFFSETOF = 295, 78 ATTRIBUTE = 296, 79 EXTENSION = 297, 80 IF = 298, 81 ELSE = 299, 82 SWITCH = 300, 83 CASE = 301, 84 DEFAULT = 302, 85 DO = 303, 86 WHILE = 304, 87 FOR = 305, 88 BREAK = 306, 89 CONTINUE = 307, 90 GOTO = 308, 91 RETURN = 309, 92 CHOOSE = 310, 93 DISABLE = 311, 94 ENABLE = 312, 95 FALLTHRU = 313, 96 TRY = 314, 97 CATCH = 315, 98 CATCHRESUME = 316, 99 FINALLY = 317, 100 THROW = 318, 101 THROWRESUME = 319, 102 AT = 320, 103 ASM = 321, 104 ALIGNAS = 322, 105 ALIGNOF = 323, 106 ATOMIC = 324, 107 GENERIC = 325, 108 NORETURN = 326, 109 STATICASSERT = 327, 110 THREADLOCAL = 328, 111 IDENTIFIER = 329, 112 QUOTED_IDENTIFIER = 330, 113 TYPEDEFname = 331, 114 TYPEGENname = 332, 115 ATTR_IDENTIFIER = 333, 116 ATTR_TYPEDEFname = 334, 117 ATTR_TYPEGENname = 335, 118 INTEGERconstant = 336, 119 CHARACTERconstant = 337, 120 STRINGliteral = 338, 121 REALDECIMALconstant = 339, 122 REALFRACTIONconstant = 340, 123 FLOATINGconstant = 341, 124 ZERO = 342, 125 ONE = 343, 126 ARROW = 344, 127 ICR = 345, 128 DECR = 346, 129 LS = 347, 130 RS = 348, 131 LE = 349, 132 GE = 350, 133 EQ = 351, 134 NE = 352, 135 ANDAND = 353, 136 OROR = 354, 137 ELLIPSIS = 355, 138 MULTassign = 356, 139 DIVassign = 357, 140 MODassign = 358, 141 PLUSassign = 359, 142 MINUSassign = 360, 143 LSassign = 361, 144 RSassign = 362, 145 ANDassign = 363, 146 ERassign = 364, 147 ORassign = 365, 148 ATassign = 366, 149 THEN = 367 151 150 }; 152 151 #endif … … 187 186 #define FTYPE 291 188 187 #define DTYPE 292 189 #define TTYPE 293 190 #define TRAIT 294 191 #define SIZEOF 295 192 #define OFFSETOF 296 193 #define ATTRIBUTE 297 194 #define EXTENSION 298 195 #define IF 299 196 #define ELSE 300 197 #define SWITCH 301 198 #define CASE 302 199 #define DEFAULT 303 200 #define DO 304 201 #define WHILE 305 202 #define FOR 306 203 #define BREAK 307 204 #define CONTINUE 308 205 #define GOTO 309 206 #define RETURN 310 207 #define CHOOSE 311 208 #define DISABLE 312 209 #define ENABLE 313 210 #define FALLTHRU 314 211 #define TRY 315 212 #define CATCH 316 213 #define CATCHRESUME 317 214 #define FINALLY 318 215 #define THROW 319 216 #define THROWRESUME 320 217 #define AT 321 218 #define ASM 322 219 #define ALIGNAS 323 220 #define ALIGNOF 324 221 #define ATOMIC 325 222 #define GENERIC 326 223 #define NORETURN 327 224 #define STATICASSERT 328 225 #define THREADLOCAL 329 226 #define IDENTIFIER 330 227 #define QUOTED_IDENTIFIER 331 228 #define TYPEDEFname 332 229 #define TYPEGENname 333 230 #define ATTR_IDENTIFIER 334 231 #define ATTR_TYPEDEFname 335 232 #define ATTR_TYPEGENname 336 233 #define INTEGERconstant 337 234 #define CHARACTERconstant 338 235 #define STRINGliteral 339 236 #define REALDECIMALconstant 340 237 #define REALFRACTIONconstant 341 238 #define FLOATINGconstant 342 239 #define ZERO 343 240 #define ONE 344 241 #define ARROW 345 242 #define ICR 346 243 #define DECR 347 244 #define LS 348 245 #define RS 349 246 #define LE 350 247 #define GE 351 248 #define EQ 352 249 #define NE 353 250 #define ANDAND 354 251 #define OROR 355 252 #define ELLIPSIS 356 253 #define MULTassign 357 254 #define DIVassign 358 255 #define MODassign 359 256 #define PLUSassign 360 257 #define MINUSassign 361 258 #define LSassign 362 259 #define RSassign 363 260 #define ANDassign 364 261 #define ERassign 365 262 #define ORassign 366 263 #define ATassign 367 264 #define THEN 368 188 #define TRAIT 293 189 #define SIZEOF 294 190 #define OFFSETOF 295 191 #define ATTRIBUTE 296 192 #define EXTENSION 297 193 #define IF 298 194 #define ELSE 299 195 #define SWITCH 300 196 #define CASE 301 197 #define DEFAULT 302 198 #define DO 303 199 #define WHILE 304 200 #define FOR 305 201 #define BREAK 306 202 #define CONTINUE 307 203 #define GOTO 308 204 #define RETURN 309 205 #define CHOOSE 310 206 #define DISABLE 311 207 #define ENABLE 312 208 #define FALLTHRU 313 209 #define TRY 314 210 #define CATCH 315 211 #define CATCHRESUME 316 212 #define FINALLY 317 213 #define THROW 318 214 #define THROWRESUME 319 215 #define AT 320 216 #define ASM 321 217 #define ALIGNAS 322 218 #define ALIGNOF 323 219 #define ATOMIC 324 220 #define GENERIC 325 221 #define NORETURN 326 222 #define STATICASSERT 327 223 #define THREADLOCAL 328 224 #define IDENTIFIER 329 225 #define QUOTED_IDENTIFIER 330 226 #define TYPEDEFname 331 227 #define TYPEGENname 332 228 #define ATTR_IDENTIFIER 333 229 #define ATTR_TYPEDEFname 334 230 #define ATTR_TYPEGENname 335 231 #define INTEGERconstant 336 232 #define CHARACTERconstant 337 233 #define STRINGliteral 338 234 #define REALDECIMALconstant 339 235 #define REALFRACTIONconstant 340 236 #define FLOATINGconstant 341 237 #define ZERO 342 238 #define ONE 343 239 #define ARROW 344 240 #define ICR 345 241 #define DECR 346 242 #define LS 347 243 #define RS 348 244 #define LE 349 245 #define GE 350 246 #define EQ 351 247 #define NE 352 248 #define ANDAND 353 249 #define OROR 354 250 #define ELLIPSIS 355 251 #define MULTassign 356 252 #define DIVassign 357 253 #define MODassign 358 254 #define PLUSassign 359 255 #define MINUSassign 360 256 #define LSassign 361 257 #define RSassign 362 258 #define ANDassign 363 259 #define ERassign 364 260 #define ORassign 365 261 #define ATassign 366 262 #define THEN 367 265 263 266 264 … … 292 290 293 291 /* Line 2068 of yacc.c */ 294 #line 29 5"Parser/parser.h"292 #line 293 "Parser/parser.h" 295 293 } YYSTYPE; 296 294 # define YYSTYPE_IS_TRIVIAL 1 -
src/Parser/parser.yy
r2162c2c rbb82c03 83 83 %token TYPEOF LABEL // GCC 84 84 %token ENUM STRUCT UNION 85 %token OTYPE FTYPE DTYPE T TYPE TRAIT // CFA85 %token OTYPE FTYPE DTYPE TRAIT // CFA 86 86 %token SIZEOF OFFSETOF 87 87 %token ATTRIBUTE EXTENSION // GCC … … 1893 1893 { $$ = DeclarationNode::Otype; } 1894 1894 | DTYPE 1895 { $$ = DeclarationNode::Ftype; } 1896 | FTYPE 1895 1897 { $$ = DeclarationNode::Dtype; } 1896 | FTYPE1897 { $$ = DeclarationNode::Ftype; }1898 | TTYPE1899 { $$ = DeclarationNode::Ttype; }1900 1898 ; 1901 1899 -
src/ResolvExpr/AdjustExprType.cc
r2162c2c rbb82c03 22 22 class AdjustExprType : public Mutator { 23 23 typedef Mutator Parent; 24 using Parent::mutate;25 24 public: 26 25 AdjustExprType( const TypeEnvironment &env, const SymTab::Indexer &indexer ); -
src/ResolvExpr/AlternativeFinder.cc
r2162c2c rbb82c03 267 267 std::list< Expression* >& actuals = appExpr->get_args(); 268 268 269 std::list< Type * > formalTypes; 270 std::list< Type * >::iterator formalType = formalTypes.end(); 271 269 272 for ( std::list< Expression* >::iterator actualExpr = actuals.begin(); actualExpr != actuals.end(); ++actualExpr ) { 270 Type * actualType = (*actualExpr)->get_result(); 273 271 274 PRINT( 272 275 std::cerr << "actual expression:" << std::endl; 273 276 (*actualExpr)->print( std::cerr, 8 ); 274 277 std::cerr << "--- results are" << std::endl; 275 actualType->print( std::cerr, 8 ); 276 ) 278 (*actualExpr)->get_result()->print( std::cerr, 8 ); 279 ) 280 std::list< DeclarationWithType* >::iterator startFormal = formal; 277 281 Cost actualCost; 278 if ( formal == formals.end() ) { 279 if ( function->get_isVarArgs() ) { 280 convCost += Cost( 1, 0, 0 ); 281 continue; 282 std::list< Type * > flatActualTypes; 283 flatten( (*actualExpr)->get_result(), back_inserter( flatActualTypes ) ); 284 for ( std::list< Type* >::iterator actualType = flatActualTypes.begin(); actualType != flatActualTypes.end(); ++actualType ) { 285 286 287 // tuple handling code 288 if ( formalType == formalTypes.end() ) { 289 // the type of the formal parameter may be a tuple type. To make this easier to work with, 290 // flatten the tuple type and traverse the resulting list of types, incrementing the formal 291 // iterator once its types have been extracted. Once a particular formal parameter's type has 292 // been exhausted load the next formal parameter's type. 293 if ( formal == formals.end() ) { 294 if ( function->get_isVarArgs() ) { 295 convCost += Cost( 1, 0, 0 ); 296 break; 297 } else { 298 return Cost::infinity; 299 } 300 } 301 formalTypes.clear(); 302 flatten( (*formal)->get_type(), back_inserter( formalTypes ) ); 303 formalType = formalTypes.begin(); 304 ++formal; 305 } 306 307 PRINT( 308 std::cerr << std::endl << "converting "; 309 (*actualType)->print( std::cerr, 8 ); 310 std::cerr << std::endl << " to "; 311 (*formalType)->print( std::cerr, 8 ); 312 ) 313 Cost newCost = conversionCost( *actualType, *formalType, indexer, alt.env ); 314 PRINT( 315 std::cerr << std::endl << "cost is" << newCost << std::endl; 316 ) 317 318 if ( newCost == Cost::infinity ) { 319 return newCost; 320 } 321 convCost += newCost; 322 actualCost += newCost; 323 324 convCost += Cost( 0, polyCost( *formalType, alt.env, indexer ) + polyCost( *actualType, alt.env, indexer ), 0 ); 325 326 formalType++; 327 } 328 if ( actualCost != Cost( 0, 0, 0 ) ) { 329 std::list< DeclarationWithType* >::iterator startFormalPlusOne = startFormal; 330 startFormalPlusOne++; 331 if ( formal == startFormalPlusOne ) { 332 // not a tuple type 333 Type *newType = (*startFormal)->get_type()->clone(); 334 alt.env.apply( newType ); 335 *actualExpr = new CastExpr( *actualExpr, newType ); 282 336 } else { 283 return Cost::infinity; 337 TupleType *newType = new TupleType( Type::Qualifiers() ); 338 for ( std::list< DeclarationWithType* >::iterator i = startFormal; i != formal; ++i ) { 339 newType->get_types().push_back( (*i)->get_type()->clone() ); 340 } 341 alt.env.apply( newType ); 342 *actualExpr = new CastExpr( *actualExpr, newType ); 284 343 } 285 344 } 286 Type * formalType = (*formal)->get_type(); 287 PRINT( 288 std::cerr << std::endl << "converting "; 289 actualType->print( std::cerr, 8 ); 290 std::cerr << std::endl << " to "; 291 formalType->print( std::cerr, 8 ); 292 ) 293 Cost newCost = conversionCost( actualType, formalType, indexer, alt.env ); 294 PRINT( 295 std::cerr << std::endl << "cost is" << newCost << std::endl; 296 ) 297 298 if ( newCost == Cost::infinity ) { 299 return newCost; 300 } 301 convCost += newCost; 302 actualCost += newCost; 303 if ( actualCost != Cost( 0, 0, 0 ) ) { 304 Type *newType = formalType->clone(); 305 alt.env.apply( newType ); 306 *actualExpr = new CastExpr( *actualExpr, newType ); 307 } 308 convCost += Cost( 0, polyCost( formalType, alt.env, indexer ) + polyCost( actualType, alt.env, indexer ), 0 ); 309 ++formal; // can't be in for-loop update because of the continue 345 310 346 } 311 347 if ( formal != formals.end() ) { … … 328 364 } 329 365 convCost += newCost; 366 330 367 convCost += Cost( 0, polyCost( assert->second.formalType, alt.env, indexer ) + polyCost( assert->second.actualType, alt.env, indexer ), 0 ); 331 368 } … … 339 376 unifiableVars[ (*tyvar)->get_name() ] = TypeDecl::Data{ *tyvar }; 340 377 for ( std::list< DeclarationWithType* >::iterator assert = (*tyvar)->get_assertions().begin(); assert != (*tyvar)->get_assertions().end(); ++assert ) { 341 needAssertions[ *assert ] .isUsed= true;378 needAssertions[ *assert ] = true; 342 379 } 343 380 /// needAssertions.insert( needAssertions.end(), (*tyvar)->get_assertions().begin(), (*tyvar)->get_assertions().end() ); … … 351 388 if ( TupleType * tupleType = dynamic_cast< TupleType * >( formalType ) ) { 352 389 // formalType is a TupleType - group actuals into a TupleExpr whose type unifies with the TupleType 353 std::list< Expression * > exprs;390 TupleExpr * tupleExpr = new TupleExpr(); 354 391 for ( Type * type : *tupleType ) { 355 if ( ! instantiateArgument( type, defaultValue, actualIt, actualEnd, openVars, resultEnv, resultNeed, resultHave, indexer, cost, back_inserter( exprs) ) ) {356 delete All( exprs );392 if ( ! instantiateArgument( type, defaultValue, actualIt, actualEnd, openVars, resultEnv, resultNeed, resultHave, indexer, cost, back_inserter( tupleExpr->get_exprs() ) ) ) { 393 delete tupleExpr; 357 394 return false; 358 395 } 359 396 } 360 *out++ = new TupleExpr( exprs ); 361 } else if ( TypeInstType * ttype = Tuples::isTtype( formalType ) ) { 362 // xxx - mixing default arguments with variadic?? 363 std::list< Expression * > exprs; 364 for ( ; actualIt != actualEnd; ++actualIt ) { 365 exprs.push_back( actualIt->expr->clone() ); 366 cost += actualIt->cost; 367 } 368 Expression * arg = nullptr; 369 if ( exprs.size() == 1 && Tuples::isTtype( exprs.front()->get_result() ) ) { 370 // the case where a ttype value is passed directly is special, e.g. for argument forwarding purposes 371 // xxx - what if passing multiple arguments, last of which is ttype? 372 // xxx - what would happen if unify was changed so that unifying tuple types flattened both before unifying lists? then pass in TupleType(ttype) below. 373 arg = exprs.front(); 374 } else { 375 arg = new TupleExpr( exprs ); 376 } 377 assert( arg && arg->get_result() ); 378 if ( ! unify( ttype, arg->get_result(), resultEnv, resultNeed, resultHave, openVars, indexer ) ) { 379 return false; 380 } 381 *out++ = arg; 397 tupleExpr->set_result( Tuples::makeTupleType( tupleExpr->get_exprs() ) ); 398 *out++ = tupleExpr; 382 399 } else if ( actualIt != actualEnd ) { 383 400 // both actualType and formalType are atomic (non-tuple) types - if they unify … … 466 483 void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) { 467 484 for ( AssertionSet::iterator i = assertSet.begin(); i != assertSet.end(); ++i ) { 468 if ( i->second .isUsed) {485 if ( i->second == true ) { 469 486 i->first->accept( indexer ); 470 487 } … … 477 494 if ( begin == end ) { 478 495 if ( newNeed.empty() ) { 479 PRINT(480 std::cerr << "all assertions satisfied, output alternative: ";481 newAlt.print( std::cerr );482 std::cerr << std::endl;483 );484 496 *out++ = newAlt; 485 497 return; … … 498 510 499 511 ForwardIterator cur = begin++; 500 if ( ! cur->second .isUsed) {512 if ( ! cur->second ) { 501 513 inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out ); 502 514 return; // xxx - should this continue? previously this wasn't here, and it looks like it should be … … 542 554 assert( (*candidate)->get_uniqueId() ); 543 555 DeclarationWithType *candDecl = static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ); 544 545 // everything with an empty idChain was pulled in by the current assertion.546 // add current assertion's idChain + current assertion's ID so that the correct inferParameters can be found.547 for ( auto & a : newerNeed ) {548 if ( a.second.idChain.empty() ) {549 a.second.idChain = cur->second.idChain;550 a.second.idChain.push_back( curDecl->get_uniqueId() );551 }552 }553 554 556 //AssertionParentSet newNeedParents( needParents ); 555 557 // skip repeatingly-self-recursive assertion satisfaction … … 567 569 ) 568 570 ApplicationExpr *appExpr = static_cast< ApplicationExpr* >( newerAlt.expr ); 569 // follow the current assertion's ID chain to find the correct set of inferred parameters to add the candidate to (i.e. the set of inferred parameters belonging to the entity which requested the assertion parameter).570 InferredParams * inferParameters = &appExpr->get_inferParams();571 for ( UniqueId id : cur->second.idChain ) {572 inferParameters = (*inferParameters)[ id ].inferParams.get();573 }574 571 // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions 575 (*inferParameters)[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );572 appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr ); 576 573 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out ); 577 574 } else { … … 612 609 makeUnifiableVars( funcType, openVars, resultNeed ); 613 610 AltList instantiatedActuals; // filled by instantiate function 614 if ( targetType && ! targetType->isVoid() && ! funcType->get_returnVals().empty()) {611 if ( targetType && ! targetType->isVoid() ) { 615 612 // attempt to narrow based on expected target type 616 613 Type * returnType = funcType->get_returnVals().front()->get_type(); … … 1078 1075 } 1079 1076 1080 void AlternativeFinder::visit( UntypedTupleExpr *tupleExpr ) {1077 void AlternativeFinder::visit( TupleExpr *tupleExpr ) { 1081 1078 std::list< AlternativeFinder > subExprAlternatives; 1082 1079 findSubExprs( tupleExpr->get_exprs().begin(), tupleExpr->get_exprs().end(), back_inserter( subExprAlternatives ) ); … … 1084 1081 combos( subExprAlternatives.begin(), subExprAlternatives.end(), back_inserter( possibilities ) ); 1085 1082 for ( std::list< AltList >::const_iterator i = possibilities.begin(); i != possibilities.end(); ++i ) { 1086 std::list< Expression * > exprs; 1087 makeExprList( *i, exprs ); 1083 TupleExpr *newExpr = new TupleExpr; 1084 makeExprList( *i, newExpr->get_exprs() ); 1085 newExpr->set_result( Tuples::makeTupleType( newExpr->get_exprs() ) ); 1088 1086 1089 1087 TypeEnvironment compositeEnv; 1090 1088 simpleCombineEnvironments( i->begin(), i->end(), compositeEnv ); 1091 alternatives.push_back( Alternative( new TupleExpr( exprs ), compositeEnv, sumCost( *i ) ) );1089 alternatives.push_back( Alternative( newExpr, compositeEnv, sumCost( *i ) ) ); 1092 1090 } // for 1093 }1094 1095 void AlternativeFinder::visit( TupleExpr *tupleExpr ) {1096 alternatives.push_back( Alternative( tupleExpr->clone(), env, Cost::zero ) );1097 1091 } 1098 1092 -
src/ResolvExpr/AlternativeFinder.h
r2162c2c rbb82c03 64 64 virtual void visit( ConditionalExpr *conditionalExpr ); 65 65 virtual void visit( CommaExpr *commaExpr ); 66 virtual void visit( TupleExpr *tupleExpr ); 66 67 virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ); 67 68 virtual void visit( ConstructorExpr * ctorExpr ); 68 virtual void visit( UntypedTupleExpr *tupleExpr );69 virtual void visit( TupleExpr *tupleExpr );70 69 virtual void visit( TupleIndexExpr *tupleExpr ); 71 70 virtual void visit( TupleAssignExpr *tupleExpr ); -
src/ResolvExpr/FindOpenVars.cc
r2162c2c rbb82c03 50 50 openVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) }; 51 51 for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) { 52 needAssertions[ *assert ] .isUsed= false;52 needAssertions[ *assert ] = false; 53 53 } 54 54 /// cloneAll( (*i)->get_assertions(), needAssertions ); … … 59 59 closedVars[ (*i)->get_name() ] = TypeDecl::Data{ (*i) }; 60 60 for ( std::list< DeclarationWithType* >::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) { 61 haveAssertions[ *assert ] .isUsed= false;61 haveAssertions[ *assert ] = false; 62 62 } 63 63 /// cloneAll( (*i)->get_assertions(), haveAssertions ); -
src/ResolvExpr/TypeEnvironment.cc
r2162c2c rbb82c03 75 75 for ( AssertionSet::const_iterator i = assertions.begin(); i != assertions.end(); ++i ) { 76 76 i->first->print( os, indent ); 77 if ( i->second .isUsed) {77 if ( i->second ) { 78 78 os << "(used)"; 79 79 } else { -
src/ResolvExpr/TypeEnvironment.h
r2162c2c rbb82c03 31 31 bool operator()( DeclarationWithType * d1, DeclarationWithType * d2 ) const; 32 32 }; 33 struct AssertionSetValue { 34 bool isUsed; 35 // chain of Unique IDs of the assertion declarations. The first ID in the chain is the ID of an assertion on the current type, 36 // with each successive ID being the ID of an assertion pulled in by the previous ID. The last ID in the chain is 37 // the ID of the assertion that pulled in the current assertion. 38 std::list< UniqueId > idChain; 39 }; 40 typedef std::map< DeclarationWithType*, AssertionSetValue, AssertCompare > AssertionSet; 33 typedef std::map< DeclarationWithType*, bool, AssertCompare > AssertionSet; 41 34 typedef std::map< std::string, TypeDecl::Data > OpenVarSet; 42 35 -
src/ResolvExpr/Unify.cc
r2162c2c rbb82c03 26 26 #include "SymTab/Indexer.h" 27 27 #include "Common/utility.h" 28 #include "Tuples/Tuples.h" 28 29 29 30 30 // #define DEBUG … … 157 157 // if the type variable is specified to be a complete type then the incoming 158 158 // type must also be complete 159 // xxx - should this also check that type is not a tuple type and that it's not a ttype?160 159 return ! isFtype( type, indexer ) && (! data.isComplete || isComplete( type )); 161 160 case TypeDecl::Ftype: 162 161 return isFtype( type, indexer ); 163 case TypeDecl::Ttype:164 // ttype unifies with any tuple type165 return dynamic_cast< TupleType * >( type );166 162 } // switch 163 assert( false ); 167 164 return false; 168 165 } … … 434 431 if ( i != assertions.end() ) { 435 432 /// std::cerr << "found it!" << std::endl; 436 i->second .isUsed= true;433 i->second = true; 437 434 } // if 438 435 } … … 488 485 } 489 486 490 template< typename Iterator >491 std::unique_ptr<Type> combineTypes( Iterator begin, Iterator end ) {492 std::list< Type * > types;493 for ( ; begin != end; ++begin ) {494 // it's guaranteed that a ttype variable will be bound to a flat tuple, so ensure that this results in a flat tuple495 flatten( (*begin)->get_type(), back_inserter( types ) );496 }497 return std::unique_ptr<Type>( new TupleType( Type::Qualifiers(), types ) );498 }499 500 487 template< typename Iterator1, typename Iterator2 > 501 488 bool unifyDeclList( Iterator1 list1Begin, Iterator1 list1End, Iterator2 list2Begin, Iterator2 list2End, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, const SymTab::Indexer &indexer ) { 502 489 for ( ; list1Begin != list1End && list2Begin != list2End; ++list1Begin, ++list2Begin ) { 503 Type * t1 = (*list1Begin)->get_type(); 504 Type * t2 = (*list2Begin)->get_type(); 505 bool isTtype1 = Tuples::isTtype( t1 ); 506 bool isTtype2 = Tuples::isTtype( t2 ); 507 // xxx - assumes ttype must be last parameter 508 // xxx - there may be a nice way to refactor this, but be careful because the argument positioning might matter in some cases. 509 if ( isTtype1 && ! isTtype2 ) { 510 // combine all of the things in list2, then unify 511 return unifyExact( t1, combineTypes( list2Begin, list2End ).get(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 512 } else if ( isTtype2 && ! isTtype1 ) { 513 // combine all of the things in list1, then unify 514 return unifyExact( combineTypes( list1Begin, list1End ).get(), t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 515 } else if ( ! unifyExact( t1, t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) { 490 // Type * commonType; 491 // if ( ! unifyInexact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( true, true ), indexer, commonType ) ) { 492 if ( ! unifyExact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) { 516 493 return false; 517 494 } // if 518 495 } // for 519 // may get to the end of one argument list before the end of the other. This is only okay when the other is a ttype 520 if ( list1Begin != list1End ) { 521 // try unifying empty tuple type with ttype 522 Type * t1 = (*list1Begin)->get_type(); 523 if ( Tuples::isTtype( t1 ) ) { 524 return unifyExact( t1, combineTypes( list2Begin, list2End ).get(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 525 } else return false; 526 } else if ( list2Begin != list2End ) { 527 // try unifying empty tuple type with ttype 528 Type * t2 = (*list2Begin)->get_type(); 529 if ( Tuples::isTtype( t2 ) ) { 530 return unifyExact( combineTypes( list1Begin, list1End ).get(), t2, env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ); 531 } else return false; 496 if ( list1Begin != list1End || list2Begin != list2End ) { 497 return false; 532 498 } else { 533 499 return true; 534 500 } // if 535 }536 537 /// Finds ttypes and replaces them with their expansion, if known.538 /// This needs to be done so that satisfying ttype assertions is easier.539 /// If this isn't done then argument lists can have wildly different540 /// size and structure, when they should be compatible.541 struct TtypeExpander : public Mutator {542 TypeEnvironment & env;543 TtypeExpander( TypeEnvironment & env ) : env( env ) {}544 Type * mutate( TypeInstType * typeInst ) {545 EqvClass eqvClass;546 if ( env.lookup( typeInst->get_name(), eqvClass ) ) {547 if ( eqvClass.data.kind == TypeDecl::Ttype ) {548 // expand ttype parameter into its actual type549 if ( eqvClass.type ) {550 delete typeInst;551 return eqvClass.type->clone();552 }553 }554 }555 return typeInst;556 }557 };558 559 /// flattens a list of declarations, so that each tuple type has a single declaration.560 /// makes use of TtypeExpander to ensure ttypes are flat as well.561 void flattenList( std::list< DeclarationWithType * > src, std::list< DeclarationWithType * > & dst, TypeEnvironment & env ) {562 dst.clear();563 for ( DeclarationWithType * dcl : src ) {564 TtypeExpander expander( env );565 dcl->acceptMutator( expander );566 std::list< Type * > types;567 flatten( dcl->get_type(), back_inserter( types ) );568 for ( Type * t : types ) {569 dst.push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, t, nullptr ) );570 }571 delete dcl;572 }573 501 } 574 502 … … 576 504 FunctionType *otherFunction = dynamic_cast< FunctionType* >( type2 ); 577 505 if ( otherFunction && functionType->get_isVarArgs() == otherFunction->get_isVarArgs() ) { 578 // flatten the parameter lists for both functions so that tuple structure 579 // doesn't affect unification. Must be a clone so that the types don't change. 580 std::unique_ptr<FunctionType> flatFunc( functionType->clone() ); 581 std::unique_ptr<FunctionType> flatOther( otherFunction->clone() ); 582 flattenList( flatFunc->get_parameters(), flatFunc->get_parameters(), env ); 583 flattenList( flatOther->get_parameters(), flatOther->get_parameters(), env ); 584 585 // sizes don't have to match if ttypes are involved; need to be more precise wrt where the ttype is to prevent errors 586 if ( (flatFunc->get_parameters().size() == flatOther->get_parameters().size() && flatFunc->get_returnVals().size() == flatOther->get_returnVals().size()) || flatFunc->isTtype() || flatOther->isTtype() ) { 587 if ( unifyDeclList( flatFunc->get_parameters().begin(), flatFunc->get_parameters().end(), flatOther->get_parameters().begin(), flatOther->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 588 if ( unifyDeclList( flatFunc->get_returnVals().begin(), flatFunc->get_returnVals().end(), flatOther->get_returnVals().begin(), flatOther->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 589 590 // the original types must be used in mark assertions, since pointer comparisons are used 506 if ( functionType->get_parameters().size() == otherFunction->get_parameters().size() && functionType->get_returnVals().size() == otherFunction->get_returnVals().size() ) { 507 if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 508 if ( unifyDeclList( functionType->get_returnVals().begin(), functionType->get_returnVals().end(), otherFunction->get_returnVals().begin(), otherFunction->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) { 509 591 510 markAssertions( haveAssertions, needAssertions, functionType ); 592 511 markAssertions( haveAssertions, needAssertions, otherFunction ); -
src/ResolvExpr/typeops.h
r2162c2c rbb82c03 164 164 } 165 165 } else { 166 *out++ = type ->clone();166 *out++ = type; 167 167 } 168 168 } -
src/SymTab/Indexer.cc
r2162c2c rbb82c03 453 453 } 454 454 455 void Indexer::visit( TupleExpr *tupleExpr ) { 456 acceptNewScope( tupleExpr->get_result(), *this ); 457 acceptAll( tupleExpr->get_exprs(), *this ); 458 } 459 460 void Indexer::visit( TupleAssignExpr *tupleExpr ) { 461 acceptNewScope( tupleExpr->get_result(), *this ); 462 maybeAccept( tupleExpr->get_stmtExpr(), *this ); 463 } 464 455 465 void Indexer::visit( TypeExpr *typeExpr ) { 456 466 acceptNewScope( typeExpr->get_result(), *this ); … … 464 474 } 465 475 466 void Indexer::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {467 acceptNewScope( impCpCtorExpr->get_result(), *this );468 maybeAccept( impCpCtorExpr->get_callExpr(), *this );469 acceptAll( impCpCtorExpr->get_tempDecls(), *this );470 acceptAll( impCpCtorExpr->get_returnDecls(), *this );471 acceptAll( impCpCtorExpr->get_dtors(), *this );472 }473 474 void Indexer::visit( ConstructorExpr * ctorExpr ) {475 acceptNewScope( ctorExpr->get_result(), *this );476 maybeAccept( ctorExpr->get_callExpr(), *this );477 }478 479 void Indexer::visit( CompoundLiteralExpr *compLitExpr ) {480 acceptNewScope( compLitExpr->get_result(), *this );481 maybeAccept( compLitExpr->get_type(), *this );482 maybeAccept( compLitExpr->get_initializer(), *this );483 }484 485 476 void Indexer::visit( UntypedValofExpr *valofExpr ) { 486 477 acceptNewScope( valofExpr->get_result(), *this ); 487 478 maybeAccept( valofExpr->get_body(), *this ); 488 }489 490 void Indexer::visit( RangeExpr *rangeExpr ) {491 maybeAccept( rangeExpr->get_low(), *this );492 maybeAccept( rangeExpr->get_high(), *this );493 }494 495 void Indexer::visit( UntypedTupleExpr *tupleExpr ) {496 acceptNewScope( tupleExpr->get_result(), *this );497 acceptAll( tupleExpr->get_exprs(), *this );498 }499 500 void Indexer::visit( TupleExpr *tupleExpr ) {501 acceptNewScope( tupleExpr->get_result(), *this );502 acceptAll( tupleExpr->get_exprs(), *this );503 }504 505 void Indexer::visit( TupleIndexExpr *tupleExpr ) {506 acceptNewScope( tupleExpr->get_result(), *this );507 maybeAccept( tupleExpr->get_tuple(), *this );508 }509 510 void Indexer::visit( MemberTupleExpr *tupleExpr ) {511 acceptNewScope( tupleExpr->get_result(), *this );512 maybeAccept( tupleExpr->get_member(), *this );513 maybeAccept( tupleExpr->get_aggregate(), *this );514 }515 516 void Indexer::visit( TupleAssignExpr *tupleExpr ) {517 acceptNewScope( tupleExpr->get_result(), *this );518 maybeAccept( tupleExpr->get_stmtExpr(), *this );519 }520 521 void Indexer::visit( StmtExpr *stmtExpr ) {522 acceptNewScope( stmtExpr->get_result(), *this );523 maybeAccept( stmtExpr->get_statements(), *this );524 acceptAll( stmtExpr->get_returnDecls(), *this );525 acceptAll( stmtExpr->get_dtors(), *this );526 }527 528 void Indexer::visit( UniqueExpr *uniqueExpr ) {529 acceptNewScope( uniqueExpr->get_result(), *this );530 maybeAccept( uniqueExpr->get_expr(), *this );531 479 } 532 480 -
src/SymTab/Indexer.h
r2162c2c rbb82c03 66 66 virtual void visit( TypeExpr *typeExpr ); 67 67 virtual void visit( AsmExpr *asmExpr ); 68 virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );69 virtual void visit( ConstructorExpr * ctorExpr );70 virtual void visit( CompoundLiteralExpr *compLitExpr );71 68 virtual void visit( UntypedValofExpr *valofExpr ); 72 virtual void visit( RangeExpr *rangeExpr );73 virtual void visit( UntypedTupleExpr *tupleExpr );74 69 virtual void visit( TupleExpr *tupleExpr ); 75 virtual void visit( TupleIndexExpr *tupleExpr );76 virtual void visit( MemberTupleExpr *tupleExpr );77 70 virtual void visit( TupleAssignExpr *tupleExpr ); 78 virtual void visit( StmtExpr * stmtExpr );79 virtual void visit( UniqueExpr * uniqueExpr );80 71 81 72 virtual void visit( TraitInstType *contextInst ); -
src/SymTab/Mangler.cc
r2162c2c rbb82c03 214 214 mangleName << "f"; 215 215 break; 216 case TypeDecl::Ttype:217 mangleName << "tVARGS";218 break;219 default:220 assert( false );221 216 } // switch 222 217 mangleName << numStream.str(); … … 261 256 if ( ! type->get_forall().empty() ) { 262 257 std::list< std::string > assertionNames; 263 int tcount = 0, dcount = 0, fcount = 0 , vcount = 0;258 int tcount = 0, dcount = 0, fcount = 0; 264 259 mangleName << "A"; 265 260 for ( Type::ForallList::iterator i = type->get_forall().begin(); i != type->get_forall().end(); ++i ) { … … 274 269 fcount++; 275 270 break; 276 case TypeDecl::Ttype:277 vcount++;278 break;279 default:280 assert( false );281 271 } // switch 282 272 varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() ); … … 290 280 } // for 291 281 } // for 292 mangleName << tcount << "_" << dcount << "_" << fcount << "_" << vcount << "_";282 mangleName << tcount << "_" << dcount << "_" << fcount << "_"; 293 283 std::copy( assertionNames.begin(), assertionNames.end(), std::ostream_iterator< std::string >( mangleName, "" ) ); 294 284 mangleName << "_"; -
src/SynTree/ApplicationExpr.cc
r2162c2c rbb82c03 24 24 25 25 ParamEntry::ParamEntry( const ParamEntry &other ) : 26 decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) ) , inferParams( new InferredParams( *other.inferParams ) ){26 decl( other.decl ), actualType( maybeClone( other.actualType ) ), formalType( maybeClone( other.formalType ) ), expr( maybeClone( other.expr ) ) { 27 27 } 28 28 … … 34 34 formalType = maybeClone( other.formalType ); 35 35 expr = maybeClone( other.expr ); 36 *inferParams = *other.inferParams;37 36 return *this; 38 37 } … … 63 62 } 64 63 65 void printInferParams( const InferredParams & inferParams, std::ostream &os, int indent, int level ) {66 if ( ! inferParams.empty() ) {67 os << std::string(indent, ' ') << "with inferred parameters " << level << ":" << std::endl;68 for ( InferredParams::const_iterator i = inferParams.begin(); i != inferParams.end(); ++i ) {69 os << std::string(indent+2, ' ');70 Declaration::declFromId( i->second.decl )->printShort( os, indent+2 );71 os << std::endl;72 printInferParams( *i->second.inferParams, os, indent+2, level+1 );73 } // for74 } // if75 }76 77 64 void ApplicationExpr::print( std::ostream &os, int indent ) const { 78 65 os << "Application of" << std::endl << std::string(indent+2, ' '); … … 82 69 printAll( args, os, indent+2 ); 83 70 } // if 84 printInferParams( inferParams, os, indent+2, 0 ); 71 if ( ! inferParams.empty() ) { 72 os << std::string(indent, ' ') << "with inferred parameters:" << std::endl; 73 for ( InferredParams::const_iterator i = inferParams.begin(); i != inferParams.end(); ++i ) { 74 os << std::string(indent+2, ' '); 75 Declaration::declFromId( i->second.decl )->printShort( os, indent+2 ); 76 os << std::endl; 77 } // for 78 } // if 85 79 Expression::print( os, indent ); 86 80 } -
src/SynTree/Declaration.cc
r2162c2c rbb82c03 57 57 58 58 std::ostream & operator<<( std::ostream & out, const Declaration * decl ) { 59 if ( decl ){ 60 decl->print( out ); 61 } else { 62 out << "nullptr"; 63 } 59 decl->print( out ); 64 60 return out; 65 61 } -
src/SynTree/Declaration.h
r2162c2c rbb82c03 179 179 typedef NamedTypeDecl Parent; 180 180 public: 181 enum Kind { Any, Dtype, Ftype , Ttype};181 enum Kind { Any, Dtype, Ftype }; 182 182 /// Data extracted from a type decl 183 183 struct Data { -
src/SynTree/Expression.cc
r2162c2c rbb82c03 672 672 673 673 std::ostream & operator<<( std::ostream & out, const Expression * expr ) { 674 if ( expr ) { 675 expr->print( out ); 676 } else { 677 out << "nullptr"; 678 } 674 expr->print( out ); 679 675 return out; 680 676 } -
src/SynTree/Expression.h
r2162c2c rbb82c03 54 54 }; 55 55 56 struct ParamEntry;57 typedef std::map< UniqueId, ParamEntry > InferredParams;58 59 56 /// ParamEntry contains the i.d. of a declaration and a type that is derived from that declaration, 60 57 /// but subject to decay-to-pointer and type parameter renaming 61 58 struct ParamEntry { 62 ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) , inferParams( new InferredParams ){}63 ParamEntry( UniqueId decl, Type *actualType, Type *formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ) , inferParams( new InferredParams ){}59 ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) {} 60 ParamEntry( UniqueId decl, Type *actualType, Type *formalType, Expression* expr ): decl( decl ), actualType( actualType ), formalType( formalType ), expr( expr ) {} 64 61 ParamEntry( const ParamEntry &other ); 65 62 ~ParamEntry(); … … 70 67 Type *formalType; 71 68 Expression* expr; 72 std::unique_ptr< InferredParams > inferParams; 73 }; 69 }; 70 71 typedef std::map< UniqueId, ParamEntry > InferredParams; 74 72 75 73 /// ApplicationExpr represents the application of a function to a set of parameters. This is the result of running an … … 636 634 }; 637 635 638 /// UntypedTupleExpr represents a tuple expression ( [a, b, c] ) before resolution639 class UntypedTupleExpr : public Expression {640 public:641 UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname = nullptr );642 UntypedTupleExpr( const UntypedTupleExpr &other );643 virtual ~UntypedTupleExpr();644 645 std::list<Expression*>& get_exprs() { return exprs; }646 647 virtual UntypedTupleExpr *clone() const { return new UntypedTupleExpr( *this ); }648 virtual void accept( Visitor &v ) { v.visit( this ); }649 virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }650 virtual void print( std::ostream &os, int indent = 0 ) const;651 private:652 std::list<Expression*> exprs;653 };654 655 636 /// TupleExpr represents a tuple expression ( [a, b, c] ) 656 637 class TupleExpr : public Expression { 657 638 public: 658 TupleExpr( const std::list< Expression * > & exprs , Expression *_aname = nullptr );639 TupleExpr( const std::list< Expression * > & exprs = std::list< Expression * >(), Expression *_aname = nullptr ); 659 640 TupleExpr( const TupleExpr &other ); 660 641 virtual ~TupleExpr(); 661 642 643 void set_exprs( std::list<Expression*> newValue ) { exprs = newValue; } 662 644 std::list<Expression*>& get_exprs() { return exprs; } 663 645 -
src/SynTree/FunctionType.cc
r2162c2c rbb82c03 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // FunctionType.cc -- 7 // FunctionType.cc -- 8 8 // 9 9 // Author : Richard C. Bilson … … 19 19 #include "Declaration.h" 20 20 #include "Common/utility.h" 21 #include "Tuples/Tuples.h"22 21 23 22 FunctionType::FunctionType( const Type::Qualifiers &tq, bool isVarArgs ) : Type( tq ), isVarArgs( isVarArgs ) { … … 32 31 deleteAll( returnVals ); 33 32 deleteAll( parameters ); 34 }35 36 namespace {37 bool containsTtype( const std::list<DeclarationWithType * > & l ) {38 if ( ! l.empty() ) {39 return Tuples::isTtype( l.back()->get_type() );40 }41 return false;42 }43 }44 45 bool FunctionType::isTtype() const {46 return containsTtype( returnVals ) || containsTtype( parameters );47 33 } 48 34 -
src/SynTree/Mutator.cc
r2162c2c rbb82c03 23 23 #include "Constant.h" 24 24 #include "Common/utility.h" 25 #include "TypeSubstitution.h"26 25 27 26 Mutator::Mutator() {} … … 179 178 180 179 Expression *Mutator::mutate( ApplicationExpr *applicationExpr ) { 181 applicationExpr->set_env( maybeMutate( applicationExpr->get_env(), *this ) );182 180 applicationExpr->set_result( maybeMutate( applicationExpr->get_result(), *this ) ); 183 181 applicationExpr->set_function( maybeMutate( applicationExpr->get_function(), *this ) ); … … 187 185 188 186 Expression *Mutator::mutate( UntypedExpr *untypedExpr ) { 189 untypedExpr->set_env( maybeMutate( untypedExpr->get_env(), *this ) );190 187 untypedExpr->set_result( maybeMutate( untypedExpr->get_result(), *this ) ); 191 188 mutateAll( untypedExpr->get_args(), *this ); … … 194 191 195 192 Expression *Mutator::mutate( NameExpr *nameExpr ) { 196 nameExpr->set_env( maybeMutate( nameExpr->get_env(), *this ) );197 193 nameExpr->set_result( maybeMutate( nameExpr->get_result(), *this ) ); 198 194 return nameExpr; … … 200 196 201 197 Expression *Mutator::mutate( AddressExpr *addressExpr ) { 202 addressExpr->set_env( maybeMutate( addressExpr->get_env(), *this ) );203 198 addressExpr->set_result( maybeMutate( addressExpr->get_result(), *this ) ); 204 199 addressExpr->set_arg( maybeMutate( addressExpr->get_arg(), *this ) ); … … 207 202 208 203 Expression *Mutator::mutate( LabelAddressExpr *labelAddressExpr ) { 209 labelAddressExpr->set_env( maybeMutate( labelAddressExpr->get_env(), *this ) );210 204 labelAddressExpr->set_result( maybeMutate( labelAddressExpr->get_result(), *this ) ); 211 205 labelAddressExpr->set_arg( maybeMutate( labelAddressExpr->get_arg(), *this ) ); … … 214 208 215 209 Expression *Mutator::mutate( CastExpr *castExpr ) { 216 castExpr->set_env( maybeMutate( castExpr->get_env(), *this ) );217 210 castExpr->set_result( maybeMutate( castExpr->get_result(), *this ) ); 218 211 castExpr->set_arg( maybeMutate( castExpr->get_arg(), *this ) ); … … 221 214 222 215 Expression *Mutator::mutate( UntypedMemberExpr *memberExpr ) { 223 memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );224 216 memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) ); 225 217 memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) ); … … 229 221 230 222 Expression *Mutator::mutate( MemberExpr *memberExpr ) { 231 memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );232 223 memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) ); 233 224 memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) ); … … 236 227 237 228 Expression *Mutator::mutate( VariableExpr *variableExpr ) { 238 variableExpr->set_env( maybeMutate( variableExpr->get_env(), *this ) );239 229 variableExpr->set_result( maybeMutate( variableExpr->get_result(), *this ) ); 240 230 return variableExpr; … … 242 232 243 233 Expression *Mutator::mutate( ConstantExpr *constantExpr ) { 244 constantExpr->set_env( maybeMutate( constantExpr->get_env(), *this ) );245 234 constantExpr->set_result( maybeMutate( constantExpr->get_result(), *this ) ); 246 235 // maybeMutate( constantExpr->get_constant(), *this ) … … 249 238 250 239 Expression *Mutator::mutate( SizeofExpr *sizeofExpr ) { 251 sizeofExpr->set_env( maybeMutate( sizeofExpr->get_env(), *this ) );252 240 sizeofExpr->set_result( maybeMutate( sizeofExpr->get_result(), *this ) ); 253 241 if ( sizeofExpr->get_isType() ) { … … 260 248 261 249 Expression *Mutator::mutate( AlignofExpr *alignofExpr ) { 262 alignofExpr->set_env( maybeMutate( alignofExpr->get_env(), *this ) );263 250 alignofExpr->set_result( maybeMutate( alignofExpr->get_result(), *this ) ); 264 251 if ( alignofExpr->get_isType() ) { … … 271 258 272 259 Expression *Mutator::mutate( UntypedOffsetofExpr *offsetofExpr ) { 273 offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );274 260 offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) ); 275 261 offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) ); … … 278 264 279 265 Expression *Mutator::mutate( OffsetofExpr *offsetofExpr ) { 280 offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );281 266 offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) ); 282 267 offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) ); … … 286 271 287 272 Expression *Mutator::mutate( OffsetPackExpr *offsetPackExpr ) { 288 offsetPackExpr->set_env( maybeMutate( offsetPackExpr->get_env(), *this ) );289 273 offsetPackExpr->set_result( maybeMutate( offsetPackExpr->get_result(), *this ) ); 290 274 offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) ); … … 293 277 294 278 Expression *Mutator::mutate( AttrExpr *attrExpr ) { 295 attrExpr->set_env( maybeMutate( attrExpr->get_env(), *this ) );296 279 attrExpr->set_result( maybeMutate( attrExpr->get_result(), *this ) ); 297 280 if ( attrExpr->get_isType() ) { … … 304 287 305 288 Expression *Mutator::mutate( LogicalExpr *logicalExpr ) { 306 logicalExpr->set_env( maybeMutate( logicalExpr->get_env(), *this ) );307 289 logicalExpr->set_result( maybeMutate( logicalExpr->get_result(), *this ) ); 308 290 logicalExpr->set_arg1( maybeMutate( logicalExpr->get_arg1(), *this ) ); … … 312 294 313 295 Expression *Mutator::mutate( ConditionalExpr *conditionalExpr ) { 314 conditionalExpr->set_env( maybeMutate( conditionalExpr->get_env(), *this ) );315 296 conditionalExpr->set_result( maybeMutate( conditionalExpr->get_result(), *this ) ); 316 297 conditionalExpr->set_arg1( maybeMutate( conditionalExpr->get_arg1(), *this ) ); … … 321 302 322 303 Expression *Mutator::mutate( CommaExpr *commaExpr ) { 323 commaExpr->set_env( maybeMutate( commaExpr->get_env(), *this ) );324 304 commaExpr->set_result( maybeMutate( commaExpr->get_result(), *this ) ); 325 305 commaExpr->set_arg1( maybeMutate( commaExpr->get_arg1(), *this ) ); … … 329 309 330 310 Expression *Mutator::mutate( TypeExpr *typeExpr ) { 331 typeExpr->set_env( maybeMutate( typeExpr->get_env(), *this ) );332 311 typeExpr->set_result( maybeMutate( typeExpr->get_result(), *this ) ); 333 312 typeExpr->set_type( maybeMutate( typeExpr->get_type(), *this ) ); … … 336 315 337 316 Expression *Mutator::mutate( AsmExpr *asmExpr ) { 338 asmExpr->set_env( maybeMutate( asmExpr->get_env(), *this ) );339 317 asmExpr->set_inout( maybeMutate( asmExpr->get_inout(), *this ) ); 340 318 asmExpr->set_constraint( maybeMutate( asmExpr->get_constraint(), *this ) ); … … 344 322 345 323 Expression* Mutator::mutate( ImplicitCopyCtorExpr *impCpCtorExpr ) { 346 impCpCtorExpr->set_env( maybeMutate( impCpCtorExpr->get_env(), *this ) );347 impCpCtorExpr->set_result( maybeMutate( impCpCtorExpr->get_result(), *this ) );348 324 impCpCtorExpr->set_callExpr( maybeMutate( impCpCtorExpr->get_callExpr(), *this ) ); 349 325 mutateAll( impCpCtorExpr->get_tempDecls(), *this ); … … 354 330 355 331 Expression* Mutator::mutate( ConstructorExpr *ctorExpr ) { 356 ctorExpr->set_env( maybeMutate( ctorExpr->get_env(), *this ) );357 332 ctorExpr->set_result( maybeMutate( ctorExpr->get_result(), *this ) ); 358 333 ctorExpr->set_callExpr( maybeMutate( ctorExpr->get_callExpr(), *this ) ); … … 361 336 362 337 Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) { 363 compLitExpr->set_env( maybeMutate( compLitExpr->get_env(), *this ) );364 338 compLitExpr->set_result( maybeMutate( compLitExpr->get_result(), *this ) ); 365 339 compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) ); … … 369 343 370 344 Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) { 371 valofExpr->set_env( maybeMutate( valofExpr->get_env(), *this ) );372 345 valofExpr->set_result( maybeMutate( valofExpr->get_result(), *this ) ); 373 346 return valofExpr; … … 375 348 376 349 Expression *Mutator::mutate( RangeExpr *rangeExpr ) { 377 rangeExpr->set_env( maybeMutate( rangeExpr->get_env(), *this ) );378 350 rangeExpr->set_low( maybeMutate( rangeExpr->get_low(), *this ) ); 379 351 rangeExpr->set_high( maybeMutate( rangeExpr->get_high(), *this ) ); … … 381 353 } 382 354 383 Expression *Mutator::mutate( UntypedTupleExpr *tupleExpr ) { 384 tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) ); 355 Expression *Mutator::mutate( TupleExpr *tupleExpr ) { 385 356 tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) ); 386 357 mutateAll( tupleExpr->get_exprs(), *this ); … … 388 359 } 389 360 390 Expression *Mutator::mutate( TupleExpr *tupleExpr ) {391 tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );392 tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );393 mutateAll( tupleExpr->get_exprs(), *this );394 return tupleExpr;395 }396 397 361 Expression *Mutator::mutate( TupleIndexExpr *tupleExpr ) { 398 tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );399 362 tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) ); 400 363 tupleExpr->set_tuple( maybeMutate( tupleExpr->get_tuple(), *this ) ); … … 403 366 404 367 Expression *Mutator::mutate( MemberTupleExpr *tupleExpr ) { 405 tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );406 368 tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) ); 407 369 tupleExpr->set_member( maybeMutate( tupleExpr->get_member(), *this ) ); … … 411 373 412 374 Expression *Mutator::mutate( TupleAssignExpr *assignExpr ) { 413 assignExpr->set_env( maybeMutate( assignExpr->get_env(), *this ) );414 375 assignExpr->set_result( maybeMutate( assignExpr->get_result(), *this ) ); 415 376 assignExpr->set_stmtExpr( maybeMutate( assignExpr->get_stmtExpr(), *this ) ); … … 418 379 419 380 Expression *Mutator::mutate( StmtExpr *stmtExpr ) { 420 stmtExpr->set_env( maybeMutate( stmtExpr->get_env(), *this ) );421 381 stmtExpr->set_result( maybeMutate( stmtExpr->get_result(), *this ) ); 422 382 stmtExpr->set_statements( maybeMutate( stmtExpr->get_statements(), *this ) ); … … 427 387 428 388 Expression *Mutator::mutate( UniqueExpr *uniqueExpr ) { 429 uniqueExpr->set_env( maybeMutate( uniqueExpr->get_env(), *this ) );430 389 uniqueExpr->set_result( maybeMutate( uniqueExpr->get_result(), *this ) ); 431 390 uniqueExpr->set_expr( maybeMutate( uniqueExpr->get_expr(), *this ) ); -
src/SynTree/Mutator.h
r2162c2c rbb82c03 78 78 virtual Expression* mutate( UntypedValofExpr *valofExpr ); 79 79 virtual Expression* mutate( RangeExpr *rangeExpr ); 80 virtual Expression* mutate( UntypedTupleExpr *tupleExpr );81 80 virtual Expression* mutate( TupleExpr *tupleExpr ); 82 81 virtual Expression* mutate( TupleIndexExpr *tupleExpr ); -
src/SynTree/Statement.cc
r2162c2c rbb82c03 388 388 389 389 std::ostream & operator<<( std::ostream & out, const Statement * statement ) { 390 if ( statement ) { 391 statement->print( out ); 392 } else { 393 out << "nullptr"; 394 } 390 statement->print( out ); 395 391 return out; 396 392 } -
src/SynTree/SynTree.h
r2162c2c rbb82c03 83 83 class UntypedValofExpr; 84 84 class RangeExpr; 85 class UntypedTupleExpr;86 85 class TupleExpr; 87 86 class TupleIndexExpr; -
src/SynTree/TupleExpr.cc
r2162c2c rbb82c03 21 21 #include "VarExprReplacer.h" 22 22 23 UntypedTupleExpr::UntypedTupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) {24 }25 26 UntypedTupleExpr::UntypedTupleExpr( const UntypedTupleExpr &other ) : Expression( other ) {27 cloneAll( other.exprs, exprs );28 }29 30 UntypedTupleExpr::~UntypedTupleExpr() {31 deleteAll( exprs );32 }33 34 void UntypedTupleExpr::print( std::ostream &os, int indent ) const {35 os << "Untyped Tuple:" << std::endl;36 printAll( exprs, os, indent+2 );37 Expression::print( os, indent );38 }39 40 23 TupleExpr::TupleExpr( const std::list< Expression * > & exprs, Expression *_aname ) : Expression( _aname ), exprs( exprs ) { 41 set_result( Tuples::makeTupleType( exprs ) ); 24 if ( ! exprs.empty() ) { 25 if ( std::all_of( exprs.begin(), exprs.end(), [](Expression * expr) { return expr->get_result(); } ) ) { 26 set_result( Tuples::makeTupleType( exprs ) ); 27 } 28 } 42 29 } 43 30 … … 58 45 TupleIndexExpr::TupleIndexExpr( Expression * tuple, unsigned int index ) : tuple( tuple ), index( index ) { 59 46 TupleType * type = safe_dynamic_cast< TupleType * >( tuple->get_result() ); 60 assert f( type->size() > index, "TupleIndexExpr index out of bounds: tuple size %d, requested index %d in expr %s", type->size(), index, toString( tuple ).c_str());47 assert( type->size() > index ); 61 48 set_result( (*std::next( type->get_types().begin(), index ))->clone() ); 62 49 get_result()->set_isLvalue( type->get_isLvalue() ); -
src/SynTree/Type.cc
r2162c2c rbb82c03 85 85 86 86 std::ostream & operator<<( std::ostream & out, const Type * type ) { 87 if ( type ) { 88 type->print( out ); 89 } else { 90 out << "nullptr"; 91 } 87 type->print( out ); 92 88 return out; 93 89 } -
src/SynTree/Type.h
r2162c2c rbb82c03 204 204 std::list<DeclarationWithType*> & get_returnVals() { return returnVals; } 205 205 std::list<DeclarationWithType*> & get_parameters() { return parameters; } 206 bool get_isVarArgs() const{ return isVarArgs; }206 bool get_isVarArgs() { return isVarArgs; } 207 207 void set_isVarArgs( bool newValue ) { isVarArgs = newValue; } 208 209 bool isTtype() const;210 208 211 209 virtual FunctionType *clone() const { return new FunctionType( *this ); } -
src/SynTree/TypeDecl.cc
r2162c2c rbb82c03 18 18 #include "Common/utility.h" 19 19 20 TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ), sized( kind == Any || kind == Ttype) {20 TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ), sized( kind == Any ) { 21 21 } 22 22 … … 25 25 26 26 std::string TypeDecl::typeString() const { 27 static const char *kindNames[] = { "type", "incomplete type", "function type" , "tuple type"};27 static const char *kindNames[] = { "type", "incomplete type", "function type" }; 28 28 return kindNames[ kind ]; 29 29 } -
src/SynTree/TypeSubstitution.cc
r2162c2c rbb82c03 231 231 } 232 232 233 TypeSubstitution * TypeSubstitution::acceptMutator( Mutator & mutator ) {234 for ( auto & p : typeEnv ) {235 p.second = maybeMutate( p.second, mutator );236 }237 for ( auto & p : varEnv ) {238 p.second = maybeMutate( p.second, mutator );239 }240 return this;241 }242 243 233 void TypeSubstitution::print( std::ostream &os, int indent ) const { 244 234 os << std::string( indent, ' ' ) << "Types:" << std::endl; -
src/SynTree/TypeSubstitution.h
r2162c2c rbb82c03 53 53 54 54 void normalize(); 55 56 TypeSubstitution * acceptMutator( Mutator & mutator );57 55 58 56 void print( std::ostream &os, int indent = 0 ) const; -
src/SynTree/Visitor.cc
r2162c2c rbb82c03 273 273 274 274 void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) { 275 maybeAccept( impCpCtorExpr->get_result(), *this );276 275 maybeAccept( impCpCtorExpr->get_callExpr(), *this ); 277 276 acceptAll( impCpCtorExpr->get_tempDecls(), *this ); … … 299 298 maybeAccept( rangeExpr->get_low(), *this ); 300 299 maybeAccept( rangeExpr->get_high(), *this ); 301 }302 303 void Visitor::visit( UntypedTupleExpr *tupleExpr ) {304 maybeAccept( tupleExpr->get_result(), *this );305 acceptAll( tupleExpr->get_exprs(), *this );306 300 } 307 301 -
src/SynTree/Visitor.h
r2162c2c rbb82c03 78 78 virtual void visit( UntypedValofExpr *valofExpr ); 79 79 virtual void visit( RangeExpr *rangeExpr ); 80 virtual void visit( UntypedTupleExpr *tupleExpr );81 80 virtual void visit( TupleExpr *tupleExpr ); 82 81 virtual void visit( TupleIndexExpr *tupleExpr ); -
src/Tuples/Explode.h
r2162c2c rbb82c03 33 33 /// helper function used by explode 34 34 template< typename OutputIterator > 35 void explodeUnique( Expression * expr, const ResolvExpr::Alternative & alt, const SymTab::Indexer & indexer, OutputIterator out, bool isTupleAssign ) { 36 if ( isTupleAssign ) { 37 // tuple assignment needs AddressExprs to be recursively exploded to easily get at all of the components 38 if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( expr ) ) { 39 ResolvExpr::AltList alts; 40 explodeUnique( addrExpr->get_arg(), alt, indexer, back_inserter( alts ), isTupleAssign ); 41 for ( ResolvExpr::Alternative & alt : alts ) { 42 // distribute '&' over all components 43 alt.expr = distributeAddr( alt.expr ); 44 *out++ = alt; 45 } 46 // in tuple assignment, still need to handle the other cases, but only if not already handled here (don't want to output too many alternatives) 47 return; 35 void explodeUnique( Expression * expr, const ResolvExpr::Alternative & alt, const SymTab::Indexer & indexer, OutputIterator out ) { 36 Type * res = expr->get_result(); 37 if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( expr ) ) { 38 ResolvExpr::AltList alts; 39 explodeUnique( addrExpr->get_arg(), alt, indexer, back_inserter( alts ) ); 40 for ( ResolvExpr::Alternative & alt : alts ) { 41 // distribute '&' over all components 42 alt.expr = distributeAddr( alt.expr ); 43 *out++ = alt; 48 44 } 49 } 50 Type * res = expr->get_result(); 51 if ( TupleType * tupleType = dynamic_cast< TupleType * > ( res ) ) { 45 } else if ( TupleType * tupleType = dynamic_cast< TupleType * > ( res ) ) { 52 46 if ( TupleExpr * tupleExpr = dynamic_cast< TupleExpr * >( expr ) ) { 53 47 // can open tuple expr and dump its exploded components 54 48 for ( Expression * expr : tupleExpr->get_exprs() ) { 55 explodeUnique( expr, alt, indexer, out , isTupleAssign);49 explodeUnique( expr, alt, indexer, out ); 56 50 } 57 51 } else { … … 64 58 for ( unsigned int i = 0; i < tupleType->size(); i++ ) { 65 59 TupleIndexExpr * idx = new TupleIndexExpr( arg->clone(), i ); 66 explodeUnique( idx, alt, indexer, out , isTupleAssign);60 explodeUnique( idx, alt, indexer, out ); 67 61 delete idx; 68 62 } … … 77 71 /// expands a tuple-valued alternative into multiple alternatives, each with a non-tuple-type 78 72 template< typename OutputIterator > 79 void explode( const ResolvExpr::Alternative &alt, const SymTab::Indexer & indexer, OutputIterator out , bool isTupleAssign = false) {80 explodeUnique( alt.expr, alt, indexer, out , isTupleAssign);73 void explode( const ResolvExpr::Alternative &alt, const SymTab::Indexer & indexer, OutputIterator out ) { 74 explodeUnique( alt.expr, alt, indexer, out ); 81 75 } 82 76 83 77 // explode list of alternatives 84 78 template< typename AltIterator, typename OutputIterator > 85 void explode( AltIterator altBegin, AltIterator altEnd, const SymTab::Indexer & indexer, OutputIterator out , bool isTupleAssign = false) {79 void explode( AltIterator altBegin, AltIterator altEnd, const SymTab::Indexer & indexer, OutputIterator out ) { 86 80 for ( ; altBegin != altEnd; ++altBegin ) { 87 explode( *altBegin, indexer, out , isTupleAssign);81 explode( *altBegin, indexer, out ); 88 82 } 89 83 } 90 84 91 85 template< typename OutputIterator > 92 void explode( const ResolvExpr::AltList & alts, const SymTab::Indexer & indexer, OutputIterator out , bool isTupleAssign = false) {93 explode( alts.begin(), alts.end(), indexer, out , isTupleAssign);86 void explode( const ResolvExpr::AltList & alts, const SymTab::Indexer & indexer, OutputIterator out ) { 87 explode( alts.begin(), alts.end(), indexer, out ); 94 88 } 95 89 } // namespace Tuples -
src/Tuples/TupleAssignment.cc
r2162c2c rbb82c03 73 73 }; 74 74 75 /// true if expr is an expression of tuple type 75 /// true if expr is an expression of tuple type, i.e. a tuple expression, tuple variable, or MRV (multiple-return-value) function 76 76 bool isTuple( Expression *expr ) { 77 77 if ( ! expr ) return false; 78 78 assert( expr->has_result() ); 79 return dynamic_cast< TupleType * >( expr->get_result() );79 return dynamic_cast<TupleExpr *>(expr) || expr->get_result()->size() > 1; 80 80 } 81 81 … … 142 142 matcher->match( new_assigns ); 143 143 144 if ( ! matcher->lhs.empty() || ! matcher->rhs.empty() ) { 145 // if both lhs and rhs are empty then this is the empty tuple case, wherein it's okay for new_assigns to be empty. 146 // if not the empty tuple case, return early so that no new alternatives are generated. 147 if ( new_assigns.empty() ) return; 148 } 144 if ( new_assigns.empty() ) return; 149 145 ResolvExpr::AltList current; 150 146 // now resolve new assignments … … 190 186 191 187 // explode the lhs so that each field of the tuple-valued-expr is assigned. 192 explode( lhsAlt, spotter.currentFinder.get_indexer(), back_inserter(lhs) , true);188 explode( lhsAlt, spotter.currentFinder.get_indexer(), back_inserter(lhs) ); 193 189 194 190 // and finally, re-add the cast to each lhs expr, so that qualified tuple fields can be constructed … … 215 211 TupleAssignSpotter::MultipleAssignMatcher::MultipleAssignMatcher( TupleAssignSpotter &spotter, const ResolvExpr::AltList & alts ) : Matcher( spotter, alts ) { 216 212 // explode the rhs so that each field of the tuple-valued-expr is assigned. 217 explode( std::next(alts.begin(), 1), alts.end(), spotter.currentFinder.get_indexer(), back_inserter(rhs) , true);213 explode( std::next(alts.begin(), 1), alts.end(), spotter.currentFinder.get_indexer(), back_inserter(rhs) ); 218 214 } 219 215 … … 252 248 static UniqueName lhsNamer( "__massassign_L" ); 253 249 static UniqueName rhsNamer( "__massassign_R" ); 254 // empty tuple case falls into this matcher, hence the second part of the assert 255 assert( (! lhs.empty() && rhs.size() <= 1) || (lhs.empty() && rhs.empty()) ); 250 assert ( ! lhs.empty() && rhs.size() <= 1); 256 251 257 252 ObjectDecl * rtmp = rhs.size() == 1 ? newObject( rhsNamer, rhs.front().expr ) : nullptr; 258 253 for ( ResolvExpr::Alternative & lhsAlt : lhs ) { 259 // create a temporary object for each value in the lhs and create a call involving the rhs260 254 ObjectDecl * ltmp = newObject( lhsNamer, lhsAlt.expr ); 261 255 out.push_back( createFunc( spotter.fname, ltmp, rtmp ) ); … … 269 263 static UniqueName rhsNamer( "__multassign_R" ); 270 264 265 // xxx - need more complicated matching? 271 266 if ( lhs.size() == rhs.size() ) { 272 // produce a new temporary object for each value in the lhs and rhs and pairwise create the calls273 267 std::list< ObjectDecl * > ltmp; 274 268 std::list< ObjectDecl * > rtmp; -
src/Tuples/TupleExpansion.cc
r2162c2c rbb82c03 144 144 145 145 Expression * MemberTupleExpander::mutate( UntypedMemberExpr * memberExpr ) { 146 if ( UntypedTupleExpr * tupleExpr = dynamic_cast< UntypedTupleExpr * > ( memberExpr->get_member() ) ) {146 if ( TupleExpr * tupleExpr = dynamic_cast< TupleExpr * > ( memberExpr->get_member() ) ) { 147 147 Expression * aggr = memberExpr->get_aggregate()->clone()->acceptMutator( *this ); 148 148 // aggregate expressions which might be impure must be wrapped in unique expressions … … 225 225 decl->get_parameters().push_back( tyParam ); 226 226 } 227 if ( tupleType->size() == 0 ) {228 // empty structs are not standard C. Add a dummy field to empty tuples to silence warnings when a compound literal Tuple0 is created.229 decl->get_members().push_back( new ObjectDecl( "dummy", DeclarationNode::NoStorageClass, LinkageSpec::C, nullptr, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nullptr ) );230 }231 227 typeMap[mangleName] = decl; 232 228 addDeclaration( decl ); … … 319 315 qualifiers &= type->get_qualifiers(); 320 316 } // for 321 if ( exprs.empty() ) qualifiers = Type::Qualifiers();322 317 return tupleType; 323 }324 325 TypeInstType * isTtype( Type * type ) {326 if ( TypeInstType * inst = dynamic_cast< TypeInstType * >( type ) ) {327 if ( inst->get_baseType()->get_kind() == TypeDecl::Ttype ) {328 return inst;329 }330 }331 return nullptr;332 318 } 333 319 -
src/Tuples/Tuples.h
r2162c2c rbb82c03 42 42 Type * makeTupleType( const std::list< Expression * > & exprs ); 43 43 44 /// returns a TypeInstType if `type` is a ttype, nullptr otherwise45 TypeInstType * isTtype( Type * type );46 47 44 /// returns true if the expression may contain side-effects. 48 45 bool maybeImpure( Expression * expr ); -
src/libcfa/math.c
r2162c2c rbb82c03 1 // 1 // 2 2 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo 3 3 // 4 4 // The contents of this file are covered under the licence agreement in the 5 5 // file "LICENCE" distributed with Cforall. 6 // 7 // math.c -- 8 // 6 // 7 // math.c -- 8 // 9 9 // Author : Peter A. Buhr 10 10 // Created On : Tue Apr 19 22:23:08 2016 … … 12 12 // Last Modified On : Sun Apr 24 08:52:31 2016 13 13 // Update Count : 75 14 // 14 // 15 15 16 16 #include "math" … … 34 34 long double remainder( long double x, long double y ) { return remainderl( x, y ); } 35 35 36 [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }36 // [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; } 37 37 float remquo( float x, float y, int *quo ) { return remquof( x, y, quo ); } 38 [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }39 [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }38 // [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; } 39 // [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; } 40 40 long double remquo( long double x, long double y, int *quo ) { return remquol( x, y, quo ); } 41 41 42 [ int, float ] div( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }42 // [ int, float ] div( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; } 43 43 float div( float x, float y, int *quo ) { return remquof( x, y, quo ); } 44 [ int, double ] div( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }45 [ int, long double ] div( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }44 // [ int, double ] div( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; } 45 // [ int, long double ] div( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; } 46 46 long double div( long double x, long double y, int *quo ) { return remquol( x, y, quo ); } 47 47 … … 278 278 long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); } 279 279 280 [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }280 // [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; } 281 281 float modf( float x, float *i ) { return modff( x, i ); } 282 [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }283 [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }282 // [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; } 283 // [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; } 284 284 long double modf( long double x, long double *i ) { return modfl( x, i ); } 285 285 -
src/libcfa/stdlib
r2162c2c rbb82c03 47 47 void free( void * ptr ); 48 48 } // extern "C" 49 50 forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );51 forall( dtype T | { void ^?{}(T *); } ) void delete( T * ptr );52 53 49 54 50 //--------------------------------------- -
src/libcfa/stdlib.c
r2162c2c rbb82c03 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // algorithm.c -- 7 // algorithm.c -- 8 8 // 9 9 // Author : Peter A. Buhr … … 78 78 } // posix_memalign 79 79 80 forall( otype T, ttype Params | { void ?{}(T *, Params); } )81 T * new( Params p ) {82 return ((T*)malloc()){ p };83 }84 85 forall( dtype T | { void ^?{}(T *); } )86 void delete( T * ptr ) {87 if ( ptr ) {88 ^ptr{};89 free( ptr );90 }91 }92 93 80 //--------------------------------------- 94 81 … … 154 141 if ( sscanf( ptr, "%Lf%Lfi", &re, &im ) == EOF ) {} 155 142 return re + im * _Complex_I; 156 } 143 } 157 144 158 145 int strto( const char * sptr, char ** eptr, int base ) { … … 226 213 //--------------------------------------- 227 214 228 forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } )229 [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; }215 // forall( otype T | { T ?/?( T, T ); T ?%?( T, T ); } ) 216 // [ T, T ] div( T t1, T t2 ) { return [ t1 / t2, t1 % t2 ]; } 230 217 231 218 //--------------------------------------- -
src/main.cc
r2162c2c rbb82c03 69 69 symtabp = false, 70 70 treep = false, 71 tuplep = false,72 71 validp = false, 73 72 errorp = false, … … 267 266 OPTPRINT( "expandUniqueExpr" ); // xxx - is this the right place for this? want to expand ASAP so that subsequent passes don't need to worry about double-visiting a unique expr - needs to go after InitTweak::fix so that copy constructed return declarations are reused 268 267 Tuples::expandUniqueExpr( translationUnit ); 269 270 OPTPRINT( "convertSpecializations" ) // needs to happen before tuple types are expanded271 GenPoly::convertSpecializations( translationUnit );272 273 268 OPTPRINT( "expandTuples" ); // xxx - is this the right place for this? 274 269 Tuples::expandTuples( translationUnit ); 275 if ( tuplep ) {276 dump( translationUnit );277 return 0;278 }279 270 280 271 OPTPRINT("instantiateGenerics") … … 282 273 OPTPRINT( "copyParams" ); 283 274 GenPoly::copyParams( translationUnit ); 275 OPTPRINT( "convertSpecializations" ) 276 GenPoly::convertSpecializations( translationUnit ); 284 277 OPTPRINT( "convertLvalue" ) 285 278 GenPoly::convertLvalue( translationUnit ); … … 334 327 335 328 void parse_cmdline( int argc, char * argv[], const char *& filename ) { 336 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, TupleExpansion,Validate, };329 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, }; 337 330 338 331 static struct option long_opts[] = { … … 351 344 { "symbol", no_argument, 0, Symbol }, 352 345 { "tree", no_argument, 0, Tree }, 353 { "tuple-expansion", no_argument, 0, TupleExpansion },354 346 { "validate", no_argument, 0, Validate }, 355 347 { 0, 0, 0, 0 } … … 360 352 361 353 int c; 362 while ( (c = getopt_long( argc, argv, "abBcefglnpqrst TvyzD:F:", long_opts, &long_index )) != -1 ) {354 while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) { 363 355 switch ( c ) { 364 356 case Ast: … … 370 362 bresolvep = true; 371 363 break; 372 case 'B': // print before boxsteps364 case 'B': // print before resolver steps 373 365 bboxp = true; 374 366 break; … … 416 408 case 't': // build in tree 417 409 treep = true; 418 break;419 case TupleExpansion:420 case 'T': // print after tuple expansion421 tuplep = true;422 410 break; 423 411 case 'v': // dump AST after decl validation pass -
src/tests/avltree/avl.h
r2162c2c rbb82c03 19 19 forall(otype T | Comparable(T)) 20 20 int ?>?(T t1, T t2); 21 22 // xxx - unbound type variable problems when trying to use new instead of create23 // forall( otype T, ttype Params | { void ?{}(T *, Params); } ) T * new( Params p );24 21 25 22 forall(dtype T | { void ^?{}(T *); }) -
src/tests/avltree/avl0.c
r2162c2c rbb82c03 10 10 return t2 < t1; 11 11 } 12 13 forall(dtype T | { void ^?{}(T *); }) 14 void delete(T * x) { 15 if (x) { 16 ^?{}(x); 17 free(x); 18 } 19 }
Note:
See TracChangeset
for help on using the changeset viewer.