diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index 35e0035d3c..ed7b8a2178 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -208,8 +208,8 @@ namespace ICSharpCode.NRefactory.CSharp if (loc != null) result.AddChild (new CSharpTokenNode (Convert (loc [pos++]), 1), AttributeSection.Roles.LPar); - if (attr.PositionalArguments != null) { - foreach (var arg in attr.PositionalArguments) { + if (attr.PosArguments != null) { + foreach (var arg in attr.PosArguments) { var na = arg as NamedArgument; if (na != null) { var newArg = new NamedArgumentExpression (); @@ -1465,7 +1465,7 @@ namespace ICSharpCode.NRefactory.CSharp public override object Visit (StatementErrorExpression statementErrorExpression) { var result = new ExpressionStatement (); - var expr = statementErrorExpression.Expr.Accept (this) as Expression; + var expr = statementErrorExpression.Expression.Accept (this) as Expression; if (expr != null) result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression); return result; @@ -1849,14 +1849,14 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (tryCatchStatement.loc), "try".Length), TryCatchStatement.TryKeywordRole); if (tryCatchStatement.Block != null) result.AddChild ((BlockStatement)tryCatchStatement.Block.Accept (this), TryCatchStatement.TryBlockRole); - if (tryCatchStatement.Clauses != null) { - foreach (Catch ctch in tryCatchStatement.Clauses) { + if (tryCatchStatement.Specific != null) { + foreach (Catch ctch in tryCatchStatement.Specific) { result.AddChild (ConvertCatch (ctch), TryCatchStatement.CatchClauseRole); } } - /* if (tryCatchStatement. != null) + if (tryCatchStatement.General != null) result.AddChild (ConvertCatch (tryCatchStatement.General), TryCatchStatement.CatchClauseRole); - */ + return result; } @@ -1868,8 +1868,8 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (usingStatement.loc), "using".Length), UsingStatement.Roles.Keyword); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [0]), 1), UsingStatement.Roles.LPar); - if (usingStatement.Expr != null) - result.AddChild ((AstNode)usingStatement.Expr.Accept (this), UsingStatement.ResourceAcquisitionRole); + if (usingStatement.Expression != null) + result.AddChild ((AstNode)usingStatement.Expression.Accept (this), UsingStatement.ResourceAcquisitionRole); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [1]), 1), UsingStatement.Roles.RPar); @@ -1889,8 +1889,8 @@ namespace ICSharpCode.NRefactory.CSharp if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [0]), 1), ForeachStatement.Roles.LPar); - if (foreachStatement.TypeExpression != null) - result.AddChild (ConvertToType (foreachStatement.TypeExpression), ForeachStatement.Roles.Type); + if (foreachStatement.TypeExpr != null) + result.AddChild (ConvertToType (foreachStatement.TypeExpr), ForeachStatement.Roles.Type); if (foreachStatement.Variable != null) result.AddChild (Identifier.Create (foreachStatement.Variable.Name, Convert (foreachStatement.Variable.Location)), ForeachStatement.Roles.Identifier); @@ -2260,7 +2260,7 @@ namespace ICSharpCode.NRefactory.CSharp { var result = new BinaryOperatorExpression (); result.Operator = BinaryOperatorType.NullCoalescing; - result.AddChild ((Expression)nullCoalescingOperator.LeftExpression.Accept (this), BinaryOperatorExpression.LeftRole); + result.AddChild ((Expression)nullCoalescingOperator.Left.Accept (this), BinaryOperatorExpression.LeftRole); result.AddChild (new CSharpTokenNode (Convert (nullCoalescingOperator.Location), 2), BinaryOperatorExpression.OperatorRole); result.AddChild ((Expression)nullCoalescingOperator.Right.Accept (this), BinaryOperatorExpression.RightRole); return result; @@ -2489,8 +2489,8 @@ namespace ICSharpCode.NRefactory.CSharp { var result = new InvocationExpression (); var location = LocationsBag.GetLocations (invocationExpression); - if (invocationExpression.Exp != null) - result.AddChild ((Expression)invocationExpression.Exp.Accept (this), InvocationExpression.Roles.TargetExpression); + if (invocationExpression.Expression != null) + result.AddChild ((Expression)invocationExpression.Expression.Accept (this), InvocationExpression.Roles.TargetExpression); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), InvocationExpression.Roles.LPar); AddArguments (result, location, invocationExpression.Arguments); @@ -2796,7 +2796,7 @@ namespace ICSharpCode.NRefactory.CSharp result.AddChild (new CSharpTokenNode (Convert (sizeOfExpression.Location), "sizeof".Length), TypeOfExpression.Roles.Keyword); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), TypeOfExpression.Roles.LPar); - result.AddChild (ConvertToType (sizeOfExpression.TypeExpression), TypeOfExpression.Roles.Type); + result.AddChild (ConvertToType (sizeOfExpression.QueriedType), TypeOfExpression.Roles.Type); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location[1]), 1), TypeOfExpression.Roles.RPar); return result; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs index 722c3881b0..8e35e72ad2 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs @@ -885,8 +885,9 @@ namespace Mono.CSharp { public ParametersBlock Block; - public AnonymousMethodExpression (Location loc) + public AnonymousMethodExpression (bool isAsync, Location loc) { + this.IsAsync = isAsync; this.loc = loc; this.compatibles = new Dictionary (); } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs index 2e25ab7ca4..9e06715ed6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs @@ -1090,7 +1090,8 @@ namespace Mono.CSharp public abstract bool HasObjectType (T assembly); protected abstract string[] GetDefaultReferences (); - public abstract T LoadAssemblyFile (string fileName, bool isImplicitReference); + public abstract T LoadAssemblyFile (string fileName); + public abstract T LoadAssemblyDefault (string assembly); public abstract void LoadReferences (ModuleContainer module); protected void Error_FileNotFound (string fileName) @@ -1127,14 +1128,14 @@ namespace Mono.CSharp // Load mscorlib.dll as the first // if (module.Compiler.Settings.StdLib) { - corlib_assembly = LoadAssemblyFile ("mscorlib.dll", true); + corlib_assembly = LoadAssemblyDefault ("mscorlib.dll"); } else { corlib_assembly = default (T); } T a; foreach (string r in module.Compiler.Settings.AssemblyReferences) { - a = LoadAssemblyFile (r, false); + a = LoadAssemblyFile (r); if (a == null || EqualityComparer.Default.Equals (a, corlib_assembly)) continue; @@ -1152,7 +1153,7 @@ namespace Mono.CSharp } foreach (var entry in module.Compiler.Settings.AssemblyReferencesAliases) { - a = LoadAssemblyFile (entry.Item2, false); + a = LoadAssemblyFile (entry.Item2); if (a == null) continue; @@ -1165,7 +1166,7 @@ namespace Mono.CSharp if (compiler.Settings.LoadDefaultReferences) { foreach (string r in GetDefaultReferences ()) { - a = LoadAssemblyFile (r, true); + a = LoadAssemblyDefault (r); if (a == null) continue; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs index 4fc2e6e9a4..99416ce55d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs @@ -418,11 +418,6 @@ namespace Mono.CSharp { _target.target = target.Clone (clonectx); _target.source = source.Clone (clonectx); } - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class SimpleAssign : Assign @@ -658,12 +653,6 @@ namespace Mono.CSharp { this.left = left; } - public Binary.Operator Operator { - get { - return op; - } - } - protected override Expression DoResolve (ResolveContext ec) { right = right.Resolve (ec); @@ -822,10 +811,10 @@ namespace Mono.CSharp { ctarget.right = ctarget.source = source.Clone (clonectx); ctarget.target = target.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); } + } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs index 7a786da549..89b78483e2 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/async.cs @@ -40,12 +40,6 @@ namespace Mono.CSharp this.loc = loc; } - public Expression Expr { - get { - return expr; - } - } - protected override void CloneTo (CloneContext clonectx, Expression target) { var t = (Await) target; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs index a9decc3ba4..53a5db56d3 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs @@ -89,7 +89,8 @@ namespace Mono.CSharp { public AttributeTargets Target; readonly ATypeNameExpression expression; - Arguments pos_args, named_args; + public Arguments PosArguments; + public Arguments NamedArguments; bool resolve_error; bool arg_resolved; @@ -117,8 +118,8 @@ namespace Mono.CSharp { { this.expression = expr; if (args != null) { - pos_args = args[0]; - named_args = args[1]; + PosArguments = args[0]; + NamedArguments = args[1]; } this.loc = loc; ExplicitTarget = target; @@ -131,24 +132,6 @@ namespace Mono.CSharp { } } - public Arguments NamedArguments { - get { - return named_args; - } - } - - public Arguments PositionalArguments { - get { - return pos_args; - } - } - - public ATypeNameExpression TypeExpression { - get { - return expression; - } - } - void AddModuleCharSet (ResolveContext rc) { const string dll_import_char_set = "CharSet"; @@ -164,7 +147,7 @@ namespace Mono.CSharp { } if (NamedArguments == null) - named_args = new Arguments (1); + NamedArguments = new Arguments (1); var value = Constant.CreateConstant (rc.Module.PredefinedTypes.CharSet.TypeSpec, rc.Module.DefaultCharSet, Location); NamedArguments.Add (new NamedArgument (dll_import_char_set, loc, value)); @@ -173,8 +156,8 @@ namespace Mono.CSharp { public Attribute Clone () { Attribute a = new Attribute (ExplicitTarget, expression, null, loc, nameEscaped); - a.pos_args = pos_args; - a.named_args = NamedArguments; + a.PosArguments = PosArguments; + a.NamedArguments = NamedArguments; return a; } @@ -449,14 +432,14 @@ namespace Mono.CSharp { MethodSpec ctor; // Try if the attribute is simple and has been resolved before - if (pos_args != null || !context.Module.AttributeConstructorCache.TryGetValue (Type, out ctor)) { + if (PosArguments != null || !context.Module.AttributeConstructorCache.TryGetValue (Type, out ctor)) { rc = CreateResolveContext (); ctor = ResolveConstructor (rc); if (ctor == null) { return null; } - if (pos_args == null && ctor.Parameters.IsEmpty) + if (PosArguments == null && ctor.Parameters.IsEmpty) context.Module.AttributeConstructorCache.Add (Type, ctor); } @@ -485,16 +468,16 @@ namespace Mono.CSharp { MethodSpec ResolveConstructor (ResolveContext ec) { - if (pos_args != null) { + if (PosArguments != null) { bool dynamic; - pos_args.Resolve (ec, out dynamic); + PosArguments.Resolve (ec, out dynamic); if (dynamic) { Error_AttributeArgumentIsDynamic (ec.MemberContext, loc); return null; } } - return Expression.ConstructorLookup (ec, Type, ref pos_args, loc); + return Expression.ConstructorLookup (ec, Type, ref PosArguments, loc); } bool ResolveNamedArguments (ResolveContext ec) @@ -654,7 +637,7 @@ namespace Mono.CSharp { if (resolve_error) return DefaultUsageAttribute; - AttributeUsageAttribute usage_attribute = new AttributeUsageAttribute ((AttributeTargets) ((Constant) pos_args[0].Expr).GetValue ()); + AttributeUsageAttribute usage_attribute = new AttributeUsageAttribute ((AttributeTargets)((Constant) PosArguments [0].Expr).GetValue ()); var field = GetNamedValue ("AllowMultiple") as BoolConstant; if (field != null) @@ -677,10 +660,10 @@ namespace Mono.CSharp { // But because a lot of attribute class code must be rewritten will be better to wait... Resolve (); - if (resolve_error || pos_args.Count != 1 || !(pos_args[0].Expr is Constant)) + if (resolve_error || PosArguments.Count != 1 || !(PosArguments [0].Expr is Constant)) return null; - return ((Constant) pos_args[0].Expr).GetValue () as string; + return ((Constant) PosArguments [0].Expr).GetValue () as string; } /// @@ -696,7 +679,7 @@ namespace Mono.CSharp { if (resolve_error) return null; - return ((Constant) pos_args[0].Expr).GetValue () as string; + return ((Constant) PosArguments[0].Expr).GetValue () as string; } /// @@ -718,14 +701,14 @@ namespace Mono.CSharp { if (resolve_error) return null; - if (pos_args == null) + if (PosArguments == null) return new ObsoleteAttribute (); - string msg = ((Constant) pos_args[0].Expr).GetValue () as string; - if (pos_args.Count == 1) + string msg = ((Constant) PosArguments[0].Expr).GetValue () as string; + if (PosArguments.Count == 1) return new ObsoleteAttribute (msg); - return new ObsoleteAttribute (msg, ((BoolConstant) pos_args[1].Expr).Value); + return new ObsoleteAttribute (msg, ((BoolConstant) PosArguments[1].Expr).Value); } /// @@ -743,7 +726,7 @@ namespace Mono.CSharp { if (resolve_error) return false; - return ((BoolConstant) pos_args[0].Expr).Value; + return ((BoolConstant) PosArguments[0].Expr).Value; } public TypeSpec GetCoClassAttributeValue () @@ -829,7 +812,7 @@ namespace Mono.CSharp { System.Security.Permissions.SecurityAction GetSecurityActionValue () { - return (SecurityAction) ((Constant) pos_args[0].Expr).GetValue (); + return (SecurityAction) ((Constant) PosArguments[0].Expr).GetValue (); } /// @@ -839,9 +822,9 @@ namespace Mono.CSharp { public void ExtractSecurityPermissionSet (MethodSpec ctor, ref SecurityType permissions) { #if STATIC - object[] values = new object[pos_args.Count]; + object[] values = new object [PosArguments.Count]; for (int i = 0; i < values.Length; ++i) - values[i] = ((Constant) pos_args[i].Expr).GetValue (); + values [i] = ((Constant) PosArguments [i].Expr).GetValue (); PropertyInfo[] prop; object[] prop_values; @@ -882,7 +865,7 @@ namespace Mono.CSharp { public CharSet GetCharSetValue () { - return (CharSet) System.Enum.Parse (typeof (CharSet), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); + return (CharSet)System.Enum.Parse (typeof (CharSet), ((Constant) PosArguments [0].Expr).GetValue ().ToString ()); } public bool HasField (string fieldName) @@ -904,8 +887,8 @@ namespace Mono.CSharp { public bool IsInternalCall () { MethodImplOptions options = 0; - if (pos_args.Count == 1) { - options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); + if (PosArguments.Count == 1) { + options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); } else if (HasField ("Value")) { var named = GetNamedValue ("Value"); options = (MethodImplOptions) System.Enum.Parse (typeof (MethodImplOptions), named.GetValue ().ToString ()); @@ -919,19 +902,19 @@ namespace Mono.CSharp { // public bool IsExplicitLayoutKind () { - if (pos_args == null || pos_args.Count != 1) + if (PosArguments == null || PosArguments.Count != 1) return false; - var value = (LayoutKind) System.Enum.Parse (typeof (LayoutKind), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); + var value = (LayoutKind) System.Enum.Parse (typeof (LayoutKind), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); return value == LayoutKind.Explicit; } public Expression GetParameterDefaultValue () { - if (pos_args == null) + if (PosArguments == null) return null; - return pos_args[0].Expr; + return PosArguments[0].Expr; } public override bool Equals (object obj) @@ -968,16 +951,16 @@ namespace Mono.CSharp { } byte[] cdata; - if (pos_args == null && named_values == null) { + if (PosArguments == null && named_values == null) { cdata = AttributeEncoder.Empty; } else { AttributeEncoder encoder = new AttributeEncoder (); - if (pos_args != null) { + if (PosArguments != null) { var param_types = ctor.Parameters.Types; - for (int j = 0; j < pos_args.Count; ++j) { + for (int j = 0; j < PosArguments.Count; ++j) { var pt = param_types[j]; - var arg_expr = pos_args[j].Expr; + var arg_expr = PosArguments[j].Expr; if (j == 0) { if ((Type == predefined.IndexerName || Type == predefined.Conditional) && arg_expr is Constant) { string v = ((Constant) arg_expr).GetValue () as string; @@ -1001,15 +984,15 @@ namespace Mono.CSharp { "System.AttributeUsage"); } } else if (Type == predefined.MarshalAs) { - if (pos_args.Count == 1) { - var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) pos_args[0].Expr).GetValue ().ToString ()); + if (PosArguments.Count == 1) { + var u_type = (UnmanagedType) System.Enum.Parse (typeof (UnmanagedType), ((Constant) PosArguments[0].Expr).GetValue ().ToString ()); if (u_type == UnmanagedType.ByValArray && !(Owner is FieldBase)) { Error_AttributeEmitError ("Specified unmanaged type is only valid on fields"); } } } else if (Type == predefined.DllImport) { - if (pos_args.Count == 1 && pos_args[0].Expr is Constant) { - var value = ((Constant) pos_args[0].Expr).GetValue () as string; + if (PosArguments.Count == 1 && PosArguments[0].Expr is Constant) { + var value = ((Constant) PosArguments[0].Expr).GetValue () as string; if (string.IsNullOrEmpty (value)) Error_AttributeEmitError ("DllName cannot be empty"); } @@ -1072,8 +1055,8 @@ namespace Mono.CSharp { // Here we are testing attribute arguments for array usage (error 3016) if (Owner.IsClsComplianceRequired ()) { - if (pos_args != null) - pos_args.CheckArrayAsAttribute (context.Module.Compiler); + if (PosArguments != null) + PosArguments.CheckArrayAsAttribute (context.Module.Compiler); if (NamedArguments == null) return; @@ -1084,10 +1067,10 @@ namespace Mono.CSharp { private Expression GetValue () { - if (pos_args == null || pos_args.Count < 1) + if (PosArguments == null || PosArguments.Count < 1) return null; - return pos_args[0].Expr; + return PosArguments [0].Expr; } public string GetString () diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs index bdfea2ecd8..e76fd155d1 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs @@ -201,7 +201,7 @@ namespace Mono.CSharp // from classes from the arraylist `type_bases' // protected TypeSpec base_type; - FullNamedExpression base_type_expr; // TODO: It's temporary variable + protected FullNamedExpression base_type_expr; // TODO: It's temporary variable protected TypeSpec[] iface_exprs; protected List type_bases; @@ -256,12 +256,6 @@ namespace Mono.CSharp #region Properties - public List BaseTypeExpressions { - get { - return type_bases; - } - } - public override TypeSpec CurrentType { get { if (current_type == null) { @@ -338,7 +332,7 @@ namespace Mono.CSharp { visitor.Visit (this); } - + public bool AddMember (MemberCore symbol) { return AddToContainer (symbol, symbol.MemberName.Basename); @@ -1372,13 +1366,9 @@ namespace Mono.CSharp type_defined = true; - // Nested type share same namespace - if (IsTopLevel && !IsCompilerGenerated) { - NamespaceEntry.Define (); - if (partial_parts != null) { - foreach (var part in partial_parts) - part.NamespaceEntry.Define (); - } + // TODO: Driver resolves only first level of namespace, do the rest here for now + if (IsTopLevel && (ModFlags & Modifiers.COMPILER_GENERATED) == 0) { + NamespaceEntry.Resolve (); } if (!DefineBaseTypes ()) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 38752efe8f..830ee8e54f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -212,10 +212,11 @@ namespace Mono.CSharp //t "extern_alias_directive : EXTERN_ALIAS error", //t "using_directives : using_directive", //t "using_directives : using_directives using_directive", -//t "using_directive : using_namespace", -//t "using_namespace : USING namespace_name SEMICOLON", -//t "using_namespace : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON", -//t "using_namespace : USING error", +//t "using_directive : using_alias_directive", +//t "using_directive : using_namespace_directive", +//t "using_alias_directive : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON", +//t "using_alias_directive : USING error", +//t "using_namespace_directive : USING namespace_name SEMICOLON", //t "$$2 :", //t "$$3 :", //t "namespace_declaration : opt_attributes NAMESPACE qualified_identifier $$2 OPEN_BRACE $$3 opt_extern_alias_directives opt_using_directives opt_namespace_or_type_declarations CLOSE_BRACE opt_semicolon", @@ -973,7 +974,6 @@ namespace Mono.CSharp //t "if_statement : IF open_parens_any boolean_expression error", //t "$$85 :", //t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$85 opt_switch_sections CLOSE_BRACE", -//t "switch_statement : SWITCH open_parens_any expression error", //t "opt_switch_sections :", //t "opt_switch_sections : switch_sections", //t "switch_sections : switch_section", @@ -990,7 +990,6 @@ namespace Mono.CSharp //t "iteration_statement : for_statement", //t "iteration_statement : foreach_statement", //t "while_statement : WHILE open_parens_any boolean_expression CLOSE_PARENS embedded_statement", -//t "while_statement : WHILE open_parens_any boolean_expression error", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON", //t "do_statement : DO embedded_statement error", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression error", @@ -1013,8 +1012,7 @@ namespace Mono.CSharp //t "for_iterator : statement_expression_list", //t "statement_expression_list : statement_expression", //t "statement_expression_list : statement_expression_list COMMA statement_expression", -//t "foreach_statement : FOREACH open_parens_any type error", -//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", +//t "foreach_statement : FOREACH open_parens_any type IN expression CLOSE_PARENS", //t "$$92 :", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$92 embedded_statement", //t "foreach_statement : FOREACH open_parens_any type identifier_inside_body error", @@ -1053,7 +1051,6 @@ namespace Mono.CSharp //t "$$94 :", //t "unsafe_statement : UNSAFE $$94 block", //t "lock_statement : LOCK open_parens_any expression CLOSE_PARENS embedded_statement", -//t "lock_statement : LOCK open_parens_any expression error", //t "$$95 :", //t "$$96 :", //t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$95 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$96 embedded_statement", @@ -1061,7 +1058,6 @@ namespace Mono.CSharp //t "$$98 :", //t "using_statement : USING open_parens_any variable_type identifier_inside_body $$97 using_initialization CLOSE_PARENS $$98 embedded_statement", //t "using_statement : USING open_parens_any expression CLOSE_PARENS embedded_statement", -//t "using_statement : USING open_parens_any expression error", //t "using_initialization : using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators", //t "using_initialization : error", //t "using_or_fixed_variable_initializer :", @@ -1421,9 +1417,9 @@ case 13: case_13(); break; case 14: -#line 451 "cs-parser.jay" +#line 444 "cs-parser.jay" { - Error_SyntaxError (yyToken); + syntax_error (GetLocation (yyVals[-1+yyTop]), "`alias' expected"); /* TODO: better*/ } break; case 17: @@ -1456,21 +1452,21 @@ case 25: case 26: case_26(); break; -case 31: - case_31(); +case 27: + case_27(); break; -case 40: - case_40(); +case 32: + case_32(); break; case 41: -#line 636 "cs-parser.jay" + case_41(); + break; +case 42: +#line 633 "cs-parser.jay" { current_namespace.DeclarationFound = true; } break; -case 49: - case_49(); - break; case 50: case_50(); break; @@ -1493,47 +1489,47 @@ case 56: case_56(); break; case 57: -#line 745 "cs-parser.jay" - { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } + case_57(); break; case 58: -#line 746 "cs-parser.jay" - { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } +#line 742 "cs-parser.jay" + { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 59: - case_59(); +#line 743 "cs-parser.jay" + { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 60: -#line 763 "cs-parser.jay" + case_60(); + break; +case 61: +#line 760 "cs-parser.jay" { yyVal = new List (4) { (Attribute) yyVals[0+yyTop] }; } break; -case 61: - case_61(); - break; case 62: -#line 778 "cs-parser.jay" + case_62(); + break; +case 63: +#line 775 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 63: - case_63(); - break; -case 65: -#line 805 "cs-parser.jay" - { yyVal = null; } +case 64: + case_64(); break; case 66: - case_66(); +#line 802 "cs-parser.jay" + { yyVal = null; } break; case 67: -#line 816 "cs-parser.jay" - { yyVal = null; } + case_67(); break; case 68: - case_68(); +#line 813 "cs-parser.jay" + { yyVal = null; } break; case 69: case_69(); @@ -1545,63 +1541,63 @@ case 71: case_71(); break; case 72: -#line 860 "cs-parser.jay" + case_72(); + break; +case 73: +#line 857 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 74: -#line 868 "cs-parser.jay" +case 75: +#line 865 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 75: - case_75(); - break; case 76: case_76(); break; case 77: -#line 894 "cs-parser.jay" - { yyVal = null; } + case_77(); break; case 78: -#line 898 "cs-parser.jay" +#line 891 "cs-parser.jay" + { yyVal = null; } + break; +case 79: +#line 895 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; -case 79: -#line 902 "cs-parser.jay" +case 80: +#line 899 "cs-parser.jay" { yyVal = Argument.AType.Out; } break; -case 82: -#line 914 "cs-parser.jay" +case 83: +#line 911 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 83: -#line 918 "cs-parser.jay" +case 84: +#line 915 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 94: - case_94(); - break; case 95: -#line 948 "cs-parser.jay" + case_95(); + break; +case 96: +#line 945 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 96: - case_96(); - break; case 97: case_97(); break; @@ -1615,46 +1611,46 @@ case 100: case_100(); break; case 101: -#line 989 "cs-parser.jay" + case_101(); + break; +case 102: +#line 986 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; -case 102: - case_102(); - break; case 103: case_103(); break; -case 106: -#line 1030 "cs-parser.jay" - { - current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); - } +case 104: + case_104(); break; case 107: -#line 1034 "cs-parser.jay" +#line 1027 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 108: - case_108(); +#line 1031 "cs-parser.jay" + { + current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); + } break; case 109: -#line 1050 "cs-parser.jay" + case_109(); + break; +case 110: +#line 1047 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 110: - case_110(); - break; case 111: case_111(); break; -case 114: - case_114(); +case 112: + case_112(); break; case 115: case_115(); @@ -1666,70 +1662,70 @@ case 117: case_117(); break; case 118: -#line 1129 "cs-parser.jay" + case_118(); + break; +case 119: +#line 1126 "cs-parser.jay" { report.Error (1641, GetLocation (yyVals[-1+yyTop]), "A fixed size buffer field must have the array size specifier after the field name"); } break; -case 120: - case_120(); - break; case 121: case_121(); break; -case 124: -#line 1159 "cs-parser.jay" - { - current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); - } +case 122: + case_122(); break; case 125: -#line 1163 "cs-parser.jay" +#line 1156 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 126: - case_126(); +#line 1160 "cs-parser.jay" + { + current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); + } break; case 127: -#line 1176 "cs-parser.jay" + case_127(); + break; +case 128: +#line 1173 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 128: - case_128(); +case 129: + case_129(); break; -case 131: -#line 1195 "cs-parser.jay" +case 132: +#line 1192 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 132: -#line 1199 "cs-parser.jay" +case 133: +#line 1196 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 133: - case_133(); - break; case 134: -#line 1215 "cs-parser.jay" + case_134(); + break; +case 135: +#line 1212 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 135: - case_135(); - break; case 136: case_136(); break; -case 139: - case_139(); +case 137: + case_137(); break; case 140: case_140(); @@ -1738,51 +1734,51 @@ case 141: case_141(); break; case 142: -#line 1286 "cs-parser.jay" + case_142(); + break; +case 143: +#line 1283 "cs-parser.jay" { valid_param_mod = ParameterModifierType.All; } break; -case 143: -#line 1290 "cs-parser.jay" +case 144: +#line 1287 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 144: - case_144(); - break; case 145: -#line 1324 "cs-parser.jay" + case_145(); + break; +case 146: +#line 1321 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 146: - case_146(); - break; case 147: -#line 1334 "cs-parser.jay" + case_147(); + break; +case 148: +#line 1331 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 148: - case_148(); - break; case 149: case_149(); break; -case 151: -#line 1392 "cs-parser.jay" - { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } +case 150: + case_150(); break; case 152: -#line 1396 "cs-parser.jay" - { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } +#line 1389 "cs-parser.jay" + { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; -case 154: - case_154(); +case 153: +#line 1393 "cs-parser.jay" + { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 155: case_155(); @@ -1803,20 +1799,20 @@ case 160: case_160(); break; case 161: -#line 1468 "cs-parser.jay" + case_161(); + break; +case 162: +#line 1465 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; -case 162: -#line 1472 "cs-parser.jay" +case 163: +#line 1469 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } break; -case 163: - case_163(); - break; case 164: case_164(); break; @@ -1833,27 +1829,27 @@ case 168: case_168(); break; case 169: -#line 1547 "cs-parser.jay" + case_169(); + break; +case 170: +#line 1544 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 170: - case_170(); - break; case 171: -#line 1588 "cs-parser.jay" + case_171(); + break; +case 172: +#line 1585 "cs-parser.jay" { yyVal = Parameter.Modifier.NONE; } break; -case 173: -#line 1596 "cs-parser.jay" +case 174: +#line 1593 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 174: - case_174(); - break; case 175: case_175(); break; @@ -1879,14 +1875,14 @@ case 182: case_182(); break; case 183: -#line 1689 "cs-parser.jay" + case_183(); + break; +case 184: +#line 1686 "cs-parser.jay" { Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); } break; -case 184: - case_184(); - break; case 185: case_185(); break; @@ -1900,25 +1896,25 @@ case 188: case_188(); break; case 189: -#line 1743 "cs-parser.jay" + case_189(); + break; +case 190: +#line 1740 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 190: - case_190(); - break; case 191: -#line 1772 "cs-parser.jay" + case_191(); + break; +case 192: +#line 1769 "cs-parser.jay" { lexer.PropertyParsing = false; } break; -case 192: - case_192(); - break; -case 197: - case_197(); +case 193: + case_193(); break; case 198: case_198(); @@ -1932,21 +1928,21 @@ case 200: case 201: case_201(); break; -case 203: - case_203(); +case 202: + case_202(); break; case 204: case_204(); break; case 205: -#line 1921 "cs-parser.jay" + case_205(); + break; +case 206: +#line 1918 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 206: - case_206(); - break; case 207: case_207(); break; @@ -1957,183 +1953,183 @@ case 209: case_209(); break; case 210: -#line 1958 "cs-parser.jay" + case_210(); + break; +case 211: +#line 1955 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; -case 213: -#line 1970 "cs-parser.jay" +case 214: +#line 1967 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 214: -#line 1974 "cs-parser.jay" +case 215: +#line 1971 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; -case 215: -#line 1981 "cs-parser.jay" +case 216: +#line 1978 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 216: -#line 1985 "cs-parser.jay" +case 217: +#line 1982 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; -case 221: -#line 1993 "cs-parser.jay" +case 222: +#line 1990 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; -case 222: -#line 1997 "cs-parser.jay" +case 223: +#line 1994 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; -case 223: -#line 2001 "cs-parser.jay" +case 224: +#line 1998 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; -case 224: -#line 2007 "cs-parser.jay" +case 225: +#line 2004 "cs-parser.jay" { } break; -case 225: - case_225(); +case 226: + case_226(); break; -case 227: -#line 2040 "cs-parser.jay" +case 228: +#line 2037 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; -case 229: - case_229(); - break; case 230: -#line 2056 "cs-parser.jay" + case_230(); + break; +case 231: +#line 2053 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 231: - case_231(); +case 232: + case_232(); break; -case 233: -#line 2102 "cs-parser.jay" +case 234: +#line 2099 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 234: -#line 2103 "cs-parser.jay" +case 235: +#line 2100 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 235: -#line 2104 "cs-parser.jay" +case 236: +#line 2101 "cs-parser.jay" { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 236: -#line 2105 "cs-parser.jay" +case 237: +#line 2102 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 237: -#line 2106 "cs-parser.jay" +case 238: +#line 2103 "cs-parser.jay" { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 238: -#line 2107 "cs-parser.jay" +case 239: +#line 2104 "cs-parser.jay" { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 239: -#line 2109 "cs-parser.jay" +case 240: +#line 2106 "cs-parser.jay" { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 240: -#line 2110 "cs-parser.jay" +case 241: +#line 2107 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 241: -#line 2112 "cs-parser.jay" +case 242: +#line 2109 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 242: -#line 2113 "cs-parser.jay" +case 243: +#line 2110 "cs-parser.jay" { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 243: -#line 2114 "cs-parser.jay" +case 244: +#line 2111 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 244: -#line 2115 "cs-parser.jay" +case 245: +#line 2112 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 245: -#line 2116 "cs-parser.jay" +case 246: +#line 2113 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 246: -#line 2117 "cs-parser.jay" +case 247: +#line 2114 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 247: -#line 2118 "cs-parser.jay" +case 248: +#line 2115 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 248: -#line 2119 "cs-parser.jay" +case 249: +#line 2116 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 249: -#line 2120 "cs-parser.jay" +case 250: +#line 2117 "cs-parser.jay" { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 250: -#line 2121 "cs-parser.jay" +case 251: +#line 2118 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 251: -#line 2122 "cs-parser.jay" +case 252: +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 252: -#line 2123 "cs-parser.jay" +case 253: +#line 2120 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 253: -#line 2124 "cs-parser.jay" +case 254: +#line 2121 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 254: -#line 2125 "cs-parser.jay" +case 255: +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; -case 255: -#line 2132 "cs-parser.jay" +case 256: +#line 2129 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 256: - case_256(); - break; case 257: -#line 2151 "cs-parser.jay" + case_257(); + break; +case 258: +#line 2148 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } break; -case 258: - case_258(); - break; case 259: case_259(); break; @@ -2152,28 +2148,28 @@ case 263: case 264: case_264(); break; -case 266: -#line 2254 "cs-parser.jay" +case 265: + case_265(); + break; +case 267: +#line 2251 "cs-parser.jay" { current_block = null; yyVal = null; } break; -case 269: -#line 2266 "cs-parser.jay" +case 270: +#line 2263 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 270: - case_270(); - break; case 271: -#line 2276 "cs-parser.jay" + case_271(); + break; +case 272: +#line 2273 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 272: - case_272(); - break; case 273: case_273(); break; @@ -2198,51 +2194,51 @@ case 279: case 280: case_280(); break; -case 282: -#line 2385 "cs-parser.jay" +case 281: + case_281(); + break; +case 283: +#line 2382 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 283: - case_283(); +case 284: + case_284(); break; -case 286: -#line 2402 "cs-parser.jay" +case 287: +#line 2399 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 287: -#line 2406 "cs-parser.jay" +case 288: +#line 2403 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; -case 288: - case_288(); - break; case 289: -#line 2419 "cs-parser.jay" + case_289(); + break; +case 290: +#line 2416 "cs-parser.jay" { ++lexer.parsing_block; } break; -case 290: - case_290(); - break; case 291: case_291(); break; case 292: -#line 2444 "cs-parser.jay" + case_292(); + break; +case 293: +#line 2441 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 295: - case_295(); - break; case 296: case_296(); break; @@ -2264,8 +2260,8 @@ case 301: case 302: case_302(); break; -case 304: - case_304(); +case 303: + case_303(); break; case 305: case_305(); @@ -2276,21 +2272,21 @@ case 306: case 307: case_307(); break; -case 309: - case_309(); +case 308: + case_308(); break; case 310: case_310(); break; -case 313: -#line 2607 "cs-parser.jay" +case 311: + case_311(); + break; +case 314: +#line 2604 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[0+yyTop])); } break; -case 315: - case_315(); - break; case 316: case_316(); break; @@ -2301,37 +2297,37 @@ case 318: case_318(); break; case 319: -#line 2665 "cs-parser.jay" + case_319(); + break; +case 320: +#line 2662 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 320: - case_320(); - break; case 321: -#line 2687 "cs-parser.jay" - { - lexer.ConstraintsParsing = false; - } + case_321(); break; case 322: - case_322(); +#line 2684 "cs-parser.jay" + { + lexer.ConstraintsParsing = false; + } break; -case 324: - case_324(); +case 323: + case_323(); break; -case 326: - case_326(); +case 325: + case_325(); break; -case 328: - case_328(); +case 327: + case_327(); break; case 329: case_329(); break; -case 331: - case_331(); +case 330: + case_330(); break; case 332: case_332(); @@ -2343,19 +2339,19 @@ case 334: case_334(); break; case 335: -#line 2792 "cs-parser.jay" + case_335(); + break; +case 336: +#line 2789 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 336: - case_336(); - break; case 337: case_337(); break; -case 339: - case_339(); +case 338: + case_338(); break; case 340: case_340(); @@ -2372,8 +2368,8 @@ case 343: case 344: case_344(); break; -case 346: - case_346(); +case 345: + case_345(); break; case 347: case_347(); @@ -2387,60 +2383,60 @@ case 349: case 350: case_350(); break; -case 352: -#line 2913 "cs-parser.jay" +case 351: + case_351(); + break; +case 353: +#line 2910 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; -case 353: -#line 2920 "cs-parser.jay" +case 354: +#line 2917 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 355: - case_355(); +case 356: + case_356(); break; -case 357: - case_357(); +case 358: + case_358(); break; -case 359: - case_359(); +case 360: + case_360(); break; -case 361: -#line 2958 "cs-parser.jay" +case 362: +#line 2955 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 362: - case_362(); - break; case 363: -#line 2978 "cs-parser.jay" + case_363(); + break; +case 364: +#line 2975 "cs-parser.jay" { yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 364: - case_364(); - break; case 365: -#line 2987 "cs-parser.jay" + case_365(); + break; +case 366: +#line 2984 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 366: -#line 2991 "cs-parser.jay" +case 367: +#line 2988 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 367: - case_367(); - break; case 368: case_368(); break; @@ -2451,95 +2447,95 @@ case 370: case_370(); break; case 371: -#line 3030 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } + case_371(); break; case 372: -#line 3031 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } +#line 3027 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; case 373: -#line 3032 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } +#line 3028 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; case 374: -#line 3033 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } +#line 3029 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; case 375: -#line 3034 "cs-parser.jay" - { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } +#line 3030 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; case 376: -#line 3035 "cs-parser.jay" +#line 3031 "cs-parser.jay" + { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } + break; +case 377: +#line 3032 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; -case 378: -#line 3040 "cs-parser.jay" +case 379: +#line 3037 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; -case 379: -#line 3041 "cs-parser.jay" +case 380: +#line 3038 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; -case 380: -#line 3042 "cs-parser.jay" +case 381: +#line 3039 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; -case 381: -#line 3043 "cs-parser.jay" +case 382: +#line 3040 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; -case 382: -#line 3044 "cs-parser.jay" +case 383: +#line 3041 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; -case 383: -#line 3045 "cs-parser.jay" +case 384: +#line 3042 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; -case 384: -#line 3046 "cs-parser.jay" +case 385: +#line 3043 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; -case 385: -#line 3047 "cs-parser.jay" +case 386: +#line 3044 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; -case 386: -#line 3048 "cs-parser.jay" +case 387: +#line 3045 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; -case 407: - case_407(); - break; case 408: case_408(); break; -case 412: -#line 3095 "cs-parser.jay" - { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } +case 409: + case_409(); break; case 413: -#line 3099 "cs-parser.jay" - { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } +#line 3092 "cs-parser.jay" + { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; case 414: -#line 3100 "cs-parser.jay" - { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } +#line 3096 "cs-parser.jay" + { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; -case 419: - case_419(); +case 415: +#line 3097 "cs-parser.jay" + { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; case 420: -#line 3133 "cs-parser.jay" + case_420(); + break; +case 421: +#line 3130 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } break; -case 421: - case_421(); - break; case 422: case_422(); break; @@ -2550,49 +2546,49 @@ case 424: case_424(); break; case 425: -#line 3168 "cs-parser.jay" + case_425(); + break; +case 426: +#line 3165 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } break; -case 426: - case_426(); - break; case 427: -#line 3176 "cs-parser.jay" + case_427(); + break; +case 428: +#line 3173 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } break; -case 428: - case_428(); - break; case 429: case_429(); break; case 430: -#line 3192 "cs-parser.jay" - { yyVal = null; } + case_430(); break; -case 432: - case_432(); +case 431: +#line 3189 "cs-parser.jay" + { yyVal = null; } break; case 433: case_433(); break; case 434: -#line 3215 "cs-parser.jay" - { yyVal = null; } + case_434(); break; case 435: -#line 3219 "cs-parser.jay" +#line 3212 "cs-parser.jay" + { yyVal = null; } + break; +case 436: +#line 3216 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 436: - case_436(); - break; case 437: case_437(); break; @@ -2603,26 +2599,26 @@ case 439: case_439(); break; case 440: -#line 3252 "cs-parser.jay" + case_440(); + break; +case 441: +#line 3249 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } break; -case 441: - case_441(); - break; case 442: case_442(); break; case 443: case_443(); break; -case 446: -#line 3280 "cs-parser.jay" - { yyVal = null; } +case 444: + case_444(); break; -case 448: - case_448(); +case 447: +#line 3277 "cs-parser.jay" + { yyVal = null; } break; case 449: case_449(); @@ -2637,14 +2633,14 @@ case 452: case_452(); break; case 453: -#line 3332 "cs-parser.jay" + case_453(); + break; +case 454: +#line 3329 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 457: - case_457(); - break; case 458: case_458(); break; @@ -2654,24 +2650,24 @@ case 459: case 460: case_460(); break; -case 462: - case_462(); +case 461: + case_461(); break; case 463: -#line 3377 "cs-parser.jay" + case_463(); + break; +case 464: +#line 3374 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } break; -case 464: -#line 3381 "cs-parser.jay" +case 465: +#line 3378 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } break; -case 465: - case_465(); - break; case 466: case_466(); break; @@ -2685,38 +2681,38 @@ case 469: case_469(); break; case 470: -#line 3427 "cs-parser.jay" + case_470(); + break; +case 471: +#line 3424 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 472: -#line 3435 "cs-parser.jay" +case 473: +#line 3432 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } break; -case 473: - case_473(); - break; case 474: case_474(); break; case 475: -#line 3455 "cs-parser.jay" + case_475(); + break; +case 476: +#line 3452 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 476: -#line 3462 "cs-parser.jay" +case 477: +#line 3459 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 477: - case_477(); - break; case 478: case_478(); break; @@ -2736,23 +2732,23 @@ case 483: case_483(); break; case 484: -#line 3528 "cs-parser.jay" + case_484(); + break; +case 485: +#line 3525 "cs-parser.jay" { ++lexer.parsing_type; } break; -case 485: - case_485(); - break; case 486: case_486(); break; -case 489: -#line 3555 "cs-parser.jay" - { yyVal = null; } +case 487: + case_487(); break; -case 491: - case_491(); +case 490: +#line 3552 "cs-parser.jay" + { yyVal = null; } break; case 492: case_492(); @@ -2769,8 +2765,8 @@ case 495: case 496: case_496(); break; -case 500: - case_500(); +case 497: + case_497(); break; case 501: case_501(); @@ -2779,32 +2775,32 @@ case 502: case_502(); break; case 503: -#line 3633 "cs-parser.jay" + case_503(); + break; +case 504: +#line 3630 "cs-parser.jay" { yyVal = 2; } break; -case 504: -#line 3637 "cs-parser.jay" +case 505: +#line 3634 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; -case 505: -#line 3644 "cs-parser.jay" +case 506: +#line 3641 "cs-parser.jay" { yyVal = null; } break; -case 506: -#line 3648 "cs-parser.jay" +case 507: +#line 3645 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 507: - case_507(); - break; case 508: case_508(); break; @@ -2815,16 +2811,16 @@ case 510: case_510(); break; case 511: -#line 3692 "cs-parser.jay" + case_511(); + break; +case 512: +#line 3689 "cs-parser.jay" { lexer.TypeOfParsing = true; } break; -case 512: - case_512(); - break; -case 515: - case_515(); +case 513: + case_513(); break; case 516: case_516(); @@ -2860,136 +2856,136 @@ case 526: case_526(); break; case 527: -#line 3812 "cs-parser.jay" + case_527(); + break; +case 528: +#line 3809 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } break; -case 528: - case_528(); - break; case 529: -#line 3825 "cs-parser.jay" + case_529(); + break; +case 530: +#line 3822 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; -case 530: - case_530(); - break; case 531: -#line 3842 "cs-parser.jay" + case_531(); + break; +case 532: +#line 3839 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; -case 533: -#line 3850 "cs-parser.jay" +case 534: +#line 3847 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 534: - case_534(); - break; case 535: case_535(); break; -case 537: -#line 3876 "cs-parser.jay" +case 536: + case_536(); + break; +case 538: +#line 3873 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 538: -#line 3880 "cs-parser.jay" +case 539: +#line 3877 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 539: - case_539(); - break; case 540: case_540(); break; -case 542: -#line 3908 "cs-parser.jay" +case 541: + case_541(); + break; +case 543: +#line 3905 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 543: -#line 3912 "cs-parser.jay" +case 544: +#line 3909 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 544: -#line 3916 "cs-parser.jay" +case 545: +#line 3913 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 545: -#line 3920 "cs-parser.jay" +case 546: +#line 3917 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 546: -#line 3924 "cs-parser.jay" +case 547: +#line 3921 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 547: -#line 3928 "cs-parser.jay" +case 548: +#line 3925 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 549: - case_549(); - break; case 550: case_550(); break; case 551: case_551(); break; -case 553: - case_553(); +case 552: + case_552(); break; case 554: -#line 3960 "cs-parser.jay" + case_554(); + break; +case 555: +#line 3957 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 555: - case_555(); - break; case 556: -#line 3969 "cs-parser.jay" + case_556(); + break; +case 557: +#line 3966 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 557: -#line 3973 "cs-parser.jay" +case 558: +#line 3970 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 559: - case_559(); - break; case 560: case_560(); break; -case 562: - case_562(); +case 561: + case_561(); break; case 563: case_563(); @@ -3000,42 +2996,42 @@ case 564: case 565: case_565(); break; -case 567: - case_567(); +case 566: + case_566(); break; case 568: case_568(); break; -case 570: - case_570(); +case 569: + case_569(); break; -case 572: - case_572(); +case 571: + case_571(); break; -case 574: - case_574(); +case 573: + case_573(); break; -case 576: - case_576(); +case 575: + case_575(); break; -case 578: - case_578(); +case 577: + case_577(); break; -case 580: - case_580(); +case 579: + case_579(); break; -case 582: - case_582(); +case 581: + case_581(); break; case 583: -#line 4097 "cs-parser.jay" + case_583(); + break; +case 584: +#line 4094 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 584: - case_584(); - break; case 585: case_585(); break; @@ -3079,23 +3075,23 @@ case 598: case_598(); break; case 599: -#line 4194 "cs-parser.jay" - { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } + case_599(); break; case 600: - case_600(); +#line 4191 "cs-parser.jay" + { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } + break; +case 601: + case_601(); break; -case 603: -#line 4210 "cs-parser.jay" +case 604: +#line 4207 "cs-parser.jay" { start_block (lexer.Location); } break; -case 604: - case_604(); - break; -case 606: - case_606(); +case 605: + case_605(); break; case 607: case_607(); @@ -3110,59 +3106,59 @@ case 610: case_610(); break; case 611: -#line 4255 "cs-parser.jay" + case_611(); + break; +case 612: +#line 4252 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 612: - case_612(); - break; case 613: case_613(); break; case 614: -#line 4269 "cs-parser.jay" + case_614(); + break; +case 615: +#line 4266 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 615: - case_615(); - break; case 616: case_616(); break; -case 622: -#line 4294 "cs-parser.jay" +case 617: + case_617(); + break; +case 623: +#line 4291 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } break; -case 623: - case_623(); - break; case 624: case_624(); break; case 625: case_625(); break; -case 627: -#line 4323 "cs-parser.jay" +case 626: + case_626(); + break; +case 628: +#line 4320 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; -case 628: -#line 4336 "cs-parser.jay" +case 629: +#line 4333 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; -case 629: - case_629(); - break; case 630: case_630(); break; @@ -3173,25 +3169,25 @@ case 632: case_632(); break; case 633: -#line 4379 "cs-parser.jay" - { yyVal = null; } + case_633(); break; case 634: -#line 4381 "cs-parser.jay" - { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } +#line 4376 "cs-parser.jay" + { yyVal = null; } break; case 635: - case_635(); +#line 4378 "cs-parser.jay" + { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 636: -#line 4394 "cs-parser.jay" + case_636(); + break; +case 637: +#line 4391 "cs-parser.jay" { lexer.parsing_modifiers = false; } break; -case 638: - case_638(); - break; case 639: case_639(); break; @@ -3237,18 +3233,18 @@ case 652: case 653: case_653(); break; -case 655: - case_655(); +case 654: + case_654(); + break; +case 656: + case_656(); break; -case 657: -#line 4514 "cs-parser.jay" +case 658: +#line 4511 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 658: - case_658(); - break; case 659: case_659(); break; @@ -3271,26 +3267,26 @@ case 665: case_665(); break; case 666: -#line 4605 "cs-parser.jay" + case_666(); + break; +case 667: +#line 4602 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; -case 667: -#line 4609 "cs-parser.jay" +case 668: +#line 4606 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; -case 668: -#line 4616 "cs-parser.jay" +case 669: +#line 4613 "cs-parser.jay" { yyVal = Variance.None; } break; -case 669: - case_669(); - break; case 670: case_670(); break; @@ -3301,14 +3297,14 @@ case 672: case_672(); break; case 673: -#line 4661 "cs-parser.jay" + case_673(); + break; +case 674: +#line 4658 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 674: - case_674(); - break; case 675: case_675(); break; @@ -3318,39 +3314,39 @@ case 676: case 677: case_677(); break; -case 682: -#line 4705 "cs-parser.jay" +case 678: + case_678(); + break; +case 683: +#line 4702 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 683: -#line 4709 "cs-parser.jay" +case 684: +#line 4706 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 685: - case_685(); - break; case 686: case_686(); break; -case 689: -#line 4743 "cs-parser.jay" +case 687: + case_687(); + break; +case 690: +#line 4740 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 690: -#line 4747 "cs-parser.jay" +case 691: +#line 4744 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 719: - case_719(); - break; case 720: case_720(); break; @@ -3363,8 +3359,8 @@ case 722: case 723: case_723(); break; -case 726: - case_726(); +case 724: + case_724(); break; case 727: case_727(); @@ -3376,32 +3372,32 @@ case 729: case_729(); break; case 730: -#line 4891 "cs-parser.jay" + case_730(); + break; +case 731: +#line 4888 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 731: -#line 4895 "cs-parser.jay" +case 732: +#line 4892 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 732: - case_732(); - break; -case 734: - case_734(); +case 733: + case_733(); break; case 735: -#line 4916 "cs-parser.jay" + case_735(); + break; +case 736: +#line 4913 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } break; -case 737: - case_737(); - break; case 738: case_738(); break; @@ -3414,8 +3410,8 @@ case 740: case 741: case_741(); break; -case 743: - case_743(); +case 742: + case_742(); break; case 744: case_744(); @@ -3423,29 +3419,29 @@ case 744: case 745: case_745(); break; -case 749: - case_749(); +case 746: + case_746(); break; -case 752: - case_752(); +case 750: + case_750(); break; case 753: case_753(); break; case 754: -#line 5041 "cs-parser.jay" + case_754(); + break; +case 755: +#line 5038 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } break; -case 755: - case_755(); - break; -case 760: - case_760(); +case 756: + case_756(); break; -case 762: - case_762(); +case 761: + case_761(); break; case 763: case_763(); @@ -3454,19 +3450,19 @@ case 764: case_764(); break; case 765: -#line 5091 "cs-parser.jay" - { yyVal = yyVals[-1+yyTop]; } + case_765(); break; case 766: -#line 5095 "cs-parser.jay" +#line 5088 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 767: -#line 5096 "cs-parser.jay" +#line 5092 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 768: - case_768(); +#line 5093 "cs-parser.jay" + { yyVal = yyVals[-1+yyTop]; } break; case 769: case_769(); @@ -3474,8 +3470,8 @@ case 769: case 770: case_770(); break; -case 773: - case_773(); +case 771: + case_771(); break; case 774: case_774(); @@ -3484,14 +3480,14 @@ case 775: case_775(); break; case 776: -#line 5171 "cs-parser.jay" + case_776(); + break; +case 777: +#line 5167 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } break; -case 777: - case_777(); - break; case 778: case_778(); break; @@ -3508,13 +3504,13 @@ case 783: case_783(); break; case 784: -#line 5222 "cs-parser.jay" +#line 5211 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 785: -#line 5226 "cs-parser.jay" +#line 5215 "cs-parser.jay" { yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } @@ -3529,7 +3525,7 @@ case 788: case_788(); break; case 789: -#line 5255 "cs-parser.jay" +#line 5244 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3550,56 +3546,56 @@ case 798: case_798(); break; case 799: - case_799(); - break; -case 800: -#line 5315 "cs-parser.jay" +#line 5298 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 801: -#line 5323 "cs-parser.jay" +case 800: +#line 5306 "cs-parser.jay" { ((For) yyVals[-2+yyTop]).Initializer = (Statement) yyVals[-1+yyTop]; } break; -case 802: -#line 5327 "cs-parser.jay" +case 801: +#line 5310 "cs-parser.jay" { ((For) yyVals[-5+yyTop]).Condition = (BooleanExpression) yyVals[-1+yyTop]; } break; -case 803: -#line 5331 "cs-parser.jay" +case 802: +#line 5314 "cs-parser.jay" { ((For) yyVals[-8+yyTop]).Iterator = (Statement) yyVals[-1+yyTop]; } break; +case 803: + case_803(); + break; case 804: case_804(); break; case 805: - case_805(); - break; -case 806: -#line 5351 "cs-parser.jay" +#line 5334 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; +case 807: + case_807(); + break; case 808: case_808(); break; -case 809: - case_809(); - break; -case 811: -#line 5372 "cs-parser.jay" +case 810: +#line 5355 "cs-parser.jay" { yyVal = null; } break; -case 813: -#line 5377 "cs-parser.jay" +case 812: +#line 5360 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; +case 816: + case_816(); + break; case 817: case_817(); break; @@ -3615,11 +3611,11 @@ case 820: case 821: case_821(); break; -case 822: - case_822(); +case 828: + case_828(); break; -case 823: - case_823(); +case 829: + case_829(); break; case 830: case_830(); @@ -3642,18 +3638,18 @@ case 835: case 836: case_836(); break; -case 837: - case_837(); - break; -case 838: - case_838(); - break; -case 841: -#line 5578 "cs-parser.jay" +case 839: +#line 5536 "cs-parser.jay" { yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); } break; +case 840: + case_840(); + break; +case 841: + case_841(); + break; case 842: case_842(); break; @@ -3663,50 +3659,50 @@ case 843: case 844: case_844(); break; -case 845: - case_845(); +case 847: +#line 5589 "cs-parser.jay" + { + yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; -case 846: - case_846(); +case 848: + case_848(); break; case 849: -#line 5627 "cs-parser.jay" +#line 5608 "cs-parser.jay" { - yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = yyVals[-1+yyTop]; } break; case 850: case_850(); break; case 851: -#line 5646 "cs-parser.jay" +#line 5626 "cs-parser.jay" { - yyVal = yyVals[-1+yyTop]; + yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 852: - case_852(); - break; -case 853: -#line 5664 "cs-parser.jay" +#line 5633 "cs-parser.jay" { - yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 853: + case_853(); + break; case 854: -#line 5671 "cs-parser.jay" +#line 5643 "cs-parser.jay" { - yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } break; case 855: case_855(); break; case 856: -#line 5681 "cs-parser.jay" - { - yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); - } + case_856(); break; case 857: case_857(); @@ -3726,26 +3722,26 @@ case 861: case 862: case_862(); break; -case 863: - case_863(); - break; case 864: case_864(); break; case 865: - case_865(); +#line 5735 "cs-parser.jay" + { + Error_MissingInitializer (lexer.Location); + } break; case 866: case_866(); break; +case 867: + case_867(); + break; case 868: case_868(); break; case 869: -#line 5786 "cs-parser.jay" - { - Error_MissingInitializer (lexer.Location); - } + case_869(); break; case 870: case_870(); @@ -3763,76 +3759,76 @@ case 874: case_874(); break; case 875: - case_875(); +#line 5836 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 876: case_876(); break; case 877: - case_877(); +#line 5851 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 878: case_878(); break; case 879: -#line 5887 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } - break; -case 880: - case_880(); + case_879(); break; case 881: -#line 5902 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_881(); break; case 882: - case_882(); +#line 5896 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 883: case_883(); break; +case 884: + case_884(); + break; case 885: case_885(); break; case 886: -#line 5947 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } - break; -case 887: - case_887(); - break; -case 888: - case_888(); - break; -case 889: - case_889(); + case_886(); break; case 890: case_890(); break; -case 894: - case_894(); +case 896: +#line 5955 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } + break; +case 897: + case_897(); break; -case 900: -#line 6006 "cs-parser.jay" +case 898: +#line 5974 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; +case 899: + case_899(); + break; +case 900: + case_900(); + break; case 901: case_901(); break; case 902: -#line 6025 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_902(); break; case 903: case_903(); @@ -3849,155 +3845,143 @@ case 906: case 907: case_907(); break; -case 908: - case_908(); - break; case 909: - case_909(); +#line 6118 "cs-parser.jay" + { + yyVal = yyVals[0+yyTop]; + } break; case 910: - case_910(); +#line 6125 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 911: case_911(); break; case 913: -#line 6169 "cs-parser.jay" - { - yyVal = yyVals[0+yyTop]; - } + case_913(); break; case 914: -#line 6176 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_914(); break; -case 915: - case_915(); +case 916: + case_916(); break; case 917: case_917(); break; case 918: - case_918(); +#line 6171 "cs-parser.jay" + { + yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } + break; +case 919: + case_919(); break; case 920: case_920(); break; case 921: - case_921(); - break; -case 922: -#line 6222 "cs-parser.jay" +#line 6188 "cs-parser.jay" { - yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } break; +case 922: + case_922(); + break; case 923: case_923(); break; -case 924: - case_924(); - break; case 925: -#line 6239 "cs-parser.jay" - { - yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } + case_925(); break; case 926: case_926(); break; -case 927: - case_927(); - break; case 929: case_929(); break; case 930: case_930(); break; -case 933: - case_933(); - break; -case 934: - case_934(); - break; -case 942: -#line 6363 "cs-parser.jay" +case 938: +#line 6312 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; -case 943: -#line 6370 "cs-parser.jay" +case 939: +#line 6319 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } break; -case 944: - case_944(); +case 940: + case_940(); break; -case 945: - case_945(); +case 941: + case_941(); break; -case 946: -#line 6387 "cs-parser.jay" +case 942: +#line 6336 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; -case 947: -#line 6391 "cs-parser.jay" +case 943: +#line 6340 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 948: - case_948(); +case 944: + case_944(); break; -case 949: - case_949(); +case 945: + case_945(); break; -case 950: - case_950(); +case 946: + case_946(); break; -case 951: - case_951(); +case 947: + case_947(); break; -case 953: -#line 6427 "cs-parser.jay" +case 949: +#line 6376 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; -case 955: -#line 6435 "cs-parser.jay" +case 951: +#line 6384 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 956: -#line 6439 "cs-parser.jay" +case 952: +#line 6388 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; -case 957: -#line 6446 "cs-parser.jay" +case 953: +#line 6395 "cs-parser.jay" { yyVal = new List (0); } break; -case 959: - case_959(); +case 955: + case_955(); break; -case 960: - case_960(); +case 956: + case_956(); break; -case 961: - case_961(); +case 957: + case_957(); break; #line default } @@ -4058,42 +4042,33 @@ void case_13() { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; - if (s != "alias") { + if (s != "alias"){ syntax_error (lt.Location, "`alias' expected"); + } else if (lang_version == LanguageVersion.ISO_1) { + FeatureIsNotAvailable (lt.Location, "external alias"); } else { - if (lang_version == LanguageVersion.ISO_1) - FeatureIsNotAvailable (lt.Location, "external alias"); - - lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; - if (lt.Value == QualifiedAliasMember.GlobalAlias) { - RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location); - } - - var na = new UsingExternAlias (new MemberName (lt.Value, lt.Location), GetLocation (yyVals[-3+yyTop])); - current_namespace.AddUsing (na); - - lbag.AddLocation (na, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); + lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; + current_namespace.AddUsingExternalAlias (lt.Value, lt.Location, report); + ubag.AddExternAlias (GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop]), lt, GetLocation (yyVals[0+yyTop])); } } void case_17() -#line 461 "cs-parser.jay" +#line 454 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_18() -#line 469 "cs-parser.jay" +#line 459 "cs-parser.jay" { - var un = new UsingNamespace ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); - current_namespace.AddUsing (un); - - lbag.AddLocation (un, GetLocation (yyVals[0+yyTop])); + if (doc_support) + Lexer.doc_state = XmlCommentState.Allowed; } void case_19() -#line 476 "cs-parser.jay" +#line 467 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -4101,21 +4076,26 @@ void case_19() "An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead"); } - var un = new UsingAliasNamespace (new MemberName (lt.Value, lt.Location), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); - current_namespace.AddUsing (un); - - lbag.AddLocation (un, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); - } + current_namespace.AddUsingAlias (lt.Value, (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); + ubag.AddUsingAlias (GetLocation (yyVals[-4+yyTop]), lt, GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); + } void case_20() -#line 489 "cs-parser.jay" +#line 478 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; - } + } void case_21() -#line 502 "cs-parser.jay" +#line 486 "cs-parser.jay" +{ + current_namespace.AddUsing ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); + ubag.AddUsing (GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); + } + +void case_22() +#line 499 "cs-parser.jay" { Attributes attrs = (Attributes) yyVals[-2+yyTop]; MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4147,16 +4127,16 @@ void case_21() ubag.DeclareNamespace (GetLocation (yyVals[-1+yyTop]), name); } -void case_22() -#line 533 "cs-parser.jay" +void case_23() +#line 530 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; ubag.OpenNamespace (GetLocation (yyVals[0+yyTop])); } -void case_23() -#line 539 "cs-parser.jay" +void case_24() +#line 536 "cs-parser.jay" { current_namespace = current_namespace.Parent; current_class = current_namespace.SlaveDeclSpace; @@ -4168,15 +4148,15 @@ void case_23() ubag.EndNamespace (); } -void case_24() -#line 553 "cs-parser.jay" +void case_25() +#line 550 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName (lt.Value, lt.Location); } -void case_25() -#line 558 "cs-parser.jay" +void case_26() +#line 555 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location) { @@ -4184,15 +4164,15 @@ void case_25() }; } -void case_26() -#line 565 "cs-parser.jay" +void case_27() +#line 562 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new MemberName ("", lexer.Location); } -void case_31() -#line 583 "cs-parser.jay" +void case_32() +#line 580 "cs-parser.jay" { MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4202,8 +4182,8 @@ void case_31() yyVal = name; } -void case_40() -#line 615 "cs-parser.jay" +void case_41() +#line 612 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { TypeContainer ds = (TypeContainer)yyVals[0+yyTop]; @@ -4223,8 +4203,8 @@ void case_40() current_namespace.DeclarationFound = true; } -void case_49() -#line 665 "cs-parser.jay" +void case_50() +#line 662 "cs-parser.jay" { var sect = (List) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4236,8 +4216,8 @@ void case_49() } } -void case_50() -#line 676 "cs-parser.jay" +void case_51() +#line 673 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List) yyVals[0+yyTop]; @@ -4251,22 +4231,22 @@ void case_50() yyVal = attrs; } -void case_51() -#line 692 "cs-parser.jay" +void case_52() +#line 689 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } -void case_52() -#line 697 "cs-parser.jay" +void case_53() +#line 694 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } -void case_53() -#line 705 "cs-parser.jay" +void case_54() +#line 702 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4274,8 +4254,8 @@ void case_53() } } -void case_54() -#line 712 "cs-parser.jay" +void case_55() +#line 709 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4292,8 +4272,8 @@ void case_54() } } -void case_55() -#line 728 "cs-parser.jay" +void case_56() +#line 725 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; if (yyVals[-1+yyTop] != null) { @@ -4303,16 +4283,16 @@ void case_55() } } -void case_56() -#line 740 "cs-parser.jay" +void case_57() +#line 737 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); savedCloseLocation = GetLocation (yyVals[0+yyTop]); } -void case_59() -#line 748 "cs-parser.jay" +void case_60() +#line 745 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4323,8 +4303,8 @@ void case_59() } } -void case_61() -#line 765 "cs-parser.jay" +void case_62() +#line 762 "cs-parser.jay" { var attrs = (List) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4333,8 +4313,8 @@ void case_61() yyVal = attrs; } -void case_63() -#line 780 "cs-parser.jay" +void case_64() +#line 777 "cs-parser.jay" { --lexer.parsing_block; MemberName mname = (MemberName) yyVals[-2+yyTop]; @@ -4354,32 +4334,32 @@ void case_63() } } -void case_66() -#line 807 "cs-parser.jay" +void case_67() +#line 804 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); yyVal = yyVals[-1+yyTop]; } -void case_68() -#line 818 "cs-parser.jay" +void case_69() +#line 815 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { a, null }; } -void case_69() -#line 824 "cs-parser.jay" +void case_70() +#line 821 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); yyVal = new Arguments [] { null, a }; } -void case_70() -#line 830 "cs-parser.jay" +void case_71() +#line 827 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4395,8 +4375,8 @@ void case_70() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_71() -#line 845 "cs-parser.jay" +void case_72() +#line 842 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4407,8 +4387,8 @@ void case_71() attributeArgumentCommas.Add (GetLocation (yyVals[-1+yyTop])); } -void case_75() -#line 870 "cs-parser.jay" +void case_76() +#line 867 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4416,8 +4396,8 @@ void case_75() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_76() -#line 880 "cs-parser.jay" +void case_77() +#line 877 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4430,8 +4410,8 @@ void case_76() lbag.AddLocation (yyVal, GetLocation(yyVals[-2+yyTop])); } -void case_94() -#line 933 "cs-parser.jay" +void case_95() +#line 930 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4439,16 +4419,16 @@ void case_94() lexer.parsing_generic_declaration = false; } -void case_96() -#line 950 "cs-parser.jay" +void case_97() +#line 947 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Struct (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_97() -#line 957 "cs-parser.jay" +void case_98() +#line 954 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4461,15 +4441,15 @@ void case_97() lexer.parsing_modifiers = true; } -void case_98() -#line 969 "cs-parser.jay" +void case_99() +#line 966 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_99() -#line 974 "cs-parser.jay" +void case_100() +#line 971 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); --lexer.parsing_declaration; @@ -4477,16 +4457,16 @@ void case_99() Lexer.doc_state = XmlCommentState.Allowed; } -void case_100() -#line 981 "cs-parser.jay" +void case_101() +#line 978 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[-1+yyTop]); yyVal = pop_current_class (); } -void case_102() -#line 996 "cs-parser.jay" +void case_103() +#line 993 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4500,8 +4480,8 @@ void case_102() yyVal = current_field; } -void case_103() -#line 1009 "cs-parser.jay" +void case_104() +#line 1006 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4513,31 +4493,31 @@ void case_103() current_field = null; } -void case_108() -#line 1039 "cs-parser.jay" +void case_109() +#line 1036 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_110() -#line 1052 "cs-parser.jay" +void case_111() +#line 1049 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_111() -#line 1058 "cs-parser.jay" +void case_112() +#line 1055 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } -void case_114() -#line 1073 "cs-parser.jay" +void case_115() +#line 1070 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4551,8 +4531,8 @@ void case_114() yyVal = current_field; } -void case_115() -#line 1088 "cs-parser.jay" +void case_116() +#line 1085 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4564,8 +4544,8 @@ void case_115() current_field = null; } -void case_116() -#line 1101 "cs-parser.jay" +void case_117() +#line 1098 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4577,8 +4557,8 @@ void case_116() current_container.AddField (current_field); } -void case_117() -#line 1112 "cs-parser.jay" +void case_118() +#line 1109 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4591,16 +4571,16 @@ void case_117() current_field = null; } -void case_120() -#line 1135 "cs-parser.jay" +void case_121() +#line 1132 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; start_block (GetLocation (yyVals[0+yyTop])); } -void case_121() -#line 1141 "cs-parser.jay" +void case_122() +#line 1138 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4609,16 +4589,16 @@ void case_121() current_local_parameters = null; } -void case_126() -#line 1168 "cs-parser.jay" +void case_127() +#line 1165 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_128() -#line 1178 "cs-parser.jay" +void case_129() +#line 1175 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4626,39 +4606,39 @@ void case_128() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_133() -#line 1204 "cs-parser.jay" +void case_134() +#line 1201 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_135() -#line 1217 "cs-parser.jay" +void case_136() +#line 1214 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_136() -#line 1223 "cs-parser.jay" +void case_137() +#line 1220 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } -void case_139() -#line 1233 "cs-parser.jay" +void case_140() +#line 1230 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); yyVal = null; } -void case_140() -#line 1242 "cs-parser.jay" +void case_141() +#line 1239 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4669,8 +4649,8 @@ void case_140() current_container.AddMethod (m); } -void case_141() -#line 1252 "cs-parser.jay" +void case_142() +#line 1249 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4697,8 +4677,8 @@ void case_141() Lexer.doc_state = XmlCommentState.Allowed; } -void case_144() -#line 1292 "cs-parser.jay" +void case_145() +#line 1289 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4726,15 +4706,15 @@ void case_144() yyVal = method; } -void case_146() -#line 1327 "cs-parser.jay" +void case_147() +#line 1324 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } -void case_148() -#line 1336 "cs-parser.jay" +void case_149() +#line 1333 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4769,8 +4749,8 @@ void case_148() yyVal = method; } -void case_149() -#line 1373 "cs-parser.jay" +void case_150() +#line 1370 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4787,16 +4767,16 @@ void case_149() yyVal = method; } -void case_154() -#line 1402 "cs-parser.jay" +void case_155() +#line 1399 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_155() -#line 1408 "cs-parser.jay" +void case_156() +#line 1405 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); @@ -4806,8 +4786,8 @@ void case_155() lbag.AddLocation (yyVal, parameterListCommas); } -void case_156() -#line 1417 "cs-parser.jay" +void case_157() +#line 1414 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); @@ -4817,8 +4797,8 @@ void case_156() lbag.AddLocation (yyVal, parameterListCommas); } -void case_157() -#line 1426 "cs-parser.jay" +void case_158() +#line 1423 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4827,8 +4807,8 @@ void case_157() lbag.AddLocation (yyVal, parameterListCommas); } -void case_158() -#line 1434 "cs-parser.jay" +void case_159() +#line 1431 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4842,8 +4822,8 @@ void case_158() lbag.AddLocation (yyVal, parameterListCommas); } -void case_159() -#line 1447 "cs-parser.jay" +void case_160() +#line 1444 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4851,8 +4831,8 @@ void case_159() lbag.AddLocation (yyVal, parameterListCommas); } -void case_160() -#line 1454 "cs-parser.jay" +void case_161() +#line 1451 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4865,15 +4845,15 @@ void case_160() lbag.AddLocation (yyVal, parameterListCommas); } -void case_163() -#line 1474 "cs-parser.jay" +void case_164() +#line 1471 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } -void case_164() -#line 1482 "cs-parser.jay" +void case_165() +#line 1479 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4883,8 +4863,8 @@ void case_164() yyVal = parameters_bucket; } -void case_165() -#line 1491 "cs-parser.jay" +void case_166() +#line 1488 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4903,16 +4883,16 @@ void case_165() yyVal = yyVals[-2+yyTop]; } -void case_166() -#line 1515 "cs-parser.jay" +void case_167() +#line 1512 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_167() -#line 1524 "cs-parser.jay" +void case_168() +#line 1521 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4920,8 +4900,8 @@ void case_167() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_168() -#line 1534 "cs-parser.jay" +void case_169() +#line 1531 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4929,8 +4909,8 @@ void case_168() lbag.AddLocation (yyVal, parameterModifierLocation); } -void case_170() -#line 1549 "cs-parser.jay" +void case_171() +#line 1546 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4968,8 +4948,8 @@ void case_170() ((Parameter) yyVal).DefaultValue = new DefaultParameterValueExpression ((Expression) yyVals[0+yyTop]); } -void case_174() -#line 1598 "cs-parser.jay" +void case_175() +#line 1595 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4991,8 +4971,8 @@ void case_174() yyVal = mod; } -void case_175() -#line 1622 "cs-parser.jay" +void case_176() +#line 1619 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -5000,8 +4980,8 @@ void case_175() yyVal = Parameter.Modifier.REF; } -void case_176() -#line 1629 "cs-parser.jay" +void case_177() +#line 1626 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -5009,8 +4989,8 @@ void case_176() yyVal = Parameter.Modifier.OUT; } -void case_177() -#line 1636 "cs-parser.jay" +void case_178() +#line 1633 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -5021,16 +5001,16 @@ void case_177() yyVal = Parameter.Modifier.This; } -void case_178() -#line 1649 "cs-parser.jay" +void case_179() +#line 1646 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ParamsParameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Attributes) yyVals[-3+yyTop], lt.Location); lbag.AddLocation (yyVal, savedLocation); } -void case_179() -#line 1655 "cs-parser.jay" +void case_180() +#line 1652 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -5039,23 +5019,23 @@ void case_179() lbag.AddLocation (yyVal, savedLocation); } -void case_180() -#line 1663 "cs-parser.jay" +void case_181() +#line 1660 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_181() -#line 1671 "cs-parser.jay" +void case_182() +#line 1668 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Params) == 0) report.Error (1670, (GetLocation (yyVals[0+yyTop])), "The `params' modifier is not allowed in current context"); savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_182() -#line 1677 "cs-parser.jay" +void case_183() +#line 1674 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -5066,22 +5046,22 @@ void case_182() savedLocation = GetLocation (yyVals[-1+yyTop]); } -void case_184() -#line 1694 "cs-parser.jay" +void case_185() +#line 1691 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Arglist) == 0) report.Error (1669, GetLocation (yyVals[0+yyTop]), "__arglist is not valid in this context"); } -void case_185() -#line 1705 "cs-parser.jay" +void case_186() +#line 1702 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } -void case_186() -#line 1710 "cs-parser.jay" +void case_187() +#line 1707 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_class, type, (Modifiers) yyVals[-4+yyTop], @@ -5096,8 +5076,8 @@ void case_186() lexer.PropertyParsing = true; } -void case_187() -#line 1724 "cs-parser.jay" +void case_188() +#line 1721 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5105,15 +5085,15 @@ void case_187() current_property.DocComment = ConsumeStoredComment (); } -void case_188() -#line 1731 "cs-parser.jay" +void case_189() +#line 1728 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } -void case_190() -#line 1745 "cs-parser.jay" +void case_191() +#line 1742 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5139,8 +5119,8 @@ void case_190() lexer.PropertyParsing = true; } -void case_192() -#line 1774 "cs-parser.jay" +void case_193() +#line 1771 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5152,8 +5132,8 @@ void case_192() current_property = null; } -void case_197() -#line 1793 "cs-parser.jay" +void case_198() +#line 1790 "cs-parser.jay" { if (yyToken == Token.CLOSE_BRACE) { report.Error (548, lexer.Location, "`{0}': property or indexer must have at least one accessor", current_property.GetSignatureForError ()); @@ -5165,8 +5145,8 @@ void case_197() } } -void case_198() -#line 1807 "cs-parser.jay" +void case_199() +#line 1804 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5188,8 +5168,8 @@ void case_198() lexer.PropertyParsing = false; } -void case_199() -#line 1828 "cs-parser.jay" +void case_200() +#line 1825 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5211,8 +5191,8 @@ void case_199() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_200() -#line 1852 "cs-parser.jay" +void case_201() +#line 1849 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5239,8 +5219,8 @@ void case_200() lexer.PropertyParsing = false; } -void case_201() -#line 1878 "cs-parser.jay" +void case_202() +#line 1875 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5262,30 +5242,30 @@ void case_201() Lexer.doc_state = XmlCommentState.NotAllowed; } -void case_203() -#line 1903 "cs-parser.jay" +void case_204() +#line 1900 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } -void case_204() -#line 1908 "cs-parser.jay" +void case_205() +#line 1905 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } -void case_206() -#line 1923 "cs-parser.jay" +void case_207() +#line 1920 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Interface (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_207() -#line 1930 "cs-parser.jay" +void case_208() +#line 1927 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5299,16 +5279,16 @@ void case_207() lexer.parsing_modifiers = true; } -void case_208() -#line 1943 "cs-parser.jay" +void case_209() +#line 1940 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_209() -#line 1949 "cs-parser.jay" +void case_210() +#line 1946 "cs-parser.jay" { if (yyVals[0+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[0+yyTop]); @@ -5316,8 +5296,8 @@ void case_209() yyVal = pop_current_class (); } -void case_225() -#line 2009 "cs-parser.jay" +void case_226() +#line 2006 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5346,15 +5326,15 @@ void case_225() current_local_parameters = null; } -void case_229() -#line 2046 "cs-parser.jay" +void case_230() +#line 2043 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_231() -#line 2058 "cs-parser.jay" +void case_232() +#line 2055 "cs-parser.jay" { valid_param_mod = 0; @@ -5395,8 +5375,8 @@ void case_231() lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), savedOperatorLocation, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_256() -#line 2134 "cs-parser.jay" +void case_257() +#line 2131 "cs-parser.jay" { valid_param_mod = 0; @@ -5412,8 +5392,8 @@ void case_256() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_258() -#line 2153 "cs-parser.jay" +void case_259() +#line 2150 "cs-parser.jay" { valid_param_mod = 0; @@ -5429,24 +5409,24 @@ void case_258() lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_259() -#line 2168 "cs-parser.jay" +void case_260() +#line 2165 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Implicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_260() -#line 2174 "cs-parser.jay" +void case_261() +#line 2171 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; yyVal = new OperatorDeclaration (Operator.OpType.Explicit, null, GetLocation (yyVals[-1+yyTop])); } -void case_261() -#line 2184 "cs-parser.jay" +void case_262() +#line 2181 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5461,8 +5441,8 @@ void case_261() Lexer.doc_state = XmlCommentState.Allowed; } -void case_262() -#line 2203 "cs-parser.jay" +void case_263() +#line 2200 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5472,8 +5452,8 @@ void case_262() valid_param_mod = ParameterModifierType.All; } -void case_263() -#line 2212 "cs-parser.jay" +void case_264() +#line 2209 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5485,8 +5465,8 @@ void case_263() start_block (lexer.Location); } -void case_264() -#line 2223 "cs-parser.jay" +void case_265() +#line 2220 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5515,31 +5495,31 @@ void case_264() yyVal = c; } -void case_270() -#line 2268 "cs-parser.jay" +void case_271() +#line 2265 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_272() -#line 2278 "cs-parser.jay" +void case_273() +#line 2275 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_273() -#line 2284 "cs-parser.jay" +void case_274() +#line 2281 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_274() -#line 2292 "cs-parser.jay" +void case_275() +#line 2289 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5549,8 +5529,8 @@ void case_274() current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; } -void case_275() -#line 2301 "cs-parser.jay" +void case_276() +#line 2298 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5571,8 +5551,8 @@ void case_275() current_local_parameters = null; } -void case_276() -#line 2326 "cs-parser.jay" +void case_277() +#line 2323 "cs-parser.jay" { current_event_field = new EventField (current_class, (FullNamedExpression) yyVals[-1+yyTop], (Modifiers) yyVals[-3+yyTop], (MemberName) yyVals[0+yyTop], (Attributes) yyVals[-4+yyTop]); current_container.AddEvent (current_event_field); @@ -5585,8 +5565,8 @@ void case_276() yyVal = current_event_field; } -void case_277() -#line 2340 "cs-parser.jay" +void case_278() +#line 2337 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5597,8 +5577,8 @@ void case_277() current_event_field = null; } -void case_278() -#line 2353 "cs-parser.jay" +void case_279() +#line 2350 "cs-parser.jay" { current_event = new EventProperty (current_class, (FullNamedExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-1+yyTop], (Attributes) yyVals[-5+yyTop]); current_container.AddEvent (current_event); @@ -5607,8 +5587,8 @@ void case_278() lexer.EventParsing = true; } -void case_279() -#line 2361 "cs-parser.jay" +void case_280() +#line 2358 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) report.Error (69, GetLocation (yyVals[-2+yyTop]), "Event in interface cannot have add or remove accessors"); @@ -5616,8 +5596,8 @@ void case_279() lexer.EventParsing = false; } -void case_280() -#line 2368 "cs-parser.jay" +void case_281() +#line 2365 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5629,23 +5609,23 @@ void case_280() current_local_parameters = null; } -void case_283() -#line 2387 "cs-parser.jay" +void case_284() +#line 2384 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } -void case_288() -#line 2411 "cs-parser.jay" +void case_289() +#line 2408 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_290() -#line 2421 "cs-parser.jay" +void case_291() +#line 2418 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5653,8 +5633,8 @@ void case_290() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_291() -#line 2430 "cs-parser.jay" +void case_292() +#line 2427 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5667,29 +5647,29 @@ void case_291() } } -void case_295() -#line 2451 "cs-parser.jay" +void case_296() +#line 2448 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_296() -#line 2456 "cs-parser.jay" +void case_297() +#line 2453 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } -void case_297() -#line 2461 "cs-parser.jay" +void case_298() +#line 2458 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } -void case_298() -#line 2469 "cs-parser.jay" +void case_299() +#line 2466 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5702,8 +5682,8 @@ void case_298() lexer.EventParsing = false; } -void case_299() -#line 2481 "cs-parser.jay" +void case_300() +#line 2478 "cs-parser.jay" { lexer.EventParsing = true; @@ -5717,8 +5697,8 @@ void case_299() current_local_parameters = null; } -void case_300() -#line 2497 "cs-parser.jay" +void case_301() +#line 2494 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5731,8 +5711,8 @@ void case_300() lexer.EventParsing = false; } -void case_301() -#line 2509 "cs-parser.jay" +void case_302() +#line 2506 "cs-parser.jay" { lexer.EventParsing = true; @@ -5746,22 +5726,22 @@ void case_301() current_local_parameters = null; } -void case_302() -#line 2525 "cs-parser.jay" +void case_303() +#line 2522 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } -void case_304() -#line 2538 "cs-parser.jay" +void case_305() +#line 2535 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } -void case_305() -#line 2543 "cs-parser.jay" +void case_306() +#line 2540 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5779,16 +5759,16 @@ void case_305() } } -void case_306() -#line 2560 "cs-parser.jay" +void case_307() +#line 2557 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_307() -#line 2566 "cs-parser.jay" +void case_308() +#line 2563 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); if (yyVals[0+yyTop] != null) { @@ -5803,8 +5783,8 @@ void case_307() yyVal = pop_current_class (); } -void case_309() -#line 2584 "cs-parser.jay" +void case_310() +#line 2581 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5816,22 +5796,22 @@ void case_309() } } -void case_310() -#line 2595 "cs-parser.jay" +void case_311() +#line 2592 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } -void case_315() -#line 2613 "cs-parser.jay" +void case_316() +#line 2610 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } -void case_316() -#line 2621 "cs-parser.jay" +void case_317() +#line 2618 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var em = new EnumMember ((Enum) current_class, new MemberName (lt.Value, lt.Location), (Attributes) yyVals[-1+yyTop]); @@ -5845,8 +5825,8 @@ void case_316() yyVal = em; } -void case_317() -#line 2634 "cs-parser.jay" +void case_318() +#line 2631 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5855,8 +5835,8 @@ void case_317() } } -void case_318() -#line 2642 "cs-parser.jay" +void case_319() +#line 2639 "cs-parser.jay" { --lexer.parsing_block; @@ -5871,8 +5851,8 @@ void case_318() yyVal = em; } -void case_320() -#line 2667 "cs-parser.jay" +void case_321() +#line 2664 "cs-parser.jay" { valid_param_mod = 0; @@ -5891,8 +5871,8 @@ void case_320() lexer.ConstraintsParsing = true; } -void case_322() -#line 2689 "cs-parser.jay" +void case_323() +#line 2686 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5907,8 +5887,8 @@ void case_322() current_delegate = null; } -void case_324() -#line 2707 "cs-parser.jay" +void case_325() +#line 2704 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5916,8 +5896,8 @@ void case_324() yyVal = ComposedTypeSpecifier.CreateNullable (GetLocation (yyVals[0+yyTop])); } -void case_326() -#line 2718 "cs-parser.jay" +void case_327() +#line 2715 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5925,8 +5905,8 @@ void case_326() yyVal = new MemberName (lt1.Value, lt2.Value, (TypeArguments) yyVals[0+yyTop], lt1.Location); } -void case_328() -#line 2729 "cs-parser.jay" +void case_329() +#line 2726 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -5934,15 +5914,15 @@ void case_328() }; } -void case_329() -#line 2739 "cs-parser.jay" +void case_330() +#line 2736 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_331() -#line 2751 "cs-parser.jay" +void case_332() +#line 2748 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5954,15 +5934,15 @@ void case_331() yyVal = yyVals[-1+yyTop];; } -void case_332() -#line 2762 "cs-parser.jay" +void case_333() +#line 2759 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } -void case_333() -#line 2770 "cs-parser.jay" +void case_334() +#line 2767 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5970,8 +5950,8 @@ void case_333() locationListStack.Push (new List ()); } -void case_334() -#line 2777 "cs-parser.jay" +void case_335() +#line 2774 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5979,16 +5959,16 @@ void case_334() locationListStack.Peek ().Add (GetLocation (yyVals[-1+yyTop])); } -void case_336() -#line 2794 "cs-parser.jay" +void case_337() +#line 2791 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_337() -#line 2803 "cs-parser.jay" +void case_338() +#line 2800 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeArguments != null) @@ -5996,38 +5976,38 @@ void case_337() mn.GetSignatureForError ())); } -void case_339() -#line 2814 "cs-parser.jay" +void case_340() +#line 2811 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_340() -#line 2823 "cs-parser.jay" +void case_341() +#line 2820 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } -void case_341() -#line 2828 "cs-parser.jay" +void case_342() +#line 2825 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[0+yyTop])); } -void case_342() -#line 2836 "cs-parser.jay" +void case_343() +#line 2833 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_343() -#line 2842 "cs-parser.jay" +void case_344() +#line 2839 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6036,16 +6016,16 @@ void case_343() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_344() -#line 2850 "cs-parser.jay" +void case_345() +#line 2847 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_346() -#line 2860 "cs-parser.jay" +void case_347() +#line 2857 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -6054,16 +6034,16 @@ void case_346() lbag.AppendTo (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_347() -#line 2871 "cs-parser.jay" +void case_348() +#line 2868 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); yyVal = type_args; } -void case_348() -#line 2877 "cs-parser.jay" +void case_349() +#line 2874 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -6071,8 +6051,8 @@ void case_348() lbag.AppendTo (type_args, GetLocation (yyVals[-1+yyTop])); } -void case_349() -#line 2887 "cs-parser.jay" +void case_350() +#line 2884 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; var variance = (Variance) yyVals[-1+yyTop]; @@ -6081,8 +6061,8 @@ void case_349() lbag.AddLocation (yyVal, savedLocation); } -void case_350() -#line 2895 "cs-parser.jay" +void case_351() +#line 2892 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") report.Error (81, GetLocation (yyVals[0+yyTop]), "Type parameter declaration must be an identifier not a type"); @@ -6092,29 +6072,29 @@ void case_350() yyVal = new TypeParameterName ("", null, lexer.Location); } -void case_355() -#line 2929 "cs-parser.jay" +void case_356() +#line 2926 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_357() -#line 2938 "cs-parser.jay" +void case_358() +#line 2935 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_359() -#line 2947 "cs-parser.jay" +void case_360() +#line 2944 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_362() -#line 2963 "cs-parser.jay" +void case_363() +#line 2960 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; @@ -6128,23 +6108,23 @@ void case_362() } } -void case_364() -#line 2980 "cs-parser.jay" +void case_365() +#line 2977 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_367() -#line 2996 "cs-parser.jay" +void case_368() +#line 2993 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = types; } -void case_368() -#line 3002 "cs-parser.jay" +void case_369() +#line 2999 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6152,8 +6132,8 @@ void case_368() yyVal = types; } -void case_369() -#line 3012 "cs-parser.jay" +void case_370() +#line 3009 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) { report.Error (1521, GetLocation (yyVals[0+yyTop]), "Invalid base type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -6161,36 +6141,36 @@ void case_369() yyVal = yyVals[0+yyTop]; } -void case_370() -#line 3019 "cs-parser.jay" +void case_371() +#line 3016 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_407() -#line 3081 "cs-parser.jay" +void case_408() +#line 3078 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_408() -#line 3085 "cs-parser.jay" +void case_409() +#line 3082 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } -void case_419() -#line 3126 "cs-parser.jay" +void case_420() +#line 3123 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_421() -#line 3138 "cs-parser.jay" +void case_422() +#line 3135 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6198,8 +6178,8 @@ void case_421() }; } -void case_422() -#line 3145 "cs-parser.jay" +void case_423() +#line 3142 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6207,8 +6187,8 @@ void case_422() }; } -void case_423() -#line 3152 "cs-parser.jay" +void case_424() +#line 3149 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { @@ -6216,8 +6196,8 @@ void case_423() }; } -void case_424() -#line 3159 "cs-parser.jay" +void case_425() +#line 3156 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6226,29 +6206,29 @@ void case_424() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_426() -#line 3169 "cs-parser.jay" +void case_427() +#line 3166 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_428() -#line 3177 "cs-parser.jay" +void case_429() +#line 3174 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_429() -#line 3185 "cs-parser.jay" +void case_430() +#line 3182 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_432() -#line 3198 "cs-parser.jay" +void case_433() +#line 3195 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6259,23 +6239,23 @@ void case_432() } } -void case_433() -#line 3208 "cs-parser.jay" +void case_434() +#line 3205 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_436() -#line 3224 "cs-parser.jay" +void case_437() +#line 3221 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); yyVal = a; } -void case_437() -#line 3230 "cs-parser.jay" +void case_438() +#line 3227 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6283,23 +6263,23 @@ void case_437() yyVal = a; } -void case_438() -#line 3236 "cs-parser.jay" +void case_439() +#line 3233 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_439() -#line 3244 "cs-parser.jay" +void case_440() +#line 3241 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_441() -#line 3253 "cs-parser.jay" +void case_442() +#line 3250 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6308,8 +6288,8 @@ void case_441() yyVal = new CompletionElementInitializer (csn.Prefix, csn.Location); } -void case_442() -#line 3261 "cs-parser.jay" +void case_443() +#line 3258 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6317,23 +6297,23 @@ void case_442() yyVal = new CollectionElementInitializer ((List)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_443() -#line 3268 "cs-parser.jay" +void case_444() +#line 3265 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } -void case_448() -#line 3286 "cs-parser.jay" +void case_449() +#line 3283 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); yyVal = list; } -void case_449() -#line 3292 "cs-parser.jay" +void case_450() +#line 3289 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6344,8 +6324,8 @@ void case_449() yyVal = list; } -void case_450() -#line 3302 "cs-parser.jay" +void case_451() +#line 3299 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6361,65 +6341,65 @@ void case_450() yyVal = list; } -void case_451() -#line 3317 "cs-parser.jay" +void case_452() +#line 3314 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } -void case_452() -#line 3322 "cs-parser.jay" +void case_453() +#line 3319 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } -void case_457() -#line 3343 "cs-parser.jay" +void case_458() +#line 3340 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_458() -#line 3348 "cs-parser.jay" +void case_459() +#line 3345 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_459() -#line 3353 "cs-parser.jay" +void case_460() +#line 3350 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_460() -#line 3358 "cs-parser.jay" +void case_461() +#line 3355 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_462() -#line 3370 "cs-parser.jay" +void case_463() +#line 3367 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_465() -#line 3386 "cs-parser.jay" +void case_466() +#line 3383 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_466() -#line 3392 "cs-parser.jay" +void case_467() +#line 3389 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6427,23 +6407,23 @@ void case_466() yyVal = list; } -void case_467() -#line 3398 "cs-parser.jay" +void case_468() +#line 3395 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_468() -#line 3406 "cs-parser.jay" +void case_469() +#line 3403 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); yyVal = args; } -void case_469() -#line 3412 "cs-parser.jay" +void case_470() +#line 3409 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6454,22 +6434,22 @@ void case_469() yyVal = args; } -void case_473() -#line 3440 "cs-parser.jay" +void case_474() +#line 3437 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_474() -#line 3445 "cs-parser.jay" +void case_475() +#line 3442 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } -void case_477() -#line 3467 "cs-parser.jay" +void case_478() +#line 3464 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6483,8 +6463,8 @@ void case_477() lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_478() -#line 3480 "cs-parser.jay" +void case_479() +#line 3477 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6492,8 +6472,8 @@ void case_478() yyVal = new NewInitialize ((FullNamedExpression) yyVals[-1+yyTop], null, (CollectionOrObjectInitializers) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_479() -#line 3492 "cs-parser.jay" +void case_480() +#line 3489 "cs-parser.jay" { yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], (List) yyVals[-3+yyTop], new ComposedTypeSpecifier (((List) yyVals[-3+yyTop]).Count, GetLocation (yyVals[-4+yyTop])) { @@ -6502,8 +6482,8 @@ void case_479() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_480() -#line 3500 "cs-parser.jay" +void case_481() +#line 3497 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6511,8 +6491,8 @@ void case_480() yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-2+yyTop], (ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } -void case_481() -#line 3507 "cs-parser.jay" +void case_482() +#line 3504 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6520,29 +6500,29 @@ void case_481() yyVal = new ImplicitlyTypedArrayCreation ((ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_482() -#line 3514 "cs-parser.jay" +void case_483() +#line 3511 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } -void case_483() -#line 3519 "cs-parser.jay" +void case_484() +#line 3516 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_485() -#line 3530 "cs-parser.jay" +void case_486() +#line 3527 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } -void case_486() -#line 3538 "cs-parser.jay" +void case_487() +#line 3535 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6553,16 +6533,16 @@ void case_486() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_491() -#line 3561 "cs-parser.jay" +void case_492() +#line 3558 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); yyVal = a; } -void case_492() -#line 3567 "cs-parser.jay" +void case_493() +#line 3564 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6571,60 +6551,60 @@ void case_492() yyVal = a; } -void case_493() -#line 3578 "cs-parser.jay" +void case_494() +#line 3575 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_494() -#line 3584 "cs-parser.jay" +void case_495() +#line 3581 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), lt.Value, lt.Location); } -void case_495() -#line 3590 "cs-parser.jay" +void case_496() +#line 3587 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } -void case_496() -#line 3595 "cs-parser.jay" +void case_497() +#line 3592 "cs-parser.jay" { report.Error (746, lexer.Location, "Invalid anonymous type member declarator. Anonymous type members must be a member assignment, simple name or member access expression"); yyVal = null; } -void case_500() -#line 3610 "cs-parser.jay" +void case_501() +#line 3607 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_501() -#line 3618 "cs-parser.jay" +void case_502() +#line 3615 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_502() -#line 3623 "cs-parser.jay" +void case_503() +#line 3620 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_507() -#line 3653 "cs-parser.jay" +void case_508() +#line 3650 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6632,8 +6612,8 @@ void case_507() yyVal = ai; } -void case_508() -#line 3660 "cs-parser.jay" +void case_509() +#line 3657 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6645,16 +6625,16 @@ void case_508() yyVal = ai; } -void case_509() -#line 3674 "cs-parser.jay" +void case_510() +#line 3671 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); yyVal = list; } -void case_510() -#line 3680 "cs-parser.jay" +void case_511() +#line 3677 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6662,31 +6642,31 @@ void case_510() yyVal = list; } -void case_512() -#line 3694 "cs-parser.jay" +void case_513() +#line 3691 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_515() -#line 3705 "cs-parser.jay" +void case_516() +#line 3702 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_516() -#line 3713 "cs-parser.jay" +void case_517() +#line 3710 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (int) yyVals[0+yyTop], lt.Location); } -void case_517() -#line 3719 "cs-parser.jay" +void case_518() +#line 3716 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6695,8 +6675,8 @@ void case_517() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_518() -#line 3727 "cs-parser.jay" +void case_519() +#line 3724 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6705,8 +6685,8 @@ void case_518() }; } -void case_519() -#line 3735 "cs-parser.jay" +void case_520() +#line 3732 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6715,8 +6695,8 @@ void case_519() }; } -void case_520() -#line 3743 "cs-parser.jay" +void case_521() +#line 3740 "cs-parser.jay" { var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); if (te.HasTypeArguments) @@ -6728,8 +6708,8 @@ void case_520() }; } -void case_521() -#line 3757 "cs-parser.jay" +void case_522() +#line 3754 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6737,8 +6717,8 @@ void case_521() yyVal = yyVals[0+yyTop]; } -void case_522() -#line 3767 "cs-parser.jay" +void case_523() +#line 3764 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6747,36 +6727,36 @@ void case_522() yyVal = lt; } -void case_523() -#line 3778 "cs-parser.jay" +void case_524() +#line 3775 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_524() -#line 3786 "cs-parser.jay" +void case_525() +#line 3783 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_525() -#line 3794 "cs-parser.jay" +void case_526() +#line 3791 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_526() -#line 3802 "cs-parser.jay" +void case_527() +#line 3799 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_528() -#line 3814 "cs-parser.jay" +void case_529() +#line 3811 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6786,8 +6766,8 @@ void case_528() } } -void case_530() -#line 3827 "cs-parser.jay" +void case_531() +#line 3824 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -6798,8 +6778,8 @@ void case_530() } } -void case_534() -#line 3852 "cs-parser.jay" +void case_535() +#line 3849 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6807,8 +6787,8 @@ void case_534() savedCloseLocation = GetLocation (yyVals[-2+yyTop]); } -void case_535() -#line 3862 "cs-parser.jay" +void case_536() +#line 3859 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6817,15 +6797,15 @@ void case_535() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_539() -#line 3882 "cs-parser.jay" +void case_540() +#line 3879 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_540() -#line 3887 "cs-parser.jay" +void case_541() +#line 3884 "cs-parser.jay" { if (!async_block) { report.Error (1992, GetLocation (yyVals[-1+yyTop]), @@ -6837,134 +6817,134 @@ void case_540() yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_549() -#line 3934 "cs-parser.jay" +void case_550() +#line 3931 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_550() -#line 3939 "cs-parser.jay" +void case_551() +#line 3936 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_551() -#line 3944 "cs-parser.jay" +void case_552() +#line 3941 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_553() -#line 3953 "cs-parser.jay" +void case_554() +#line 3950 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_555() -#line 3962 "cs-parser.jay" +void case_556() +#line 3959 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_559() -#line 3979 "cs-parser.jay" +void case_560() +#line 3976 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_560() -#line 3984 "cs-parser.jay" +void case_561() +#line 3981 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_562() -#line 3993 "cs-parser.jay" +void case_563() +#line 3990 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_563() -#line 3998 "cs-parser.jay" +void case_564() +#line 3995 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_564() -#line 4003 "cs-parser.jay" +void case_565() +#line 4000 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_565() -#line 4008 "cs-parser.jay" +void case_566() +#line 4005 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_567() -#line 4017 "cs-parser.jay" +void case_568() +#line 4014 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_568() -#line 4022 "cs-parser.jay" +void case_569() +#line 4019 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_570() -#line 4031 "cs-parser.jay" +void case_571() +#line 4028 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_572() -#line 4040 "cs-parser.jay" +void case_573() +#line 4037 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_574() -#line 4049 "cs-parser.jay" +void case_575() +#line 4046 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_576() -#line 4058 "cs-parser.jay" +void case_577() +#line 4055 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_578() -#line 4067 "cs-parser.jay" +void case_579() +#line 4064 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_580() -#line 4076 "cs-parser.jay" +void case_581() +#line 4073 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6972,85 +6952,85 @@ void case_580() yyVal = new Nullable.NullCoalescingOperator ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_582() -#line 4087 "cs-parser.jay" +void case_583() +#line 4084 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_584() -#line 4099 "cs-parser.jay" +void case_585() +#line 4096 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_585() -#line 4104 "cs-parser.jay" +void case_586() +#line 4101 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_586() -#line 4109 "cs-parser.jay" +void case_587() +#line 4106 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_587() -#line 4114 "cs-parser.jay" +void case_588() +#line 4111 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_588() -#line 4119 "cs-parser.jay" +void case_589() +#line 4116 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_589() -#line 4124 "cs-parser.jay" +void case_590() +#line 4121 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_590() -#line 4129 "cs-parser.jay" +void case_591() +#line 4126 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_591() -#line 4134 "cs-parser.jay" +void case_592() +#line 4131 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_592() -#line 4139 "cs-parser.jay" +void case_593() +#line 4136 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_593() -#line 4144 "cs-parser.jay" +void case_594() +#line 4141 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_594() -#line 4152 "cs-parser.jay" +void case_595() +#line 4149 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -7058,8 +7038,8 @@ void case_594() yyVal = pars; } -void case_595() -#line 4159 "cs-parser.jay" +void case_596() +#line 4156 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -7073,39 +7053,39 @@ void case_595() yyVal = pars; } -void case_596() -#line 4175 "cs-parser.jay" +void case_597() +#line 4172 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], null, lt.Location); } -void case_597() -#line 4181 "cs-parser.jay" +void case_598() +#line 4178 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, Parameter.Modifier.NONE, null, lt.Location); } -void case_598() -#line 4187 "cs-parser.jay" +void case_599() +#line 4184 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } -void case_600() -#line 4195 "cs-parser.jay" +void case_601() +#line 4192 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); lbag.AddLocation (yyVal, parameterListCommas); } -void case_604() -#line 4212 "cs-parser.jay" +void case_605() +#line 4209 "cs-parser.jay" { Block b = end_block (lexer.Location); b.IsCompilerGenerated = true; @@ -7113,94 +7093,94 @@ void case_604() yyVal = b; } -void case_606() -#line 4223 "cs-parser.jay" +void case_607() +#line 4220 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } -void case_607() -#line 4231 "cs-parser.jay" +void case_608() +#line 4228 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), false, lt.Location); } -void case_608() -#line 4237 "cs-parser.jay" +void case_609() +#line 4234 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_609() -#line 4242 "cs-parser.jay" +void case_610() +#line 4239 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); start_anonymous (true, new ParametersCompiled (p), true, lt.Location); } -void case_610() -#line 4248 "cs-parser.jay" +void case_611() +#line 4245 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_612() -#line 4257 "cs-parser.jay" +void case_613() +#line 4254 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } -void case_613() -#line 4262 "cs-parser.jay" +void case_614() +#line 4259 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_615() -#line 4271 "cs-parser.jay" +void case_616() +#line 4268 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } -void case_616() -#line 4276 "cs-parser.jay" +void case_617() +#line 4273 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_623() -#line 4299 "cs-parser.jay" +void case_624() +#line 4296 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_624() -#line 4304 "cs-parser.jay" +void case_625() +#line 4301 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_625() -#line 4309 "cs-parser.jay" +void case_626() +#line 4306 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_629() -#line 4338 "cs-parser.jay" +void case_630() +#line 4335 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); Class c = new Class (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]); @@ -7212,8 +7192,8 @@ void case_629() lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_630() -#line 4350 "cs-parser.jay" +void case_631() +#line 4347 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7227,16 +7207,16 @@ void case_630() lexer.parsing_modifiers = true; } -void case_631() -#line 4363 "cs-parser.jay" +void case_632() +#line 4360 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } -void case_632() -#line 4369 "cs-parser.jay" +void case_633() +#line 4366 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); if (yyVals[0+yyTop] != null) @@ -7244,16 +7224,16 @@ void case_632() yyVal = pop_current_class (); } -void case_635() -#line 4386 "cs-parser.jay" +void case_636() +#line 4383 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; lexer.parsing_modifiers = false; } -void case_638() -#line 4400 "cs-parser.jay" +void case_639() +#line 4397 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7270,8 +7250,8 @@ void case_638() yyVal = m1 | m2; } -void case_639() -#line 4419 "cs-parser.jay" +void case_640() +#line 4416 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7280,92 +7260,92 @@ void case_639() report.Error (1530, GetLocation (yyVals[0+yyTop]), "Keyword `new' is not allowed on namespace elements"); } -void case_640() -#line 4427 "cs-parser.jay" +void case_641() +#line 4424 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_641() -#line 4432 "cs-parser.jay" +void case_642() +#line 4429 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_642() -#line 4437 "cs-parser.jay" +void case_643() +#line 4434 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_643() -#line 4442 "cs-parser.jay" +void case_644() +#line 4439 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_644() -#line 4447 "cs-parser.jay" +void case_645() +#line 4444 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_645() -#line 4452 "cs-parser.jay" +void case_646() +#line 4449 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_646() -#line 4457 "cs-parser.jay" +void case_647() +#line 4454 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_647() -#line 4462 "cs-parser.jay" +void case_648() +#line 4459 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_648() -#line 4467 "cs-parser.jay" +void case_649() +#line 4464 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_649() -#line 4472 "cs-parser.jay" +void case_650() +#line 4469 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_650() -#line 4477 "cs-parser.jay" +void case_651() +#line 4474 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_651() -#line 4482 "cs-parser.jay" +void case_652() +#line 4479 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_652() -#line 4487 "cs-parser.jay" +void case_653() +#line 4484 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7373,37 +7353,37 @@ void case_652() Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_653() -#line 4494 "cs-parser.jay" +void case_654() +#line 4491 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_655() -#line 4503 "cs-parser.jay" +void case_656() +#line 4500 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); current_container.AddBasesForPart (current_class, (List) yyVals[0+yyTop]); } -void case_658() -#line 4516 "cs-parser.jay" +void case_659() +#line 4513 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_659() -#line 4524 "cs-parser.jay" +void case_660() +#line 4521 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); yyVal = constraints; } -void case_660() -#line 4530 "cs-parser.jay" +void case_661() +#line 4527 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7420,24 +7400,24 @@ void case_660() yyVal = constraints; } -void case_661() -#line 4549 "cs-parser.jay" +void case_662() +#line 4546 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_662() -#line 4558 "cs-parser.jay" +void case_663() +#line 4555 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); yyVal = constraints; } -void case_663() -#line 4564 "cs-parser.jay" +void case_664() +#line 4561 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7462,8 +7442,8 @@ void case_663() yyVal = constraints; } -void case_664() -#line 4591 "cs-parser.jay" +void case_665() +#line 4588 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) report.Error (706, GetLocation (yyVals[0+yyTop]), "Invalid constraint type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -7471,15 +7451,15 @@ void case_664() yyVal = yyVals[0+yyTop]; } -void case_665() -#line 4598 "cs-parser.jay" +void case_666() +#line 4595 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_669() -#line 4618 "cs-parser.jay" +void case_670() +#line 4615 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7487,57 +7467,57 @@ void case_669() yyVal = yyVals[0+yyTop]; } -void case_670() -#line 4628 "cs-parser.jay" +void case_671() +#line 4625 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_671() -#line 4633 "cs-parser.jay" +void case_672() +#line 4630 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_672() -#line 4654 "cs-parser.jay" +void case_673() +#line 4651 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } -void case_674() -#line 4666 "cs-parser.jay" +void case_675() +#line 4663 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_675() -#line 4671 "cs-parser.jay" +void case_676() +#line 4668 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } -void case_676() -#line 4680 "cs-parser.jay" +void case_677() +#line 4677 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_677() -#line 4685 "cs-parser.jay" +void case_678() +#line 4682 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_685() -#line 4713 "cs-parser.jay" +void case_686() +#line 4710 "cs-parser.jay" { Error_SyntaxError (yyToken); var lt =(Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7546,43 +7526,43 @@ void case_685() yyVal = null; } -void case_686() -#line 4722 "cs-parser.jay" +void case_687() +#line 4719 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_719() -#line 4786 "cs-parser.jay" +void case_720() +#line 4783 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_720() -#line 4791 "cs-parser.jay" +void case_721() +#line 4788 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } -void case_721() -#line 4796 "cs-parser.jay" +void case_722() +#line 4793 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_722() -#line 4804 "cs-parser.jay" +void case_723() +#line 4801 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } -void case_723() -#line 4812 "cs-parser.jay" +void case_724() +#line 4809 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7591,8 +7571,8 @@ void case_723() current_block.AddStatement (labeled); } -void case_726() -#line 4825 "cs-parser.jay" +void case_727() +#line 4822 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7600,8 +7580,8 @@ void case_726() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_727() -#line 4841 "cs-parser.jay" +void case_728() +#line 4838 "cs-parser.jay" { /* Ok, the above "primary_expression" is there to get rid of*/ /* both reduce/reduce and shift/reduces in the grammar, it should*/ @@ -7632,8 +7612,8 @@ void case_727() } } -void case_728() -#line 4871 "cs-parser.jay" +void case_729() +#line 4868 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7645,8 +7625,8 @@ void case_728() } } -void case_729() -#line 4882 "cs-parser.jay" +void case_730() +#line 4879 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7654,22 +7634,22 @@ void case_729() yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_732() -#line 4897 "cs-parser.jay" +void case_733() +#line 4894 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_734() -#line 4906 "cs-parser.jay" +void case_735() +#line 4903 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_737() -#line 4922 "cs-parser.jay" +void case_738() +#line 4919 "cs-parser.jay" { if (async_block) { report.Error (4003, GetLocation (yyVals[0+yyTop]), "`await' cannot be used as an identifier within an async method or lambda expression"); @@ -7677,8 +7657,8 @@ void case_737() } } -void case_738() -#line 4932 "cs-parser.jay" +void case_739() +#line 4929 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7686,16 +7666,16 @@ void case_738() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_739() -#line 4939 "cs-parser.jay" +void case_740() +#line 4936 "cs-parser.jay" { yyVal = current_variable; current_variable = null; lbag.AppendTo (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_740() -#line 4945 "cs-parser.jay" +void case_741() +#line 4942 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7703,8 +7683,8 @@ void case_740() current_variable = new BlockConstantDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_741() -#line 4952 "cs-parser.jay" +void case_742() +#line 4949 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7715,15 +7695,15 @@ void case_741() current_variable = null; } -void case_743() -#line 4966 "cs-parser.jay" +void case_744() +#line 4963 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_744() -#line 4971 "cs-parser.jay" +void case_745() +#line 4968 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7738,8 +7718,8 @@ void case_744() lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } -void case_745() -#line 4985 "cs-parser.jay" +void case_746() +#line 4982 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7749,8 +7729,8 @@ void case_745() } } -void case_749() -#line 5003 "cs-parser.jay" +void case_750() +#line 5000 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -7758,8 +7738,8 @@ void case_749() } } -void case_752() -#line 5018 "cs-parser.jay" +void case_753() +#line 5015 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7769,8 +7749,8 @@ void case_752() lbag.AddLocation (d, GetLocation (yyVals[-1+yyTop])); } -void case_753() -#line 5027 "cs-parser.jay" +void case_754() +#line 5024 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7780,15 +7760,15 @@ void case_753() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_755() -#line 5043 "cs-parser.jay" +void case_756() +#line 5040 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } -void case_760() -#line 5061 "cs-parser.jay" +void case_761() +#line 5058 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7798,41 +7778,41 @@ void case_760() lbag.AddLocation (d, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_762() -#line 5074 "cs-parser.jay" +void case_763() +#line 5071 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_763() -#line 5079 "cs-parser.jay" +void case_764() +#line 5076 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } -void case_764() -#line 5087 "cs-parser.jay" +void case_765() +#line 5084 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_768() -#line 5105 "cs-parser.jay" +void case_769() +#line 5102 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { Expression.Error_InvalidExpressionStatement (report, GetLocation (yyVals[0+yyTop])); - yyVal = new StatementErrorExpression (yyVals[0+yyTop] as Expression); + yyVal = new InvalidStatementExpression (yyVals[0+yyTop] as Expression); } else { yyVal = new StatementExpression (s); } } -void case_769() -#line 5118 "cs-parser.jay" +void case_770() +#line 5115 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7841,15 +7821,15 @@ void case_769() yyVal = new StatementExpression (s); } -void case_770() -#line 5126 "cs-parser.jay" +void case_771() +#line 5123 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_773() -#line 5140 "cs-parser.jay" +void case_774() +#line 5137 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7858,8 +7838,8 @@ void case_773() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_774() -#line 5149 "cs-parser.jay" +void case_775() +#line 5146 "cs-parser.jay" { yyVal = new If ((BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); @@ -7870,41 +7850,32 @@ void case_774() Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); } -void case_775() -#line 5159 "cs-parser.jay" +void case_776() +#line 5155 "cs-parser.jay" { - Error_SyntaxError (yyToken); - + var eloc = GetLocation (yyVals[-1+yyTop]); + report.Error (1026, eloc, "Expected a ')'"); yyVal = new If ((BooleanExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_777() -#line 5173 "cs-parser.jay" +void case_778() +#line 5169 "cs-parser.jay" { yyVal = new Switch ((Expression) yyVals[-5+yyTop], (ExplicitBlock) current_block.Explicit, (List) yyVals[-1+yyTop], GetLocation (yyVals[-7+yyTop])); end_block (GetLocation (yyVals[0+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_778() -#line 5179 "cs-parser.jay" -{ - Error_SyntaxError (yyToken); - - yyVal = new Switch ((Expression) yyVals[-1+yyTop], null, null, GetLocation (yyVals[-3+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); - } - void case_779() -#line 5189 "cs-parser.jay" +#line 5178 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } void case_781() -#line 5198 "cs-parser.jay" +#line 5187 "cs-parser.jay" { var sections = new List (4); @@ -7913,7 +7884,7 @@ void case_781() } void case_782() -#line 5205 "cs-parser.jay" +#line 5194 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7922,14 +7893,14 @@ void case_782() } void case_783() -#line 5212 "cs-parser.jay" +#line 5201 "cs-parser.jay" { - Error_SyntaxError (yyToken); + Error_SyntaxError (yyToken); yyVal = new List (); } void case_786() -#line 5231 "cs-parser.jay" +#line 5220 "cs-parser.jay" { var labels = new List (2); @@ -7938,7 +7909,7 @@ void case_786() } void case_787() -#line 5238 "cs-parser.jay" +#line 5227 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7947,14 +7918,14 @@ void case_787() } void case_788() -#line 5248 "cs-parser.jay" +#line 5237 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_794() -#line 5267 "cs-parser.jay" +#line 5256 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7964,39 +7935,29 @@ void case_794() } void case_795() -#line 5275 "cs-parser.jay" -{ - Error_SyntaxError (yyToken); - - yyVal = new While ((BooleanExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); - } - -void case_796() -#line 5285 "cs-parser.jay" +#line 5268 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_797() -#line 5290 "cs-parser.jay" +void case_796() +#line 5273 "cs-parser.jay" { - Error_SyntaxError (yyToken); - yyVal = new Do ((Statement) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); + var loc = GetLocation (yyVals[-2+yyTop]); + report.Error (-100, loc, "Expected `while'"); + yyVal = new Do ((Statement) yyVals[-1+yyTop], null, loc); } -void case_798() -#line 5295 "cs-parser.jay" +void case_797() +#line 5280 "cs-parser.jay" { - Error_SyntaxError (yyToken); - yyVal = new Do ((Statement) yyVals[-4+yyTop], (BooleanExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_799() -#line 5305 "cs-parser.jay" +void case_798() +#line 5288 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; @@ -8005,8 +7966,8 @@ void case_799() yyVal = f; } -void case_804() -#line 5333 "cs-parser.jay" +void case_803() +#line 5316 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8018,15 +7979,15 @@ void case_804() yyVal = end_block (GetLocation (yyVals[-8+yyTop])); } -void case_805() -#line 5344 "cs-parser.jay" +void case_804() +#line 5327 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } -void case_808() -#line 5357 "cs-parser.jay" +void case_807() +#line 5340 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -8034,15 +7995,15 @@ void case_808() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_809() -#line 5364 "cs-parser.jay" +void case_808() +#line 5347 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_817() -#line 5388 "cs-parser.jay" +void case_816() +#line 5371 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -8056,42 +8017,15 @@ void case_817() yyVal = sl; } -void case_818() -#line 5404 "cs-parser.jay" -{ - report.Error (230, GetLocation (yyVals[-3+yyTop]), "Type and identifier are both required in a foreach statement"); - - start_block (GetLocation (yyVals[-2+yyTop])); - current_block.IsCompilerGenerated = true; - - Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, GetLocation (yyVals[-3+yyTop])); - current_block.AddStatement (f); - - lbag.AddStatement (f, GetLocation (yyVals[-2+yyTop])); - yyVal = end_block (GetLocation (yyVals[0+yyTop])); - } - -void case_819() -#line 5417 "cs-parser.jay" +void case_817() +#line 5387 "cs-parser.jay" { - Error_SyntaxError (yyToken); - - start_block (GetLocation (yyVals[-3+yyTop])); - current_block.IsCompilerGenerated = true; - - var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; - var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location); - current_block.AddLocalName (li); - - Foreach f = new Foreach ((Expression) yyVals[-2+yyTop], li, null, null, GetLocation (yyVals[-4+yyTop])); - current_block.AddStatement (f); - - lbag.AddStatement (f, GetLocation (yyVals[-3+yyTop])); - yyVal = end_block (GetLocation (yyVals[0+yyTop])); + report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); + yyVal = null; } -void case_820() -#line 5434 "cs-parser.jay" +void case_818() +#line 5392 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -8101,8 +8035,8 @@ void case_820() yyVal = li; } -void case_821() -#line 5443 "cs-parser.jay" +void case_819() +#line 5401 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8114,8 +8048,8 @@ void case_821() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_822() -#line 5454 "cs-parser.jay" +void case_820() +#line 5412 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); current_block.IsCompilerGenerated = true; @@ -8129,8 +8063,8 @@ void case_822() yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_823() -#line 5467 "cs-parser.jay" +void case_821() +#line 5425 "cs-parser.jay" { Foreach f = new Foreach ((Expression) yyVals[-1+yyTop], null, null, null, GetLocation (yyVals[-3+yyTop])); current_block.AddStatement (f); @@ -8139,58 +8073,58 @@ void case_823() yyVal = f; } -void case_830() -#line 5487 "cs-parser.jay" +void case_828() +#line 5445 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_831() -#line 5495 "cs-parser.jay" +void case_829() +#line 5453 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_832() -#line 5503 "cs-parser.jay" +void case_830() +#line 5461 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_833() -#line 5509 "cs-parser.jay" +void case_831() +#line 5467 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_834() -#line 5514 "cs-parser.jay" +void case_832() +#line 5472 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_835() -#line 5522 "cs-parser.jay" +void case_833() +#line 5480 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_836() -#line 5530 "cs-parser.jay" +void case_834() +#line 5488 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_837() -#line 5538 "cs-parser.jay" +void case_835() +#line 5496 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -8207,8 +8141,8 @@ void case_837() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_838() -#line 5554 "cs-parser.jay" +void case_836() +#line 5512 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -8223,29 +8157,29 @@ void case_838() lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_842() -#line 5580 "cs-parser.jay" +void case_840() +#line 5538 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_843() -#line 5585 "cs-parser.jay" +void case_841() +#line 5543 "cs-parser.jay" { yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_844() -#line 5590 "cs-parser.jay" +void case_842() +#line 5548 "cs-parser.jay" { - Error_SyntaxError (1524, yyToken); + report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); yyVal = new TryCatch ((Block) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop]), false); } -void case_845() -#line 5598 "cs-parser.jay" +void case_843() +#line 5556 "cs-parser.jay" { var l = new List (2); @@ -8253,22 +8187,26 @@ void case_845() yyVal = l; } -void case_846() -#line 5605 "cs-parser.jay" +void case_844() +#line 5563 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; Catch c = (Catch) yyVals[0+yyTop]; - if (l [l.Count - 1].IsGeneral) { + if (l [0].IsGeneral) { report.Error (1017, c.loc, "Try statement already has an empty catch block"); + } else { + if (c.IsGeneral) + l.Insert (0, c); + else + l.Add (c); } - l.Add (c); yyVal = l; } -void case_850() -#line 5629 "cs-parser.jay" +void case_848() +#line 5591 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -8284,8 +8222,8 @@ void case_850() yyVal = c; } -void case_852() -#line 5648 "cs-parser.jay" +void case_850() +#line 5610 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -8297,15 +8235,15 @@ void case_852() yyVal = new Catch (null, GetLocation (yyVals[-2+yyTop])); } -void case_855() -#line 5676 "cs-parser.jay" +void case_853() +#line 5638 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_857() -#line 5686 "cs-parser.jay" +void case_855() +#line 5648 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8314,17 +8252,8 @@ void case_857() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_858() -#line 5694 "cs-parser.jay" -{ - Error_SyntaxError (yyToken); - - yyVal = new Lock ((Expression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); - } - -void case_859() -#line 5704 "cs-parser.jay" +void case_856() +#line 5659 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8335,15 +8264,15 @@ void case_859() current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_860() -#line 5714 "cs-parser.jay" +void case_857() +#line 5669 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_861() -#line 5719 "cs-parser.jay" +void case_858() +#line 5674 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8354,8 +8283,8 @@ void case_861() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_862() -#line 5732 "cs-parser.jay" +void case_859() +#line 5687 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8366,15 +8295,15 @@ void case_862() current_variable = new Using.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_863() -#line 5742 "cs-parser.jay" +void case_860() +#line 5697 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_864() -#line 5747 "cs-parser.jay" +void case_861() +#line 5702 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8385,42 +8314,34 @@ void case_864() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_865() -#line 5757 "cs-parser.jay" +void case_862() +#line 5712 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); - yyVal = new Using ((Expression) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); - } - -void case_866() -#line 5765 "cs-parser.jay" -{ - Error_SyntaxError (yyToken); - - yyVal = new Using ((Expression) yyVals[-1+yyTop], null, GetLocation (yyVals[-3+yyTop])); - lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop])); + Using u = new Using ((Expression) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); + lbag.AddStatement (u, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); + yyVal = u; } -void case_868() -#line 5776 "cs-parser.jay" +void case_864() +#line 5725 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); } -void case_870() -#line 5788 "cs-parser.jay" +void case_866() +#line 5737 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); yyVal = current_variable; } -void case_871() -#line 5800 "cs-parser.jay" +void case_867() +#line 5749 "cs-parser.jay" { lexer.query_parsing = false; @@ -8433,8 +8354,8 @@ void case_871() current_block = current_block.Parent; } -void case_872() -#line 5812 "cs-parser.jay" +void case_868() +#line 5761 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8445,8 +8366,8 @@ void case_872() current_block = current_block.Parent; } -void case_873() -#line 5823 "cs-parser.jay" +void case_869() +#line 5772 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8455,16 +8376,16 @@ void case_873() current_block = current_block.Parent; } -void case_874() -#line 5830 "cs-parser.jay" +void case_870() +#line 5779 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; } -void case_875() -#line 5839 "cs-parser.jay" +void case_871() +#line 5788 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8473,8 +8394,8 @@ void case_875() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_876() -#line 5847 "cs-parser.jay" +void case_872() +#line 5796 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8487,8 +8408,8 @@ void case_876() ); } -void case_877() -#line 5862 "cs-parser.jay" +void case_873() +#line 5811 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8497,8 +8418,8 @@ void case_877() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_878() -#line 5870 "cs-parser.jay" +void case_874() +#line 5819 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8511,8 +8432,8 @@ void case_878() ); } -void case_880() -#line 5889 "cs-parser.jay" +void case_876() +#line 5838 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8524,8 +8445,8 @@ void case_880() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_882() -#line 5904 "cs-parser.jay" +void case_878() +#line 5853 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8540,8 +8461,8 @@ void case_882() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_883() -#line 5921 "cs-parser.jay" +void case_879() +#line 5870 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8557,15 +8478,15 @@ void case_883() yyVal = head; } -void case_885() -#line 5937 "cs-parser.jay" +void case_881() +#line 5886 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_887() -#line 5949 "cs-parser.jay" +void case_883() +#line 5898 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8573,8 +8494,8 @@ void case_887() current_block = current_block.Parent; } -void case_888() -#line 5956 "cs-parser.jay" +void case_884() +#line 5905 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8583,8 +8504,8 @@ void case_888() linq_clause_blocks.Push ((Linq.QueryBlock)current_block); } -void case_889() -#line 5964 "cs-parser.jay" +void case_885() +#line 5913 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8592,8 +8513,8 @@ void case_889() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_890() -#line 5971 "cs-parser.jay" +void case_886() +#line 5920 "cs-parser.jay" { yyVal = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)yyVals[-3+yyTop], linq_clause_blocks.Pop (), (Expression)yyVals[0+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); @@ -8602,29 +8523,29 @@ void case_890() current_block = current_block.Parent; } -void case_894() -#line 5988 "cs-parser.jay" +void case_890() +#line 5937 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_901() -#line 6008 "cs-parser.jay" +void case_897() +#line 5957 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); yyVal = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); - + current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_903() -#line 6027 "cs-parser.jay" +void case_899() +#line 5976 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8632,8 +8553,8 @@ void case_903() current_block = current_block.Parent; } -void case_904() -#line 6037 "cs-parser.jay" +void case_900() +#line 5986 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8642,8 +8563,8 @@ void case_904() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_905() -#line 6045 "cs-parser.jay" +void case_901() +#line 5994 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8652,8 +8573,8 @@ void case_905() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_906() -#line 6053 "cs-parser.jay" +void case_902() +#line 6002 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8662,8 +8583,8 @@ void case_906() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_907() -#line 6061 "cs-parser.jay" +void case_903() +#line 6010 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8702,8 +8623,8 @@ void case_907() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_908() -#line 6099 "cs-parser.jay" +void case_904() +#line 6048 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8712,8 +8633,8 @@ void case_908() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_909() -#line 6107 "cs-parser.jay" +void case_905() +#line 6056 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8722,8 +8643,8 @@ void case_909() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_910() -#line 6115 "cs-parser.jay" +void case_906() +#line 6064 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8732,8 +8653,8 @@ void case_910() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_911() -#line 6123 "cs-parser.jay" +void case_907() +#line 6072 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8774,8 +8695,8 @@ void case_911() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_915() -#line 6178 "cs-parser.jay" +void case_911() +#line 6127 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8783,8 +8704,8 @@ void case_915() yyVal = yyVals[0+yyTop]; } -void case_917() -#line 6189 "cs-parser.jay" +void case_913() +#line 6138 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8792,15 +8713,15 @@ void case_917() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_918() -#line 6196 "cs-parser.jay" +void case_914() +#line 6145 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_920() -#line 6205 "cs-parser.jay" +void case_916() +#line 6154 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8808,43 +8729,43 @@ void case_920() current_block = new Linq.QueryBlock ((Linq.QueryBlock) current_block, lexer.Location); } -void case_921() -#line 6212 "cs-parser.jay" +void case_917() +#line 6161 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_923() -#line 6224 "cs-parser.jay" +void case_919() +#line 6173 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_924() -#line 6229 "cs-parser.jay" +void case_920() +#line 6178 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_926() -#line 6241 "cs-parser.jay" +void case_922() +#line 6190 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_927() -#line 6246 "cs-parser.jay" +void case_923() +#line 6195 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_929() -#line 6256 "cs-parser.jay" +void case_925() +#line 6205 "cs-parser.jay" { /* query continuation block is not linked with query block but with block*/ /* before. This means each query can use same range variable names for*/ @@ -8861,8 +8782,8 @@ void case_929() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_930() -#line 6272 "cs-parser.jay" +void case_926() +#line 6221 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8872,8 +8793,8 @@ void case_930() }; } -void case_933() -#line 6299 "cs-parser.jay" +void case_929() +#line 6248 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName (""), Modifiers.PUBLIC, null); current_class = current_container; @@ -8904,8 +8825,8 @@ void case_933() start_block (lexer.Location); } -void case_934() -#line 6329 "cs-parser.jay" +void case_930() +#line 6278 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8916,16 +8837,16 @@ void case_934() current_local_parameters = null; } -void case_944() -#line 6372 "cs-parser.jay" +void case_940() +#line 6321 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; yyVal = null; } -void case_945() -#line 6378 "cs-parser.jay" +void case_941() +#line 6327 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8933,15 +8854,15 @@ void case_945() yyVal = new MemberName (lt.Value); } -void case_948() -#line 6393 "cs-parser.jay" +void case_944() +#line 6342 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } -void case_949() -#line 6398 "cs-parser.jay" +void case_945() +#line 6347 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8950,8 +8871,8 @@ void case_949() yyVal = null; } -void case_950() -#line 6406 "cs-parser.jay" +void case_946() +#line 6355 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8960,8 +8881,8 @@ void case_950() yyVal = null; } -void case_951() -#line 6414 "cs-parser.jay" +void case_947() +#line 6363 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8969,24 +8890,24 @@ void case_951() yyVal = null; } -void case_959() -#line 6452 "cs-parser.jay" +void case_955() +#line 6401 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_960() -#line 6458 "cs-parser.jay" +void case_956() +#line 6407 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_961() -#line 6467 "cs-parser.jay" +void case_957() +#line 6416 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -8997,2835 +8918,2986 @@ void case_961() #line default static readonly short [] yyLhs = { -1, 0, 4, 0, 0, 1, 1, 1, 1, 2, 2, - 11, 11, 12, 12, 13, 13, 14, 15, 15, 15, - 20, 21, 18, 19, 19, 19, 23, 23, 24, 24, - 16, 7, 7, 6, 6, 22, 22, 8, 8, 25, - 25, 26, 26, 26, 26, 26, 9, 9, 10, 10, - 34, 32, 37, 33, 33, 35, 35, 35, 35, 36, - 36, 41, 38, 39, 40, 40, 42, 42, 42, 42, - 42, 43, 43, 47, 44, 46, 49, 49, 49, 50, - 50, 51, 51, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 65, 67, 69, 70, 71, 28, - 28, 74, 53, 75, 75, 76, 76, 77, 79, 73, - 73, 78, 78, 84, 54, 88, 54, 54, 83, 91, - 83, 85, 85, 92, 92, 93, 94, 93, 89, 89, - 95, 95, 96, 97, 87, 87, 90, 90, 90, 100, - 55, 103, 104, 98, 105, 106, 107, 98, 98, 99, - 99, 102, 102, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 111, 111, 114, 114, 114, 117, 114, - 115, 115, 118, 118, 119, 119, 119, 112, 112, 112, - 120, 120, 120, 113, 122, 124, 125, 56, 127, 128, - 129, 58, 123, 123, 123, 123, 123, 133, 130, 134, - 131, 132, 132, 132, 135, 136, 137, 139, 29, 29, - 138, 138, 140, 140, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 144, 59, 143, 143, 145, 145, 148, - 142, 142, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 150, 149, 151, 149, 149, 149, - 60, 154, 156, 152, 153, 153, 155, 155, 160, 158, - 161, 158, 158, 162, 61, 164, 57, 167, 168, 57, - 163, 170, 163, 165, 165, 171, 171, 172, 173, 172, - 174, 169, 166, 166, 166, 166, 166, 178, 175, 179, - 176, 177, 177, 181, 183, 184, 30, 180, 180, 180, - 182, 182, 182, 185, 185, 186, 187, 186, 188, 189, - 190, 31, 191, 191, 17, 17, 192, 192, 195, 194, - 194, 194, 196, 196, 198, 64, 121, 101, 101, 126, - 126, 199, 199, 199, 197, 197, 200, 200, 201, 201, - 203, 203, 82, 72, 72, 86, 86, 116, 116, 146, - 146, 204, 204, 204, 204, 204, 208, 208, 209, 209, - 207, 207, 207, 207, 207, 207, 207, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 212, 212, 212, 213, - 213, 213, 233, 233, 234, 234, 235, 235, 215, 215, - 232, 232, 232, 232, 232, 232, 232, 232, 217, 236, - 236, 237, 237, 238, 238, 240, 240, 240, 241, 241, - 241, 241, 241, 242, 242, 159, 159, 246, 246, 246, - 246, 246, 248, 248, 247, 247, 249, 249, 249, 249, - 250, 218, 218, 218, 245, 245, 245, 251, 251, 252, - 252, 219, 220, 220, 221, 222, 223, 223, 214, 214, - 214, 214, 214, 257, 253, 224, 258, 258, 259, 259, - 260, 260, 261, 261, 261, 261, 254, 254, 205, 205, - 256, 256, 262, 262, 255, 255, 81, 81, 263, 263, - 264, 225, 265, 265, 265, 266, 266, 266, 266, 266, - 267, 193, 226, 227, 228, 229, 269, 230, 270, 230, - 268, 268, 272, 271, 216, 273, 273, 273, 273, 273, - 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, - 275, 276, 276, 276, 276, 276, 276, 277, 277, 277, - 278, 278, 278, 278, 278, 279, 279, 279, 280, 280, - 281, 281, 282, 282, 283, 283, 284, 284, 285, 285, - 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 288, 288, 289, 289, 289, 290, 290, - 291, 291, 294, 292, 293, 293, 296, 295, 297, 295, - 298, 299, 295, 300, 301, 295, 45, 45, 243, 243, - 243, 243, 231, 231, 231, 80, 303, 304, 305, 306, - 307, 27, 63, 63, 62, 62, 108, 108, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 66, 66, 68, 68, 68, 309, 309, - 310, 311, 311, 312, 312, 312, 312, 202, 202, 313, - 313, 315, 109, 316, 316, 317, 157, 314, 314, 318, - 318, 319, 319, 319, 319, 319, 323, 323, 324, 324, - 324, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 325, 325, 325, 339, 339, 339, - 339, 326, 340, 322, 341, 341, 342, 342, 342, 342, - 342, 342, 206, 206, 343, 48, 48, 345, 320, 348, - 320, 344, 344, 344, 344, 346, 346, 352, 352, 351, - 351, 353, 353, 347, 347, 349, 349, 354, 354, 355, - 350, 350, 350, 327, 327, 338, 338, 356, 357, 357, - 328, 328, 358, 358, 358, 361, 359, 359, 360, 360, - 362, 362, 362, 365, 363, 364, 364, 366, 366, 329, - 329, 329, 329, 367, 367, 368, 368, 368, 372, 369, - 375, 377, 378, 371, 371, 373, 373, 380, 379, 379, - 374, 374, 376, 376, 382, 381, 381, 370, 370, 383, - 370, 370, 370, 330, 330, 330, 330, 330, 330, 384, - 385, 386, 386, 386, 387, 388, 389, 389, 390, 390, - 331, 331, 331, 331, 391, 391, 393, 393, 392, 394, - 392, 392, 332, 333, 395, 336, 334, 334, 397, 398, - 337, 400, 401, 335, 335, 335, 399, 399, 396, 396, - 302, 302, 302, 302, 402, 402, 404, 404, 406, 405, - 407, 405, 403, 403, 403, 411, 409, 412, 413, 409, - 408, 408, 414, 414, 415, 415, 415, 415, 415, 420, - 416, 421, 417, 422, 423, 424, 418, 426, 427, 428, - 418, 425, 425, 430, 419, 429, 433, 429, 432, 435, - 432, 431, 431, 431, 434, 434, 434, 410, 436, 410, - 3, 3, 437, 3, 3, 438, 438, 244, 244, 239, - 239, 5, 439, 439, 439, 439, 443, 439, 439, 439, - 439, 440, 440, 441, 444, 441, 442, 442, 445, 445, - 446, + 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, + 16, 21, 22, 19, 20, 20, 20, 24, 24, 25, + 25, 18, 7, 7, 6, 6, 23, 23, 8, 8, + 26, 26, 27, 27, 27, 27, 27, 9, 9, 10, + 10, 35, 33, 38, 34, 34, 36, 36, 36, 36, + 37, 37, 42, 39, 40, 41, 41, 43, 43, 43, + 43, 43, 44, 44, 48, 45, 47, 50, 50, 50, + 51, 51, 52, 52, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 53, 66, 68, 70, 71, 72, + 29, 29, 75, 54, 76, 76, 77, 77, 78, 80, + 74, 74, 79, 79, 85, 55, 89, 55, 55, 84, + 92, 84, 86, 86, 93, 93, 94, 95, 94, 90, + 90, 96, 96, 97, 98, 88, 88, 91, 91, 91, + 101, 56, 104, 105, 99, 106, 107, 108, 99, 99, + 100, 100, 103, 103, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 112, 112, 115, 115, 115, 118, + 115, 116, 116, 119, 119, 120, 120, 120, 113, 113, + 113, 121, 121, 121, 114, 123, 125, 126, 57, 128, + 129, 130, 59, 124, 124, 124, 124, 124, 134, 131, + 135, 132, 133, 133, 133, 136, 137, 138, 140, 30, + 30, 139, 139, 141, 141, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 145, 60, 144, 144, 146, 146, + 149, 143, 143, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 151, 150, 152, 150, 150, + 150, 61, 155, 157, 153, 154, 154, 156, 156, 161, + 159, 162, 159, 159, 163, 62, 165, 58, 168, 169, + 58, 164, 171, 164, 166, 166, 172, 172, 173, 174, + 173, 175, 170, 167, 167, 167, 167, 167, 179, 176, + 180, 177, 178, 178, 182, 184, 185, 31, 181, 181, + 181, 183, 183, 183, 186, 186, 187, 188, 187, 189, + 190, 191, 32, 192, 192, 17, 17, 193, 193, 196, + 195, 195, 195, 197, 197, 199, 65, 122, 102, 102, + 127, 127, 200, 200, 200, 198, 198, 201, 201, 202, + 202, 204, 204, 83, 73, 73, 87, 87, 117, 117, + 147, 147, 205, 205, 205, 205, 205, 209, 209, 210, + 210, 208, 208, 208, 208, 208, 208, 208, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 213, 213, 213, + 214, 214, 214, 234, 234, 235, 235, 236, 236, 216, + 216, 233, 233, 233, 233, 233, 233, 233, 233, 218, + 237, 237, 238, 238, 239, 239, 241, 241, 241, 242, + 242, 242, 242, 242, 243, 243, 160, 160, 247, 247, + 247, 247, 247, 249, 249, 248, 248, 250, 250, 250, + 250, 251, 219, 219, 219, 246, 246, 246, 252, 252, + 253, 253, 220, 221, 221, 222, 223, 224, 224, 215, + 215, 215, 215, 215, 258, 254, 225, 259, 259, 260, + 260, 261, 261, 262, 262, 262, 262, 255, 255, 206, + 206, 257, 257, 263, 263, 256, 256, 82, 82, 264, + 264, 265, 226, 266, 266, 266, 267, 267, 267, 267, + 267, 268, 194, 227, 228, 229, 230, 270, 231, 271, + 231, 269, 269, 273, 272, 217, 274, 274, 274, 274, + 274, 275, 275, 275, 275, 275, 275, 275, 276, 276, + 276, 276, 277, 277, 277, 277, 277, 277, 278, 278, + 278, 279, 279, 279, 279, 279, 280, 280, 280, 281, + 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, + 286, 287, 287, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 289, 289, 290, 290, 290, 291, + 291, 292, 292, 295, 293, 294, 294, 297, 296, 298, + 296, 299, 300, 296, 301, 302, 296, 46, 46, 244, + 244, 244, 244, 232, 232, 232, 81, 304, 305, 306, + 307, 308, 28, 64, 64, 63, 63, 109, 109, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 67, 67, 69, 69, 69, 310, + 310, 311, 312, 312, 313, 313, 313, 313, 203, 203, + 314, 314, 316, 110, 317, 317, 318, 158, 315, 315, + 319, 319, 320, 320, 320, 320, 320, 324, 324, 325, + 325, 325, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 340, 340, + 340, 340, 327, 341, 323, 342, 342, 343, 343, 343, + 343, 343, 343, 207, 207, 344, 49, 49, 346, 321, + 349, 321, 345, 345, 345, 345, 347, 347, 353, 353, + 352, 352, 354, 354, 348, 348, 350, 350, 355, 355, + 356, 351, 351, 351, 328, 328, 339, 339, 357, 358, + 358, 329, 329, 359, 359, 359, 362, 360, 361, 361, + 363, 363, 363, 366, 364, 365, 365, 367, 367, 330, + 330, 330, 330, 368, 369, 369, 369, 373, 370, 376, + 378, 379, 372, 372, 374, 374, 381, 380, 380, 375, + 375, 377, 377, 383, 382, 382, 371, 384, 371, 371, + 371, 331, 331, 331, 331, 331, 331, 385, 386, 387, + 387, 387, 388, 389, 390, 390, 391, 391, 332, 332, + 332, 332, 392, 392, 394, 394, 393, 395, 393, 393, + 333, 334, 396, 337, 335, 398, 399, 338, 401, 402, + 336, 336, 400, 400, 397, 397, 303, 303, 303, 303, + 403, 403, 405, 405, 407, 406, 408, 406, 404, 404, + 404, 412, 410, 413, 414, 410, 409, 409, 415, 415, + 416, 416, 416, 416, 416, 421, 417, 422, 418, 423, + 424, 425, 419, 427, 428, 429, 419, 426, 426, 431, + 420, 430, 434, 430, 433, 436, 433, 432, 432, 432, + 435, 435, 435, 411, 437, 411, 3, 3, 438, 3, + 3, 439, 439, 245, 245, 240, 240, 5, 440, 440, + 440, 440, 444, 440, 440, 440, 440, 441, 441, 442, + 445, 442, 443, 443, 446, 446, 447, }; static readonly short [] yyLen = { 2, 2, 0, 3, 1, 2, 4, 3, 1, 0, 1, - 1, 2, 4, 2, 1, 2, 1, 3, 5, 2, - 0, 0, 11, 1, 3, 1, 0, 1, 0, 1, - 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, - 0, 3, 0, 6, 3, 1, 1, 1, 1, 1, - 3, 0, 3, 1, 0, 3, 0, 1, 1, 3, - 3, 1, 1, 0, 4, 4, 0, 1, 1, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 0, 0, 0, 0, 16, - 5, 0, 9, 0, 1, 1, 2, 3, 0, 3, - 1, 1, 1, 0, 8, 0, 9, 6, 0, 0, - 3, 0, 1, 1, 2, 2, 0, 5, 0, 1, - 1, 2, 3, 0, 4, 2, 1, 1, 1, 0, - 3, 0, 0, 10, 0, 0, 0, 12, 8, 1, - 1, 0, 1, 1, 3, 3, 3, 5, 3, 5, - 1, 1, 1, 1, 3, 4, 6, 4, 0, 7, - 0, 1, 1, 2, 1, 1, 1, 4, 6, 4, - 1, 2, 2, 1, 0, 0, 0, 10, 0, 0, - 0, 13, 1, 2, 1, 2, 1, 0, 5, 0, - 5, 1, 1, 1, 0, 0, 0, 0, 15, 5, + 1, 2, 4, 2, 1, 2, 1, 1, 5, 2, + 3, 0, 0, 11, 1, 3, 1, 0, 1, 0, + 1, 1, 0, 1, 0, 1, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 2, 0, 3, 0, 6, 3, 1, 1, 1, 1, + 1, 3, 0, 3, 1, 0, 3, 0, 1, 1, + 3, 3, 1, 1, 0, 4, 4, 0, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 5, 1, 1, 1, 1, 0, - 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + 16, 5, 0, 9, 0, 1, 1, 2, 3, 0, + 3, 1, 1, 1, 0, 8, 0, 9, 6, 0, + 0, 3, 0, 1, 1, 2, 2, 0, 5, 0, + 1, 1, 2, 3, 0, 4, 2, 1, 1, 1, + 0, 3, 0, 0, 10, 0, 0, 0, 12, 8, + 1, 1, 0, 1, 1, 3, 3, 3, 5, 3, + 5, 1, 1, 1, 1, 3, 4, 6, 4, 0, + 7, 0, 1, 1, 2, 1, 1, 1, 4, 6, + 4, 1, 2, 2, 1, 0, 0, 0, 10, 0, + 0, 0, 13, 1, 2, 1, 2, 1, 0, 5, + 0, 5, 1, 1, 1, 0, 0, 0, 0, 15, + 5, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 5, 1, 1, 1, 1, + 0, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 7, 0, 7, 2, 2, - 2, 0, 0, 9, 1, 1, 0, 1, 0, 6, - 0, 6, 1, 0, 8, 0, 9, 0, 0, 10, - 0, 0, 3, 0, 1, 1, 2, 2, 0, 5, - 0, 2, 2, 2, 1, 1, 1, 0, 5, 0, - 5, 1, 1, 0, 0, 0, 12, 0, 2, 2, - 0, 1, 2, 1, 3, 2, 0, 5, 0, 0, - 0, 13, 0, 1, 1, 3, 1, 4, 2, 0, - 3, 2, 1, 3, 0, 3, 1, 1, 3, 1, - 2, 3, 4, 4, 0, 3, 1, 3, 3, 1, + 1, 1, 1, 1, 1, 0, 7, 0, 7, 2, + 2, 2, 0, 0, 9, 1, 1, 0, 1, 0, + 6, 0, 6, 1, 0, 8, 0, 9, 0, 0, + 10, 0, 0, 3, 0, 1, 1, 2, 2, 0, + 5, 0, 2, 2, 2, 1, 1, 1, 0, 5, + 0, 5, 1, 1, 0, 0, 0, 12, 0, 2, + 2, 0, 1, 2, 1, 3, 2, 0, 5, 0, + 0, 0, 13, 0, 1, 1, 3, 1, 4, 2, + 0, 3, 2, 1, 3, 0, 3, 1, 1, 3, + 1, 2, 3, 4, 4, 0, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 4, 4, 4, 3, 3, 4, 3, 4, 4, 0, - 1, 3, 4, 0, 1, 1, 3, 2, 3, 1, - 2, 3, 2, 1, 1, 0, 1, 1, 3, 3, - 2, 2, 1, 1, 1, 1, 2, 2, 4, 3, - 1, 4, 4, 3, 1, 3, 2, 1, 3, 1, - 1, 1, 4, 3, 2, 2, 6, 3, 7, 4, - 3, 7, 3, 0, 2, 4, 1, 2, 0, 1, - 1, 3, 3, 1, 1, 1, 0, 1, 1, 2, - 2, 3, 1, 2, 0, 1, 2, 4, 1, 3, - 0, 5, 1, 1, 1, 2, 3, 3, 4, 4, - 1, 2, 4, 4, 4, 4, 0, 4, 0, 5, - 0, 1, 0, 4, 4, 1, 2, 2, 4, 2, - 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, - 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, - 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 3, 3, 2, 1, 0, 1, - 1, 1, 0, 2, 1, 1, 0, 4, 0, 5, - 0, 0, 7, 0, 0, 8, 1, 1, 1, 1, - 1, 1, 6, 4, 4, 1, 1, 0, 0, 0, - 0, 15, 0, 1, 0, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 4, 4, 4, 3, 3, 4, 3, 4, 4, + 0, 1, 3, 4, 0, 1, 1, 3, 2, 3, + 1, 2, 3, 2, 1, 1, 0, 1, 1, 3, + 3, 2, 2, 1, 1, 1, 1, 2, 2, 4, + 3, 1, 4, 4, 3, 1, 3, 2, 1, 3, + 1, 1, 1, 4, 3, 2, 2, 6, 3, 7, + 4, 3, 7, 3, 0, 2, 4, 1, 2, 0, + 1, 1, 3, 3, 1, 1, 1, 0, 1, 1, + 2, 2, 3, 1, 2, 0, 1, 2, 4, 1, + 3, 0, 5, 1, 1, 1, 2, 3, 3, 4, + 4, 1, 2, 4, 4, 4, 4, 0, 4, 0, + 5, 0, 1, 0, 4, 4, 1, 2, 2, 4, + 2, 1, 2, 2, 2, 2, 2, 2, 1, 3, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, + 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 3, 3, 2, 1, 0, + 1, 1, 1, 0, 2, 1, 1, 0, 4, 0, + 5, 0, 0, 7, 0, 0, 8, 1, 1, 1, + 1, 1, 1, 6, 4, 4, 1, 1, 0, 0, + 0, 0, 15, 0, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 2, 0, 1, 1, 1, 2, - 4, 1, 3, 1, 3, 1, 1, 0, 1, 1, - 1, 0, 4, 1, 1, 0, 4, 0, 1, 1, - 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 0, 2, 0, 1, 1, 1, + 2, 4, 1, 3, 1, 3, 1, 1, 0, 1, + 1, 1, 0, 4, 1, 1, 0, 4, 0, 1, + 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 4, 1, 2, 2, 2, 2, 2, - 2, 1, 1, 2, 1, 1, 1, 0, 6, 0, - 7, 0, 2, 2, 1, 0, 1, 0, 1, 1, - 2, 2, 4, 0, 2, 0, 1, 1, 2, 4, - 1, 5, 2, 2, 2, 2, 2, 1, 1, 1, - 1, 1, 5, 7, 4, 0, 8, 4, 0, 1, + 1, 1, 1, 0, 4, 1, 2, 2, 2, 2, + 2, 2, 1, 1, 2, 1, 1, 1, 0, 6, + 0, 7, 0, 2, 2, 1, 0, 1, 0, 1, + 1, 2, 2, 4, 0, 2, 0, 1, 1, 2, + 4, 1, 5, 2, 2, 2, 2, 2, 1, 1, + 1, 1, 1, 5, 7, 4, 0, 8, 0, 1, 1, 2, 1, 0, 3, 1, 2, 3, 1, 1, - 1, 1, 1, 5, 4, 7, 3, 6, 0, 4, - 0, 0, 0, 10, 1, 0, 1, 0, 5, 1, - 0, 1, 0, 1, 1, 1, 3, 4, 5, 0, - 9, 5, 4, 1, 1, 1, 1, 1, 1, 2, - 2, 3, 4, 3, 3, 3, 4, 3, 0, 1, - 3, 4, 5, 3, 1, 2, 0, 1, 2, 0, - 7, 3, 2, 2, 0, 3, 5, 4, 0, 0, - 10, 0, 0, 9, 5, 4, 2, 1, 0, 2, - 2, 2, 2, 2, 4, 5, 4, 5, 0, 5, - 0, 6, 3, 2, 1, 0, 3, 0, 0, 6, - 0, 1, 1, 2, 1, 1, 1, 1, 1, 0, - 5, 0, 3, 0, 0, 0, 12, 0, 0, 0, - 13, 0, 2, 0, 3, 1, 0, 4, 1, 0, - 4, 1, 2, 2, 1, 2, 2, 0, 0, 4, - 2, 3, 0, 4, 2, 2, 3, 0, 1, 1, - 1, 2, 2, 2, 4, 3, 0, 7, 4, 4, - 3, 1, 3, 0, 0, 4, 0, 1, 1, 3, - 2, + 1, 1, 1, 5, 7, 3, 6, 0, 4, 0, + 0, 0, 10, 1, 0, 1, 0, 5, 1, 0, + 1, 0, 1, 1, 1, 3, 6, 0, 9, 5, + 4, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 4, 3, 3, 3, 4, 3, 0, 1, 3, 4, + 5, 3, 1, 2, 0, 1, 2, 0, 7, 3, + 2, 2, 0, 3, 5, 0, 0, 10, 0, 0, + 9, 5, 2, 1, 0, 2, 2, 2, 2, 2, + 4, 5, 4, 5, 0, 5, 0, 6, 3, 2, + 1, 0, 3, 0, 0, 6, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 0, 5, 0, 3, 0, + 0, 0, 12, 0, 0, 0, 13, 0, 2, 0, + 3, 1, 0, 4, 1, 0, 4, 1, 2, 2, + 1, 2, 2, 0, 0, 4, 2, 3, 0, 4, + 2, 2, 3, 0, 1, 1, 1, 2, 2, 2, + 4, 3, 0, 7, 4, 4, 3, 1, 3, 0, + 0, 4, 0, 1, 1, 3, 2, }; static readonly short [] yyDefRed = { 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 4, - 0, 0, 11, 14, 0, 931, 0, 0, 935, 0, - 0, 15, 17, 373, 379, 386, 374, 376, 0, 375, - 0, 382, 384, 371, 0, 378, 380, 372, 383, 385, - 381, 335, 952, 0, 377, 942, 0, 10, 1, 0, - 0, 0, 12, 0, 770, 0, 0, 0, 0, 0, - 0, 0, 0, 414, 0, 0, 0, 0, 0, 0, - 0, 412, 0, 0, 0, 472, 0, 413, 0, 511, - 0, 855, 0, 0, 0, 622, 0, 0, 0, 0, - 0, 0, 0, 672, 0, 722, 0, 0, 0, 0, - 0, 0, 0, 0, 411, 0, 611, 0, 769, 0, - 705, 0, 0, 0, 0, 388, 389, 0, 391, 392, + 0, 0, 11, 14, 0, 927, 0, 0, 931, 0, + 0, 15, 17, 18, 374, 380, 387, 375, 377, 0, + 376, 0, 383, 385, 372, 0, 379, 381, 373, 384, + 386, 382, 336, 948, 0, 378, 938, 0, 10, 1, + 0, 0, 0, 12, 0, 771, 0, 0, 0, 0, + 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, + 0, 0, 413, 0, 0, 0, 473, 0, 414, 0, + 512, 0, 853, 0, 0, 0, 623, 0, 0, 0, + 0, 0, 0, 0, 673, 0, 723, 0, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 612, 0, 770, + 0, 706, 0, 0, 0, 0, 389, 390, 0, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 409, 410, 618, 541, 0, 0, + 403, 404, 405, 406, 407, 410, 411, 619, 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 619, 617, 620, 621, 689, 691, 0, 687, 690, 706, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 707, 0, 0, 0, 771, 772, 790, 791, 792, 793, - 824, 825, 826, 827, 828, 829, 0, 0, 0, 20, - 0, 0, 0, 325, 0, 327, 939, 16, 932, 0, - 0, 238, 237, 234, 239, 240, 233, 252, 251, 244, - 245, 241, 243, 242, 246, 235, 236, 247, 248, 254, - 253, 249, 250, 0, 0, 955, 0, 944, 0, 943, - 3, 51, 0, 0, 0, 41, 38, 40, 42, 43, - 44, 45, 46, 49, 13, 0, 0, 0, 830, 415, - 416, 853, 0, 0, 0, 0, 0, 0, 390, 0, - 831, 0, 533, 527, 532, 721, 768, 692, 719, 718, - 720, 693, 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 0, 0, 0, 799, 0, 0, 0, - 737, 736, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 840, 0, 387, 0, 0, 0, 0, 0, - 0, 854, 0, 0, 0, 735, 731, 0, 0, 0, - 0, 0, 0, 0, 354, 0, 0, 0, 0, 0, - 0, 0, 0, 614, 0, 540, 0, 0, 538, 542, - 543, 537, 547, 546, 544, 545, 607, 522, 0, 408, - 407, 0, 0, 0, 0, 0, 723, 0, 324, 0, - 729, 730, 0, 475, 476, 0, 0, 0, 727, 728, + 0, 620, 618, 621, 622, 690, 692, 0, 688, 691, + 707, 709, 710, 711, 712, 713, 714, 715, 716, 717, + 718, 708, 0, 0, 0, 772, 773, 790, 791, 792, + 793, 822, 823, 824, 825, 826, 827, 0, 0, 0, + 20, 0, 0, 0, 326, 0, 328, 935, 16, 928, + 0, 0, 239, 238, 235, 240, 241, 234, 253, 252, + 245, 246, 242, 244, 243, 247, 236, 237, 248, 249, + 255, 254, 250, 251, 0, 0, 951, 0, 940, 0, + 939, 3, 52, 0, 0, 0, 42, 39, 41, 43, + 44, 45, 46, 47, 50, 13, 0, 0, 0, 828, + 416, 417, 851, 0, 0, 0, 0, 0, 0, 391, + 0, 829, 0, 534, 528, 533, 722, 769, 693, 720, + 719, 721, 694, 695, 696, 697, 698, 699, 700, 701, + 702, 703, 704, 705, 0, 0, 0, 798, 0, 0, + 0, 738, 737, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 838, 0, 388, 0, 0, 0, 0, + 0, 0, 852, 0, 0, 0, 736, 732, 0, 0, + 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, + 0, 0, 0, 0, 615, 0, 541, 0, 0, 539, + 543, 544, 538, 548, 547, 545, 546, 608, 523, 0, + 409, 408, 0, 0, 0, 0, 0, 724, 0, 325, + 0, 730, 731, 0, 476, 477, 0, 0, 0, 728, + 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 930, 689, 739, 727, 0, + 767, 768, 881, 898, 0, 0, 0, 910, 869, 867, + 891, 0, 0, 889, 892, 893, 894, 895, 870, 868, + 0, 0, 0, 330, 0, 21, 0, 0, 0, 947, + 0, 337, 0, 0, 0, 949, 0, 0, 40, 645, + 651, 643, 0, 640, 650, 644, 642, 641, 648, 646, + 647, 653, 649, 652, 654, 0, 0, 638, 51, 475, + 0, 471, 472, 0, 0, 469, 0, 741, 0, 0, + 0, 796, 0, 765, 766, 0, 0, 0, 627, 0, + 832, 830, 628, 0, 0, 497, 0, 0, 0, 488, + 0, 492, 502, 504, 0, 484, 0, 0, 0, 0, + 0, 479, 0, 482, 0, 486, 357, 833, 0, 0, + 834, 842, 0, 0, 0, 843, 0, 0, 854, 0, + 0, 735, 0, 367, 363, 364, 0, 0, 362, 365, + 366, 0, 0, 0, 549, 0, 0, 530, 0, 610, + 687, 0, 0, 0, 681, 683, 684, 685, 420, 421, + 0, 333, 334, 0, 177, 176, 178, 0, 0, 0, + 0, 359, 0, 595, 0, 0, 836, 0, 0, 425, + 0, 428, 0, 426, 0, 465, 0, 0, 0, 0, + 0, 454, 457, 0, 0, 449, 456, 455, 0, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 594, 593, + 550, 552, 551, 557, 558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 934, 688, 738, 726, 0, 766, - 767, 885, 902, 0, 0, 0, 914, 873, 871, 895, - 0, 0, 893, 896, 897, 898, 899, 874, 872, 0, - 0, 0, 329, 18, 0, 0, 0, 0, 951, 0, - 336, 0, 0, 0, 953, 0, 0, 39, 644, 650, - 642, 0, 639, 649, 643, 641, 640, 647, 645, 646, - 652, 648, 651, 653, 0, 0, 637, 50, 474, 0, - 470, 471, 0, 0, 468, 0, 740, 0, 0, 0, - 797, 0, 764, 765, 0, 0, 0, 626, 0, 834, - 832, 627, 0, 0, 496, 0, 0, 0, 487, 0, - 491, 501, 503, 0, 483, 0, 0, 0, 0, 0, - 478, 0, 481, 0, 485, 356, 835, 0, 0, 836, - 844, 0, 0, 0, 845, 0, 0, 856, 0, 0, - 734, 0, 366, 362, 363, 0, 0, 361, 364, 365, - 0, 0, 0, 548, 0, 0, 529, 0, 609, 686, - 0, 0, 0, 680, 682, 683, 684, 419, 420, 0, - 332, 333, 0, 176, 175, 177, 0, 0, 0, 0, - 358, 0, 594, 0, 0, 838, 0, 0, 424, 0, - 427, 0, 425, 0, 464, 0, 0, 0, 0, 0, - 453, 456, 0, 0, 448, 455, 454, 0, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 593, 592, 549, - 551, 550, 556, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 580, - 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, - 886, 888, 884, 0, 894, 0, 0, 326, 949, 950, - 350, 0, 0, 347, 0, 0, 173, 0, 0, 959, - 945, 947, 59, 57, 58, 0, 0, 52, 0, 0, - 60, 62, 26, 24, 0, 0, 0, 634, 0, 638, - 423, 0, 473, 0, 524, 0, 535, 163, 184, 0, - 0, 153, 0, 0, 0, 164, 528, 0, 859, 805, - 0, 816, 800, 0, 807, 0, 818, 0, 833, 775, - 0, 858, 0, 0, 486, 0, 502, 504, 0, 0, - 440, 0, 0, 436, 0, 0, 465, 0, 506, 480, - 0, 139, 507, 137, 138, 509, 0, 523, 778, 0, - 849, 0, 842, 0, 846, 515, 0, 0, 0, 351, - 0, 513, 0, 0, 525, 866, 0, 862, 795, 0, - 877, 0, 875, 0, 0, 624, 625, 0, 0, 0, - 685, 674, 675, 673, 681, 602, 608, 601, 0, 0, - 331, 597, 0, 0, 0, 539, 837, 724, 428, 422, - 426, 421, 526, 463, 462, 461, 458, 457, 0, 452, - 417, 418, 429, 0, 0, 745, 0, 0, 903, 879, - 0, 904, 0, 900, 0, 915, 0, 0, 0, 0, - 883, 19, 328, 671, 670, 0, 669, 0, 346, 961, - 174, 956, 0, 0, 53, 0, 0, 0, 0, 0, - 0, 353, 0, 628, 0, 0, 79, 78, 0, 469, - 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, - 0, 808, 801, 0, 819, 0, 0, 857, 493, 492, - 443, 0, 0, 940, 941, 432, 438, 0, 441, 0, - 467, 0, 0, 0, 0, 0, 776, 852, 0, 843, - 0, 521, 516, 0, 0, 512, 0, 865, 0, 794, - 878, 876, 0, 530, 0, 610, 606, 605, 604, 334, - 596, 595, 612, 460, 0, 450, 449, 582, 139, 0, - 761, 743, 0, 0, 0, 750, 0, 881, 0, 908, - 0, 923, 924, 917, 887, 889, 929, 349, 348, 960, - 0, 0, 61, 55, 0, 63, 25, 22, 0, 0, - 304, 0, 210, 0, 101, 0, 76, 755, 112, 113, - 0, 0, 0, 758, 182, 183, 0, 0, 0, 0, - 156, 165, 157, 159, 798, 0, 0, 0, 0, 0, - 817, 0, 0, 442, 444, 445, 439, 433, 437, 0, - 498, 0, 466, 477, 431, 510, 508, 0, 848, 0, - 0, 0, 517, 0, 868, 0, 0, 623, 615, 0, - 459, 0, 0, 739, 751, 880, 0, 0, 0, 901, - 0, 0, 0, 948, 0, 0, 0, 68, 69, 72, - 73, 0, 319, 310, 309, 0, 629, 206, 96, 0, - 741, 759, 168, 0, 180, 0, 0, 0, 796, 870, - 0, 0, 0, 812, 0, 820, 774, 482, 479, 783, - 0, 789, 0, 0, 781, 0, 786, 850, 520, 519, - 867, 863, 0, 613, 0, 0, 882, 905, 0, 0, - 0, 919, 0, 930, 0, 74, 66, 0, 0, 0, - 305, 0, 0, 0, 0, 0, 169, 0, 160, 158, - 860, 809, 802, 0, 0, 777, 782, 0, 787, 0, - 0, 616, 0, 753, 0, 909, 926, 927, 920, 890, - 54, 0, 70, 71, 0, 0, 0, 0, 0, 0, - 0, 760, 167, 0, 179, 0, 0, 821, 788, 0, - 676, 851, 864, 762, 0, 0, 0, 75, 0, 0, - 320, 0, 306, 0, 314, 370, 369, 0, 367, 658, - 0, 630, 0, 659, 207, 97, 170, 861, 0, 0, - 814, 0, 906, 0, 921, 0, 0, 0, 0, 0, - 0, 0, 0, 660, 0, 0, 803, 0, 0, 910, - 28, 23, 321, 0, 0, 315, 368, 0, 0, 0, - 98, 0, 677, 0, 0, 0, 0, 307, 666, 0, - 667, 664, 0, 662, 94, 0, 93, 0, 0, 82, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 140, - 0, 0, 223, 215, 216, 217, 218, 219, 220, 221, - 222, 0, 0, 213, 0, 804, 0, 907, 0, 322, - 318, 0, 0, 0, 631, 83, 0, 266, 261, 265, - 0, 208, 214, 0, 913, 911, 665, 663, 0, 0, - 0, 0, 0, 0, 0, 274, 0, 0, 224, 0, - 0, 232, 0, 151, 141, 150, 0, 99, 0, 0, - 260, 0, 0, 259, 0, 145, 0, 0, 340, 0, - 338, 0, 0, 185, 0, 0, 0, 0, 0, 632, - 209, 0, 102, 0, 337, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 0, 142, 0, 0, 189, - 0, 341, 0, 227, 226, 225, 0, 100, 0, 278, - 0, 257, 118, 0, 255, 0, 0, 0, 120, 0, - 342, 0, 0, 186, 0, 0, 0, 339, 230, 111, - 109, 0, 0, 282, 0, 0, 0, 0, 0, 146, - 0, 263, 0, 0, 0, 0, 124, 0, 0, 0, - 0, 343, 344, 0, 0, 0, 0, 0, 106, 297, - 0, 279, 0, 0, 291, 0, 0, 0, 286, 0, - 136, 0, 0, 0, 0, 131, 0, 0, 275, 0, - 121, 0, 115, 125, 143, 149, 197, 0, 187, 0, - 0, 0, 0, 110, 0, 103, 107, 0, 0, 0, - 293, 0, 294, 283, 0, 0, 277, 287, 258, 0, - 0, 117, 132, 256, 0, 273, 0, 264, 268, 127, - 0, 0, 0, 194, 196, 190, 231, 108, 298, 300, - 280, 0, 0, 292, 289, 135, 133, 147, 0, 0, - 0, 144, 198, 200, 188, 0, 0, 0, 291, 0, - 269, 271, 128, 0, 0, 191, 302, 303, 299, 301, - 290, 148, 0, 0, 204, 203, 202, 199, 201, 0, - 0, 0, 192, 270, 272, + 581, 0, 0, 501, 0, 0, 0, 0, 0, 0, + 0, 882, 884, 880, 0, 890, 0, 0, 327, 945, + 946, 351, 0, 0, 348, 0, 0, 174, 0, 0, + 955, 941, 943, 60, 58, 59, 0, 0, 53, 0, + 0, 61, 63, 27, 25, 0, 0, 0, 635, 0, + 639, 424, 0, 474, 0, 525, 0, 536, 164, 185, + 0, 0, 154, 0, 0, 0, 165, 529, 0, 856, + 804, 0, 815, 799, 0, 806, 0, 821, 0, 0, + 831, 776, 0, 0, 0, 487, 0, 503, 505, 0, + 0, 441, 0, 0, 437, 0, 0, 466, 0, 507, + 481, 0, 140, 508, 138, 139, 510, 0, 524, 0, + 847, 0, 840, 0, 844, 516, 0, 0, 0, 352, + 0, 514, 0, 0, 526, 0, 859, 0, 873, 0, + 871, 0, 0, 625, 626, 0, 0, 0, 686, 675, + 676, 674, 682, 603, 609, 602, 0, 0, 332, 598, + 0, 0, 0, 540, 835, 725, 429, 423, 427, 422, + 527, 464, 463, 462, 459, 458, 0, 453, 418, 419, + 430, 0, 0, 746, 0, 0, 899, 875, 0, 900, + 0, 896, 0, 911, 0, 0, 0, 0, 879, 19, + 329, 672, 671, 0, 670, 0, 347, 957, 175, 952, + 0, 0, 54, 0, 0, 0, 0, 0, 0, 354, + 0, 629, 0, 0, 80, 79, 0, 470, 0, 0, + 0, 0, 0, 535, 0, 0, 0, 0, 0, 807, + 800, 0, 0, 820, 0, 0, 855, 494, 493, 444, + 0, 0, 936, 937, 433, 439, 0, 442, 0, 468, + 0, 0, 0, 0, 0, 777, 850, 0, 841, 0, + 522, 517, 0, 0, 513, 0, 862, 0, 794, 874, + 872, 0, 531, 0, 611, 607, 606, 605, 335, 597, + 596, 613, 461, 0, 451, 450, 583, 140, 0, 762, + 744, 0, 0, 0, 751, 0, 877, 0, 904, 0, + 919, 920, 913, 883, 885, 925, 350, 349, 956, 0, + 0, 62, 56, 0, 64, 26, 23, 0, 0, 305, + 0, 211, 0, 102, 0, 77, 756, 113, 114, 0, + 0, 0, 759, 183, 184, 0, 0, 0, 0, 157, + 166, 158, 160, 797, 0, 0, 0, 0, 0, 816, + 817, 0, 0, 443, 445, 446, 440, 434, 438, 0, + 499, 0, 467, 478, 432, 511, 509, 0, 846, 0, + 0, 0, 518, 0, 864, 0, 0, 624, 616, 0, + 460, 0, 0, 740, 752, 876, 0, 0, 0, 897, + 0, 0, 0, 944, 0, 0, 0, 69, 70, 73, + 74, 0, 320, 311, 310, 0, 630, 207, 97, 0, + 742, 760, 169, 0, 181, 0, 0, 0, 795, 866, + 0, 0, 0, 811, 0, 818, 775, 483, 480, 783, + 0, 789, 0, 0, 781, 0, 786, 848, 521, 520, + 863, 860, 0, 614, 0, 0, 878, 901, 0, 0, + 0, 915, 0, 926, 0, 75, 67, 0, 0, 0, + 306, 0, 0, 0, 0, 0, 170, 0, 161, 159, + 857, 808, 801, 0, 0, 778, 782, 0, 787, 0, + 0, 617, 0, 754, 0, 905, 922, 923, 916, 886, + 55, 0, 71, 72, 0, 0, 0, 0, 0, 0, + 0, 761, 168, 0, 180, 0, 0, 819, 788, 0, + 677, 849, 861, 763, 0, 0, 0, 76, 0, 0, + 321, 0, 307, 0, 315, 371, 370, 0, 368, 659, + 0, 631, 0, 660, 208, 98, 171, 858, 0, 0, + 813, 0, 902, 0, 917, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 0, 0, 802, 0, 0, 906, + 29, 24, 322, 0, 0, 316, 369, 0, 0, 0, + 99, 0, 678, 0, 0, 0, 0, 308, 667, 0, + 668, 665, 0, 663, 95, 0, 94, 0, 0, 83, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 141, + 0, 0, 224, 216, 217, 218, 219, 220, 221, 222, + 223, 0, 0, 214, 0, 803, 0, 903, 0, 323, + 319, 0, 0, 0, 632, 84, 0, 267, 262, 266, + 0, 209, 215, 0, 909, 907, 666, 664, 0, 0, + 0, 0, 0, 0, 0, 275, 0, 0, 225, 0, + 0, 233, 0, 152, 142, 151, 0, 100, 0, 0, + 261, 0, 0, 260, 0, 146, 0, 0, 341, 0, + 339, 0, 0, 186, 0, 0, 0, 0, 0, 633, + 210, 0, 103, 0, 338, 0, 0, 0, 0, 117, + 0, 0, 0, 0, 0, 0, 143, 0, 0, 190, + 0, 342, 0, 228, 227, 226, 0, 101, 0, 279, + 0, 258, 119, 0, 256, 0, 0, 0, 121, 0, + 343, 0, 0, 187, 0, 0, 0, 340, 231, 112, + 110, 0, 0, 283, 0, 0, 0, 0, 0, 147, + 0, 264, 0, 0, 0, 0, 125, 0, 0, 0, + 0, 344, 345, 0, 0, 0, 0, 0, 107, 298, + 0, 280, 0, 0, 292, 0, 0, 0, 287, 0, + 137, 0, 0, 0, 0, 132, 0, 0, 276, 0, + 122, 0, 116, 126, 144, 150, 198, 0, 188, 0, + 0, 0, 0, 111, 0, 104, 108, 0, 0, 0, + 294, 0, 295, 284, 0, 0, 278, 288, 259, 0, + 0, 118, 133, 257, 0, 274, 0, 265, 269, 128, + 0, 0, 0, 195, 197, 191, 232, 109, 299, 301, + 281, 0, 0, 293, 290, 136, 134, 148, 0, 0, + 0, 145, 199, 201, 189, 0, 0, 0, 292, 0, + 270, 272, 129, 0, 0, 192, 303, 304, 300, 302, + 291, 149, 0, 0, 205, 204, 203, 200, 202, 0, + 0, 0, 193, 271, 273, }; protected static readonly short [] yyDgoto = { 7, - 8, 49, 9, 50, 10, 11, 51, 233, 690, 431, - 12, 13, 52, 22, 23, 192, 322, 236, 675, 840, - 1032, 1150, 1487, 837, 237, 238, 239, 240, 241, 242, - 243, 244, 668, 446, 669, 670, 942, 671, 672, 946, - 838, 1027, 1028, 1029, 267, 592, 1122, 110, 849, 1218, - 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, - 1229, 465, 679, 1301, 956, 1129, 1094, 1162, 1186, 1245, - 1312, 1157, 1362, 1339, 1387, 1388, 1389, 958, 1385, 959, - 735, 1278, 1350, 1325, 1375, 515, 1368, 1344, 1404, 921, - 1373, 1376, 1377, 1471, 1405, 1406, 1402, 1230, 1285, 1257, - 1302, 691, 1352, 1451, 1322, 1408, 1480, 466, 268, 692, - 693, 694, 695, 696, 655, 569, 1134, 656, 657, 855, - 1304, 1329, 1419, 1380, 1453, 1305, 1355, 1476, 1500, 1420, - 1421, 1498, 1484, 1485, 954, 1093, 1185, 1242, 1287, 1243, - 1244, 1279, 1336, 1308, 1280, 325, 224, 1384, 1282, 1369, - 1366, 1231, 1259, 1298, 1448, 1410, 1142, 1449, 593, 1493, - 1494, 1297, 1365, 1341, 1397, 1392, 1363, 1429, 1434, 1395, - 1398, 1399, 1479, 1435, 1393, 1394, 1489, 1477, 1478, 951, - 1036, 1153, 1127, 1179, 1154, 1155, 1194, 1090, 1177, 1206, - 534, 194, 112, 351, 196, 563, 441, 225, 1317, 653, - 654, 826, 842, 326, 408, 533, 304, 1158, 1159, 45, - 114, 305, 116, 117, 118, 119, 120, 121, 122, 123, + 8, 50, 9, 51, 10, 11, 52, 234, 691, 432, + 12, 13, 53, 22, 23, 24, 323, 194, 237, 676, + 838, 1032, 1150, 1487, 835, 238, 239, 240, 241, 242, + 243, 244, 245, 669, 447, 670, 671, 941, 672, 673, + 945, 836, 1027, 1028, 1029, 268, 593, 1122, 111, 847, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, + 1228, 1229, 466, 680, 1301, 955, 1129, 1094, 1162, 1186, + 1245, 1312, 1157, 1362, 1339, 1387, 1388, 1389, 957, 1385, + 958, 736, 1278, 1350, 1325, 1375, 516, 1368, 1344, 1404, + 920, 1373, 1376, 1377, 1471, 1405, 1406, 1402, 1230, 1285, + 1257, 1302, 692, 1352, 1451, 1322, 1408, 1480, 467, 269, + 693, 694, 695, 696, 697, 656, 570, 1134, 657, 658, + 853, 1304, 1329, 1419, 1380, 1453, 1305, 1355, 1476, 1500, + 1420, 1421, 1498, 1484, 1485, 953, 1093, 1185, 1242, 1287, + 1243, 1244, 1279, 1336, 1308, 1280, 326, 225, 1384, 1282, + 1369, 1366, 1231, 1259, 1298, 1448, 1410, 1142, 1449, 594, + 1493, 1494, 1297, 1365, 1341, 1397, 1392, 1363, 1429, 1434, + 1395, 1398, 1399, 1479, 1435, 1393, 1394, 1489, 1477, 1478, + 950, 1036, 1153, 1127, 1179, 1154, 1155, 1194, 1090, 1177, + 1206, 535, 195, 113, 352, 197, 564, 442, 226, 1317, + 654, 655, 824, 840, 327, 409, 534, 305, 1158, 1159, + 46, 115, 306, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 253, 803, 994, 511, 722, 876, 723, - 724, 987, 137, 199, 728, 594, 595, 596, 597, 797, - 474, 475, 298, 992, 730, 409, 300, 498, 499, 500, - 501, 504, 737, 311, 753, 754, 893, 264, 480, 768, - 265, 479, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 572, 573, 574, - 777, 778, 909, 779, 153, 560, 770, 352, 1010, 548, - 1073, 154, 493, 952, 1092, 1183, 1283, 467, 1163, 1164, - 1213, 1214, 827, 552, 337, 774, 1172, 553, 554, 269, - 270, 271, 157, 158, 159, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 171, 284, 578, - 172, 173, 318, 808, 632, 924, 852, 686, 962, 922, - 925, 1052, 926, 963, 964, 285, 174, 175, 176, 1063, - 998, 1064, 1065, 1066, 1108, 1067, 177, 178, 179, 180, - 703, 486, 704, 1055, 980, 1169, 1137, 1202, 705, 979, - 706, 1171, 1104, 181, 182, 183, 184, 185, 186, 306, - 524, 525, 1000, 1110, 314, 978, 861, 1136, 1007, 899, - 1111, 187, 419, 188, 420, 927, 1017, 421, 644, 821, - 818, 819, 1022, 422, 423, 424, 425, 426, 427, 931, - 634, 929, 1115, 1189, 1248, 1019, 1146, 1205, 816, 640, - 817, 1081, 1021, 1082, 1147, 1023, 17, 19, 46, 47, - 228, 658, 834, 442, 659, 660, + 134, 135, 136, 137, 254, 801, 994, 512, 723, 875, + 724, 725, 987, 138, 200, 729, 595, 596, 597, 598, + 795, 475, 476, 299, 992, 731, 410, 301, 499, 500, + 501, 502, 505, 738, 312, 753, 754, 892, 265, 481, + 766, 266, 480, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 573, 574, + 575, 775, 776, 908, 777, 154, 561, 768, 353, 1010, + 549, 1073, 155, 494, 951, 1092, 1183, 1283, 468, 1163, + 1164, 1213, 1214, 825, 553, 338, 772, 1172, 554, 555, + 270, 271, 272, 158, 159, 160, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 172, 285, + 579, 173, 174, 319, 806, 633, 923, 850, 687, 961, + 921, 924, 1052, 925, 962, 963, 286, 175, 176, 177, + 1063, 998, 1064, 1065, 1066, 1108, 1067, 178, 179, 180, + 181, 704, 487, 705, 1055, 979, 1169, 1137, 1202, 706, + 978, 707, 1171, 1104, 182, 183, 184, 185, 186, 187, + 307, 525, 526, 1000, 1110, 315, 977, 859, 1136, 1007, + 898, 1111, 188, 420, 189, 421, 926, 1017, 422, 645, + 819, 816, 817, 1022, 423, 424, 425, 426, 427, 428, + 930, 635, 928, 1115, 1189, 1248, 1019, 1146, 1205, 814, + 641, 815, 1081, 1021, 1082, 1147, 1023, 17, 19, 47, + 48, 229, 659, 832, 443, 660, 661, }; - protected static readonly short [] yySindex = { 55, - 0, -177, -124, -210, 197,12010, 0, 149, 0, 0, - 197, -210, 0, 0, 217, 0, 6687, 197, 0, -165, - -245, 0, 0, 0, 0, 0, 0, 0, 203, 0, - 251, 0, 0, 0, 3719, 0, 0, 0, 0, 0, - 0, 0, 0, 422, 0, 0, 701, 0, 0, 149, - 347, 197, 0, 329, 0, 234, 351, 303,11510, 364, - 174, 415, 6844, 0, 174, 174, 174, 6, 174, 174, - 717, 0,10613, 174, 174, 0,10613, 0, 377, 0, - 303, 0, 174, 444, 174, 0,12029,12029, 480, 174, - 174, -138,11293, 0,10613, 0,11293,11293,11293,11293, -11293,11293,11293,11293, 0, 190, 0, 8098, 0, 191, - 0, 464, 466, 336, -236, 0, 0, 458, 0, 0, + protected static readonly short [] yySindex = { -54, + 0, -193, -117, -72, 106,12157, 0, 257, 0, 0, + 106, -72, 0, 0, 180, 0, 6802, 106, 0, -188, + -231, 0, 0, 0, 0, 0, 0, 0, 0, 235, + 0, 301, 0, 0, 0, 1660, 0, 0, 0, 0, + 0, 0, 0, 0, 549, 0, 0, 559, 0, 0, + 257, 267, 106, 0, 291, 0, 243, 315, -259,11657, + 330, 232, 375, 6959, 0, 232, 232, 232, -163, 232, + 232, 12, 0,10760, 232, 232, 0,10760, 0, 374, + 0, -259, 0, 232, 351, 232, 0,11736,11736, 390, + 232, 232, 4,11440, 0,10760, 0,11440,11440,11440, +11440,11440,11440,11440,11440, 0, -237, 0, 8508, 0, + 179, 0, 371, 421, 533, 340, 0, 0, 441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1141, 681, - 74, 420, 588, 498, 478, 516, 532, 522, 376, 550, - 0, 0, 0, 0, 0, 0, 3420, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, + 668, 50, 20, 462, 463, 508, 458, 518, 544, 408, + 543, 0, 0, 0, 0, 0, 0, 3463, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -254, 560, -264, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -120, 148, 347, 0, - 419, 572, 596, 0, 575, 0, 0, 0, 0, 8098, - 8098, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -262, 589, -266, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -168, -158, 267, + 0, 336, 574, 600, 0, 572, 0, 0, 0, 0, + 8508, 8508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 660, 607, 0, 624, 0, -248, 0, - 0, 0, 347,12622, 347, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 794, 639,10749, 0, 0, - 0, 0,10613, 174, 174, 784, -277, 336, 0, -254, - 0, 8098, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 660, 584, 0, 621, 0, -260, + 0, 0, 0, 267,12653, 267, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 806, 647,10896, 0, + 0, 0, 0,10760, 232, 232, 819, 367, 533, 0, + -262, 0, 8508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -140, -30,11510, 0, 8098,10613, 697, - 0, 0, 700,10613,10613, 9004, -202, -163, 716, 8393, -11293, 190, 0, 723, 0, 734, 8098,10613, 738, 432, - 174, 0,10613, 377,10069, 0, 0, 444,10613, 444, - 305, 487, 840, -254, 0, 560, -236, 844, -254,10613, -10613,10613, 415, 0, 779, 0, 7001, -310, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4144, 0, - 0,11939, 305, 769, 778,10613, 0, 736, 0, 463, - 0, 0, 491, 0, 0, 780, 8533, 9797, 0, 0, -11293,10613,10613,10613,10613,10613,10613,10613,10613,10613, -10613,10613,11293,11293,11293, 8098, 8098,11293,11293,11293, -11293,11293,11293,11293,11293,11293,11293,11293,11293,11293, -11293,11293,11293,10613, 0, 0, 0, 0, 560, 0, - 0, 0, 0,12029,12029, -254, 0, 0, 0, 0, - -224, 822, 0, 0, 0, 0, 0, 0, 0, 347, - 347, 787, 0, 0, 800, 736, 660, 660, 0, 75, - 0, 534, 660, 823, 0, -197,12622, 0, 0, 0, - 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 284,12652, 0, 0, 0, 736, - 0, 0, 806, 484, 0, 848, 0, 849, 36, 377, - 0, 174, 0, 0, -254, 8081, -176, 0, 847, 0, - 0, 0, -158, -150, 0, 355, 0, 856, 0, 852, - 0, 0, 0, 515, 0, 8217, 622,10613, 716, 9797, - 0, 7472, 0, 444, 0, 0, 0, 855, -143, 0, - 0, 303, 377, 112, 0, 1554, 858, 0, -49, -254, - 0, -46, 0, 0, 0,10613, 934, 0, 0, 0, -10613, 938, 869, 0, 874, 875, 0,11939, 0, 0, - -198, -280, 7001, 0, 0, 0, 0, 0, 0, 377, - 0, 0, 401, 0, 0, 0, 444, 305, -254, 8550, - 0, 876, 0, 879,11293, 0, 877, 7001, 0, 115, - 0, 390, 0, 736, 0, 92,10613,10613, 881, 998, - 0, 0, -291, 882, 0, 0, 0, 681, 0, 0, + 0, 0, 0, 0, 157, 158,11657, 0, 8508,10760, + 714, 0, 0, 733,10760,10760, 9119, -235, -84, 759, + 8665,11440, -237, 0, 745, 0, 756, 8508,10760, 761, + -118, 232, 0,10760, 374,10216, 0, 0, 351,10760, + 351, -264, 480, 855, -262, 0, 589, 340, 861, -262, +10760,10760,10760, 375, 0, 820, 0, 7116, -263, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4346, + 0, 0,12086, -264, 768, 784,10760, 0, 788, 0, + 233, 0, 0, 461, 0, 0, 793, 8648, 9944, 0, + 0,11440,10760,10760,10760,10760,10760,10760,10760,10760, +10760,10760,10760,11440,11440,11440, 8508, 8508,11440,11440, +11440,11440,11440,11440,11440,11440,11440,11440,11440,11440, +11440,11440,11440,11440,10760, 0, 0, 0, 0, 589, + 0, 0, 0, 0,11736,11736, -262, 0, 0, 0, + 0, 97, 640, 0, 0, 0, 0, 0, 0, 0, + 267, 267, 807, 0, 811, 0, 788, 660, 660, 0, + 73, 0, 618, 660, 837, 0, -183,12653, 0, 0, + 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -145,12696, 0, 0, 0, + 788, 0, 0, 849, 445, 0, 854, 0, 859, -140, + 374, 0, 232, 0, 0, -262, 8196, -201, 0, 856, + 0, 0, 0, -156, 865, 0, 320, 0, 866, 0, + 864, 0, 0, 0, 465, 0, 8332, 664,10760, 759, + 9944, 0, 7587, 0, 351, 0, 0, 0, 867, 868, + 0, 0, -259, 374, 373, 0, 4187, 871, 0, 873, + -262, 0, 874, 0, 0, 0,10760, 953, 0, 0, + 0,10760, 956, 877, 0, 881, 884, 0,12086, 0, + 0, -186, -221, 7116, 0, 0, 0, 0, 0, 0, + 374, 0, 0, 131, 0, 0, 0, 351, -264, -262, + 8822, 0, 885, 0, 889,11440, 0, 886, 7116, 0, + 349, 0, 354, 0, 788, 0, 13,10760,10760, 893, + 1009, 0, 0, -255, 895, 0, 0, 0, 668, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 681, 681, 74, 74, 420, 420, - 420, 420, 588, 588, 498, 478, 516, 532, 522, 0, - 880, -187, 0,10613, 967, -254, 969, -254, 884,10613, - 0, 0, 0, 911, 0, 602, 736, 0, 0, 0, - 0, 542, 410, 0, 8550, 534, 0, 896, 895, 0, - 0, 0, 0, 0, 0, 305, 596, 0, 897, 899, - 0, 0, 0, 0, 901, 8707, 857, 0, 279, 0, - 0, -179, 0,10749, 0, 889, 0, 0, 0, 598, - 904, 0, 903, 905, 908, 0, 0,10613, 0, 0, - -254, 0, 0, 909, 0, 913, 0, -136, 0, 0, - 6844, 0, 6844, 8376, 0, 9004, 0, 0,10205, 173, - 0, -260, -183, 0, 859, 867, 0, 114, 0, 0, - 921, 0, 0, 0, 0, 0, 926, 0, 0, 935, - 0, 4303, 0, 377, 0, 0, 444, 514, 885, 0, - -39, 0, 929, 936, 0, 0, 6844, 0, 0, 6844, - 0,10613, 0,10613, 8098, 0, 0, 377, 941, 377, - 0, 0, 0, 0, 0, 0, 0, 0, 8690, 8098, - 0, 0, -254,11939, 964, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9661, 0, - 0, 0, 0, 9933,10613, 0, 7629, 940, 0, 0, - 1022, 0, 1023, 0, 644, 0, 944,10613,10613, -254, - 0, 0, 0, 0, 0, 906, 0, 75, 0, 0, - 0, 0, 534, 534, 0, 787, 949, 950, 910, 955, - 857, 0, 951, 0, 1071, 1073, 0, 0,10613, 0, -10341, 956, 598, 8550, 8098, 0, 372, 1075, 1077, 73, - 953, 0, 0,10613, 0,10613, 1055, 0, 0, 0, - 0, 138,10477, 0, 0, 0, 0, 7765, 0, 1081, - 0, 560,10613, 971, 8376, 972, 0, 0, -254, 0, - 28, 0, 0, 736, 885, 0, -254, 0, -161, 0, - 0, 0, 970, 0, 996, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 732, 0, 0, 0, 0, 8393, - 0, 0, -254, 965, 940, 0,10613, 0,10613, 0, -10613, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 973, 787, 0, 0,10885, 0, 0, 0, 976, 4462, - 0, 857, 0, 857, 0, 857, 0, 0, 0, 0, - -254, 968, 956, 0, 0, 0, -154, -153, 974, 977, - 0, 0, 0, 0, 0, 978, 8376, 940, -187,10613, - 0, 980, 6844, 0, 0, 0, 0, 0, 0, 983, - 0, 716, 0, 0, 0, 0, 0, -174, 0, 985, - 736, 885, 0, 885, 0, 940, 988, 0, 0, 377, - 0, 927, 981, 0, 0, 0,10613, 1008,10613, 0, -10613, 1010, 216, 0, 899, 255, 735, 0, 0, 0, - 0, -210, 0, 0, 0, 992, 0, 0, 0, 982, - 0, 0, 0, 488, 0, 984, 1108, 1110, 0, 0, - 940, 995, 940, 0, 993, 0, 0, 0, 0, 0, -10613, 0, 1003, -184, 0, -184, 0, 0, 0, 0, - 0, 0, 377, 0,10613, 7924, 0, 0, 1035, 710, - 1009, 0,10613, 0, 1014, 0, 0,10885, 197, 36, - 0, 1012, 1012, 1012,10341, 1019, 0,10613, 0, 0, - 0, 0, 0, 6844, 1021, 0, 0, 7001, 0, 1030, - 6844, 0, 1028, 0,10613, 0, 0, 0, 0, 0, - 0,10613, 0, 0, 347, 1029, 347, 7489, 187, 187, - 187, 0, 0,10613, 0, 6844,10613, 0, 0, 7001, - 0, 0, 0, 0, 1054,10613,10613, 0, 347, 1036, - 0, 994, 0, 1037, 0, 0, 0, 1039, 0, 0, - 999, 0, 1064, 0, 0, 0, 0, 0, 1042, 913, - 0, 7001, 0, 1072, 0, 1043, 187, 0, 1053, 347, - 7489, 1047, 1056, 0, 1057, 1058, 0, 1059,10613, 0, - 0, 0, 0, 1045, 1043, 0, 0,11589, 117, 347, - 0, 6844, 0, 1078,10613, 1060,10613, 0, 0, 1062, - 0, 0, 1061, 0, 0,12652, 0, 1070, 117, 0, + 0, 0, 0, 0, 0, 668, 668, 50, 50, 20, + 20, 20, 20, 462, 462, 463, 508, 458, 518, 544, + 0, 892, -198, 0,10760, 976, -262, 977, -262, 896, +10760, 0, 0, 0, 917, 0, 386, 788, 0, 0, + 0, 0, 517, 230, 0, 8822, 618, 0, 904, 905, + 0, 0, 0, 0, 0, 0, -264, 574, 0, 906, + 912, 0, 0, 0, 0, 916, 8979, 872, 0, 250, + 0, 0, 582, 0,10896, 0, 913, 0, 0, 0, + 577, 924, 0, 923, 930, 931, 0, 0,10760, 0, + 0, -262, 0, 0, 935, 0, 932, 0,10760, -119, + 0, 0, 6959, 6959, 8491, 0, 9119, 0, 0,10352, + 236, 0, -55, -112, 0, 878, 890, 0, 28, 0, + 0, 943, 0, 0, 0, 0, 0, 942, 0, 950, + 0, 4505, 0, 374, 0, 0, 351, 511, 897, 0, + 168, 0, 947, 949, 0, 6959, 0, 6959, 0,10760, + 0,10760, 8508, 0, 0, 374, 948, 374, 0, 0, + 0, 0, 0, 0, 0, 0, 8805, 8508, 0, 0, + -262,12086, 980, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 9808, 0, 0, 0, + 0,10080,10760, 0, 7744, 958, 0, 0, 1040, 0, + 1041, 0, 614, 0, 962,10760,10760, -262, 0, 0, + 0, 0, 0, 919, 0, 73, 0, 0, 0, 0, + 618, 618, 0, 807, 970, 971, 926, 974, 872, 0, + 972, 0, 1090, 1092, 0, 0,10760, 0,10488, 981, + 577, 8822, 8508, 0, 274, 1098, 1101, -126, 964, 0, + 0,10760, 990, 0,10760, 1083, 0, 0, 0, 0, + -164,10624, 0, 0, 0, 0, 7880, 0, 1108, 0, + 589,10760, 998, 8491, 999, 0, 0, -262, 0, 203, + 0, 0, 788, 897, 0, -262, 0, -167, 0, 0, + 0, 1000, 0, 1027, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 578, 0, 0, 0, 0, 8665, 0, + 0, -262, 995, 958, 0,10760, 0,10760, 0,10760, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1003, + 807, 0, 0,11032, 0, 0, 0, 1004, 7604, 0, + 872, 0, 872, 0, 872, 0, 0, 0, 0, -262, + 1005, 981, 0, 0, 0, -169, -166, 1002, 1008, 0, + 0, 0, 0, 0, 1010, 8491, 958, -198,10760, 0, + 0, 1012, 6959, 0, 0, 0, 0, 0, 0, 1017, + 0, 759, 0, 0, 0, 0, 0, -202, 0, 1016, + 788, 897, 0, 897, 0, 958, 1018, 0, 0, 374, + 0, 951, 1013, 0, 0, 0,10760, 1042,10760, 0, +10760, 1044, 256, 0, 912, 279, 613, 0, 0, 0, + 0, -72, 0, 0, 0, 1026, 0, 0, 0, 1015, + 0, 0, 0, 455, 0, 1029, 1155, 1156, 0, 0, + 958, 1045, 958, 0, 1037, 0, 0, 0, 0, 0, +10760, 0, 1048, -209, 0, -209, 0, 0, 0, 0, + 0, 0, 374, 0,10760, 8039, 0, 0, 1072, 692, + 1050, 0,10760, 0, 1052, 0, 0,11032, 106, -140, + 0, 1051, 1051, 1051,10488, 1063, 0,10760, 0, 0, + 0, 0, 0, 6959, 1060, 0, 0, 7116, 0, 1069, + 6959, 0, 1068, 0,10760, 0, 0, 0, 0, 0, + 0,10760, 0, 0, 267, 1067, 267, 7761, -101, -101, + -101, 0, 0,10760, 0, 6959,10760, 0, 0, 7116, + 0, 0, 0, 0, 1093,10760,10760, 0, 267, 1074, + 0, 1028, 0, 1070, 0, 0, 0, 1071, 0, 0, + 1030, 0, 1111, 0, 0, 0, 0, 0, 1075, 932, + 0, 7116, 0, 1103, 0, 1076, -101, 0, 1085, 267, + 7761, 1080, 1091, 0, 1094, 1095, 0, 1088,10760, 0, + 0, 0, 0, 1078, 1076, 0, 0, 1269, 79, 267, + 0, 6959, 0, 1104,10760, 1081,10760, 0, 0, 1096, + 0, 0, 1099, 0, 0,12696, 0, 1106, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 17,12652, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1074, 347, 0, 117, 0, -254, 0, 1078, 0, - 0, 1068,11589,11755, 0, 0, 158, 0, 0, 0, -11787, 0, 0, 1079, 0, 0, 0, 0, 8098, 8098, - 373, 8393, 409, 444, 1092, 0, 305, 9597, 0, 1140, - 0, 0, 1043, 0, 0, 0, 1043, 0, 1031, 1032, - 0, 8098, -152, 0, 8098, 0, 1033, 1088, 0, 305, - 0, 1089, 1146, 0, 1083, 1044, 134, 446, 3719, 0, - 0, 1043, 0, 305, 0, 1094, 1050, 1098, 1065, 0, - 1099, 1032, 1102, 36, 1093, 1105, 0, 1109, 1114, 0, - 736, 0, 685, 0, 0, 0, 1112, 0, -60, 0, - 1104, 0, 0, 1117, 0, 1116, 1119, 1120, 0, 1115, - 0, 36, 36, 0, 36, 1121, 1122, 0, 0, 0, - 0, 1123, 127, 0, 1125, 36, 1232, 1126, 36, 0, - 158, 0, 8376, 1084, 1127, 1115, 0, 1124, 1129, 151, - 1134, 0, 0, 36,10341, 1087, 1130, 1123, 0, 0, -12652, 0, 347, 347, 0, 1091, 1135, 1125, 0, 1138, - 0,10613, 1096, 1139, 1126, 0, 1144, 36, 0, -132, - 0, 1131, 0, 0, 0, 0, 0,12652, 0, 151, - 151, 1151, 1168, 0, -60, 0, 0, 168, 1155,12652, - 0,12652, 0, 0, 8376, 1160, 0, 0, 0, 1172, - 1117, 0, 0, 0, 1181, 0, 205, 0, 0, 0, - 187, 725, 1186, 0, 0, 0, 0, 0, 0, 0, - 0, 1240, 1293, 0, 0, 0, 0, 0, 1187, 1188, - 8376, 0, 0, 0, 0, 151, 517, 517, 0, 187, - 0, 0, 0, 71, 71, 0, 0, 0, 0, 0, - 0, 0, 9797, 9797, 0, 0, 0, 0, 0, 1189, - 1193, 1195, 0, 0, 0, + 416,12696, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1107, 267, 0, 79, 0, -262, 0, 1104, 0, + 0, 1097, 1269,11902, 0, 0, 466, 0, 0, 0, +11934, 0, 0, 1110, 0, 0, 0, 0, 8508, 8508, + 370, 8665, 385, 351, 1126, 0, -264, 9744, 0, 1161, + 0, 0, 1076, 0, 0, 0, 1076, 0, 1061, 1062, + 0, 8508, -165, 0, 8508, 0, 1065, 1113, 0, -264, + 0, 1114, 9155, 0, 1112, 1087, -251, 575, 1660, 0, + 0, 1076, 0, -264, 0, 1119, 1105, 1116, 1125, 0, + 1117, 1062, 1135, -140, 1143, 1154, 0, 1157, 1162, 0, + 788, 0, 777, 0, 0, 0, 1159, 0, -154, 0, + 1150, 0, 0, 1163, 0, 1164, 1165, 1166, 0, 1168, + 0, -140, -140, 0, -140, 1160, 1170, 0, 0, 0, + 0, 1171, 81, 0, 1173, -140, 1293, 1176, -140, 0, + 466, 0, 8491, 1133, 1177, 1168, 0, 1180, 1183, 94, + 1186, 0, 0, -140,10488, 1140, 1184, 1171, 0, 0, +12696, 0, 267, 267, 0, 1141, 1185, 1173, 0, 1190, + 0,10760, 1145, 1189, 1176, 0, 1194, -140, 0, -153, + 0, 1191, 0, 0, 0, 0, 0,12696, 0, 94, + 94, 1200, 1202, 0, -154, 0, 0, 62, 1208,12696, + 0,12696, 0, 0, 8491, 1196, 0, 0, 0, 1209, + 1163, 0, 0, 0, 1211, 0, 154, 0, 0, 0, + -101, 829, 1212, 0, 0, 0, 0, 0, 0, 0, + 0, 1266, 1321, 0, 0, 0, 0, 0, 1215, 1217, + 8491, 0, 0, 0, 0, 94, 579, 579, 0, -101, + 0, 0, 0, 19, 19, 0, 0, 0, 0, 0, + 0, 0, 9944, 9944, 0, 0, 0, 0, 0, 1221, + 1223, 1224, 0, 0, 0, }; - protected static readonly short [] yyRindex = { 2966, - 0, 0, 7158, 2966, 0, 0, 0, 1560, 0, 0, - 3126, 1305, 0, 0, 0, 0, 0, 3126, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyRindex = { 2890, + 0, 0, 7273, 2890, 0, 0, 0, 1593, 0, 0, + 3117, 991, 0, 0, 0, 0, 0, 3117, 0, 0, + 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1561, 0, 0, 1561, 0, 0, 1560, - 3169, 3009, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1201, 0, 0, 0, 0, 0, 0, 0, 0, - 8864, 0, 1194, 0, 0, 0, 1194, 0, 0, 0, - 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, - 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4683, 0, 0, 0, 0, - 0, 0, 269, 4620, 3896, 0, 0, 4461, 0, 0, + 0, 0, 0, 0, 1597, 0, 0, 1597, 0, 0, + 1593, 3180, 2959, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1231, 0, 0, 0, 0, 0, 0, 0, + 0,12176, 0, 1225, 0, 0, 0, 1225, 0, 0, + 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, + 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4726, 0, 0, 0, + 0, 0, 0, 166, 4663, 3939, 0, 0, 4504, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4776, 4880, - 5188, 5392, 5732, 662, 6004, 6140, -173, 6344, 6468, 2681, - 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4819, + 4923, 5231, 5435, 5775, 5979, 6115, 6251, 6387, 6523, 1053, + 1538, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 236, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 777, 777, 3212, 0, - 604, 0, 1196, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 846, 846, 3227, + 0, 541, 1226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1561, 41, 0, 0, 0, 0, 0, - 0, 0, 3255, 370, 3298, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1597, 218, 0, 0, 0, 0, + 0, 0, 0, 3274, 246, 3341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3507, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1203, 0, 0, 0, 0, - 0, 3507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2209, 0, 2719, - 223, 2339, 0, 0, 0, 2469, 2339, 0, 0, 0, - 0, 0, 1201, 0, 0, 0, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1236, 0, 0, 0, + 0, 0, 3550, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2270, 0, + 1607, 118, 2400, 0, 0, 0, 2547, 2400, 0, 0, + 0, 0, 0, 1231, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1197, 2573, 0, 0, 1194, 0, 3507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -272, 0, 0, + 0, 0, 1233, 1284, 0, 0, 1225, 0, 3550, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1393, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 47, 0, 0, 0, 0, 0, 0, 0, 3341, - 1646, 0, 0, 0, 0, 2063, 1561, 1561, 0, -147, - 0, 7646, 1561, 1574, 0, 0, 53, 0, 0, 0, + 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, + 3384, 2714, 0, 0, 0, 0, 2117, 1597, 1597, 0, + -199, 0, 8056, 1597, 1608, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 403,11442, 0, 0, 0, 3507, - 0, 0, 0, 0, 0, 0, 0, 0,11831, 0, - 0, 0, 0, 0, 0, 1199, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 553, 750, 0, 0, 1208, - 0, 0, 0, 0, 0, 160, 0, 0, 3984, 1207, - 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1770, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284,11589, 0, 0, 0, + 3550, 0, 0, 0, 0, 0, 0, 0, 0,11978, + 0, 0, 0, 0, 0, 0, 1234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 862, 957, 0, 0, + 1241, 0, 0, 0, 0, 0, 99, 0, 0, 4027, + 1239, 0, 0, 0, 263, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1821, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1197, 0, 0, - 6527, 0, 204, 0, 0, 0, 0, 0, 0, 8847, - 0, 0, 0, 0, 0, 0, 86, 529, 0, 0, - 0, 1209, 0, 0, 0, 0, 0, 0, 0, 3507, - 0, 3507, 0, 4143, 0, 0, 0, 0, 56, 0, - 0, 0, 0, -267, 0, 0, 0, 4948, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1233, 0, + 0, 6642, 0, 115, 0, 0, 0, 0, 0, 0, + 8962, 0, 0, 0, 0, 0, 0, -127, 655, 0, + 0, 0, 1240, 0, 0, 0, 0, 0, 0, 0, + 3550, 0, 3550, 0, 4186, 0, 0, 0, 0, 181, + 0, 0, 0, 0, -28, 0, 0, 0, 4991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5052, 5120, 5256, 5324, 5460, 5528, - 5596, 5664, 5800, 5868, 5936, 6072, 6208, 6276, 6400, 0, - 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3787, 0, 0, 2063, 0, 0, 0, - 0, 1166, 0, 0, 0,12083, 0, 0, 761, 0, - 0, 0, 0, 0, 0, 654, 620, 0, 0, 1215, - 0, 0, 0, 0, 1223, 0, 0, 0, 0, 0, - 0,11021, 0, 0, 0, 763, 0, 0, 0,12100, - 0, 0, 807, 808, 812, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1216, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1225, 0, 0, 0, 3573, - 0, 0, 211, 0, 153, 3666, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1226, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 288, 651, 0, 0, - 0, 0, 0, 1219, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8847, + 0, 0, 0, 0, 0, 5095, 5163, 5299, 5367, 5503, + 5571, 5639, 5707, 5843, 5911, 6047, 6183, 6319, 6455, 6579, + 0, 0, 700, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3830, 0, 0, 2117, 0, 0, + 0, 0, 1195, 0, 0, 0,12230, 0, 0, 707, + 0, 0, 0, 0, 0, 0, 678, 698, 0, 0, + 1244, 0, 0, 0, 0, 1248, 0, 0, 0, 0, + 0, 0,11168, 0, 0, 0, 721, 0, 0, 0, +12247, 0, 0, 736, 742, 751, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1242, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1249, 0, 0, 0, + 3616, 0, 0, 116, 0, -74, 3709, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1251, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 144, 0, 0, + 0, 0, 0, 1250, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 8962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 239, 0, 0, 0, 1220, 0, 0, - 0, 0, 0, 0, 275, 0, 421, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, - 0, 0,12100, 7941, 0, 1227, 0, 675, 0, 0, - 0, 0, 1228, 0, 1180, 1182, 0, 0, 0, 0, - 0, 1229,12154, 0, 0, 0,11907, 0, 0, 0, - 815, 0, 0, 0, 0, 0, 1937, 0, 0, 0, + 0, 190, 0, 0, 0, 1245, 0, 0, 0, 0, + 0, 0, 464, 0, 452, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, +12247, 8213, 0, 1246, 0, 712, 0, 0, 0, 0, + 1253, 0, 1206, 1227, 0, 0, 0, 0, 0, 1267, +12301, 0, 0, 0,12054, 0, 0, 0, 780, 0, + 0, 0, 0, 0, 0, 1988, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3825, 0, 4302, 1231, 0, 0, 0, 1236, 0, - 0, 0, 0, 304, 0, 0, 0, 0, 815, 0, + 3868, 0, 4345, 1258, 0, 0, 0, 1255, 0, 0, + 0, 0, 343, 0, 0, 0, 0, 780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1233, 0, 0, 0, 0, 0, + 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 819, 0, 0, 0, 0, 0, + 0, 0, 0, 787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1234, 0, 0, 0, 0, 0, 824, 831, - 0, 0, 0, 0, 0, 0, 0, 1239, 737, 1237, + 0, 1270, 0, 0, 0, 0, 0, 794, 798, 0, + 0, 0, 0, 0, 0, 0, 1257, 700, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3984, 0, 0, 0, 0, 0, 1235, 0, 0, - 304, 0, 0, 773, 0, 1239, 0, 0, 0, 8847, - 0, 582, 592, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 256, 0, 1215, 9041, 0, 0, 0, 0, - 0,12196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 633, 0, 669, 0, 0, 0, 0, - 1246, 0, 1220, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1251, 0, 7315, 0, 0, 0, 0, - 0, 0, 8847, 0, 0, 0, 0, 0, 0, 306, - 459, 0, 0, 0, 0, 0, 0, 0,12272,11831, - 0, 122, 122, 122, 0, 0, 0, 0, 0, 0, + 0, 4027, 0, 0, 0, 0, 0, 1274, 0, 0, + 343, 0, 0, 825, 0, 1257, 0, 0, 0, 8962, + 0, 631, 645, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 123, 0, 1244, 9156, 0, 0, 0, 0, + 0,12343, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 719, 0, 730, 0, 0, 0, 0, + 1277, 0, 1245, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1282, 0, 7430, 0, 0, 0, 0, + 0, 0, 8962, 0, 0, 0, 0, 0, 0, 566, + 525, 0, 0, 0, 0, 0, 0, 0,12419,11978, + 0, 113, 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,12315, 0, 244, 0, 1253, 1253, - 1253, 0, 0, 0, 0, 0, 1249, 0, 0, -213, - 0, 0, 0, 0, 0, 0, 0, 0,12358, 0, - 0, 0, 0, 1256, 0, 0, 0, 183, 0, 0, - 0, 0, 549, 0, 0, 0, 0, 0, 0, 1255, - 0, 1257, 0, 0, 0, 3052, 1254, 539, 0, 285, + 0, 0, 0, 0,12462, 0, 59, 0, 1294, 1294, + 1294, 0, 0, 0, 0, 0, 1299, 0, 0, -172, + 0, 0, 0, 0, 0, 0, 0, 0,12505, 0, + 0, 0, 0, 1304, 0, 0, 0, 122, 0, 0, + 0, 0, 581, 0, 0, 0, 0, 0, 0, 1303, + 0, 1308, 0, 0, 0, 3028, 1301, 560, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2877, 0, 0, 0, 9195, 9393, - 0, 0, 0, 526, 0, 0, 0, 0, 0, 0, - 0, 0, 440, 0, 0,11613, 0, 0, 9294, 0, + 0, 0, 0, 0, 2827, 0, 0, 0, 9310, 9508, + 0, 0, 0, 628, 0, 0, 0, 0, 0, 0, + 0, 0, 366, 0, 0,11760, 0, 0, 9409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,11681, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9487, 0, 9195, 0, 0, 0, 526, 0, - 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, - 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 987, 426, 0, 9529, 0, 0, 0, - 4617, 0, 2877, 0, 0, 0, 2877, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 568, - 0, 1262, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2877, 0, 721, 0, 605, 0, 0, 0, 0, - 0, 0, 0,11831, 828, 0, 0, 0, 0, 0, - 1258, 0, 782, 0, 0, 0, 0, 0, 0, 0, - 833, 0, 0, 0, 0, 0, 0, 0, 0, 1259, - 0,11831,11831, 0,11863, 0, 0, 0, 0, 0, - 0, 1261,12582, 0, 1263,11831,11157, 1268,11831, 0, - 0, 0, 0, 0, 0, 1269, 0, 0, 0,12552, - 0, 0, 0,11831, 0, 0, 0, 1274, 0, 0, - 188, 0,12476,12514, 0, 0, 0, 1275, 0, 0, - 0, 0, 0, 0, 1276, 0, 0,11831, 0, 576, - 0, 836, 0, 0, 0, 0, 0, 795, 0,12400, -12438, 0, 0, 0, 0, 0, 0, 0, 0, 1289, - 0, 1369, 0, 0, 0, 837, 0, 0, 0, 0, + 0,11828, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9602, 0, 9310, 0, 0, 0, 628, 0, + 0, 0, 0, 284, 0, 0, 0, 0, 0, 0, + 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4660, 324, 0, 9644, 0, 0, 0, + 9714, 0, 2827, 0, 0, 0, 2827, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, + 0, 1322, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2827, 0, 760, 0, 649, 0, 0, 0, 0, + 0, 0, 0,11978, 797, 0, 0, 0, 0, 0, + 1315, 0, 772, 0, 0, 0, 0, 0, 0, 0, + 800, 0, 0, 0, 0, 0, 0, 0, 0, 1314, + 0,11978,11978, 0,12010, 0, 0, 0, 0, 0, + 0, 1317, 3070, 0, 1319,11978,11304, 1320,11978, 0, + 0, 0, 0, 0, 0, 1323, 0, 0, 0,12623, + 0, 0, 0,11978, 0, 0, 0, 1325, 0, 0, + 128, 0,12547,12585, 0, 0, 0, 1327, 0, 0, + 0, 0, 0, 0, 1329, 0, 0,11978, 0, 597, + 0, 808, 0, 0, 0, 0, 0, 840, 0, 411, + 699, 0, 0, 0, 0, 0, 0, 0, 0, 1383, + 0, 1443, 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,12552, 9035,11329, 0, 586, + 0, 0, 0, 0, 0,12623, 9676,11476, 0, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1207, 1207, 0, 0, 0, 0, 0, 0, + 0, 0, 1239, 1239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; protected static readonly short [] yyGindex = { 0, - 0, 1583, 0, 0, 0, 3, -9, -175, -48, 1605, - 0, 1622, 1652, 497, 0, 0, 9, 0, 0, 0, - 0, 0, -810, -690, -218, -467, 0, 0, 0, 0, - 0, -186, 0, 0, 0, 722, 0, 827, 0, 0, - 0, 0, 570, 571, -17, -221, 0, -62, 0, 423, - 0, 450, -609, -580, -552, -500, -492, -489, -480, -462, - 0,-1145, 0, 5, 0, 121, 0,-1080, 0, 0, - 0, -70, 245, 0, 0, 0, 283,-1038, 0, -270, - -298, 1000, 0, 0, 0, -884, 231, 0, 0, -499, - 0, 0, 299, 0, 0, 273, 0, 0, 308, 0, - -484, -934, 0, 0, 0, 0, 0, 402, -13, 0, - 0, 825, 829, 830, 991, -526, 0, 0, -313, 832, - 394, 0, -805, 0, 0, 0, 0, 0, 0, 0, - 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, - 445, 0, 0, 0, 0, -287, 380, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 462, 0, -505, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, - 0, 298, 0, 0, 307, 313, 219, 0, 0, 0, - 0, 0, 0, 0, 0, 519, 0, 0, 0, 0, - -41, 0, -12, -69, 0, 0, 374, 0, 430, 0, - 887, 0, 1183, -290, -274, -14, 733, 0, 531, 0, - -37, 4, 0, 0, 1277, 0, 0, 0, 0, 0, + 0, 1657, 0, 0, 0, 1, -9, -176, -42, 1658, + 0, 1697, 1706, 624, 0, 0, -3, 0, 0, 0, + 0, 0, 0, -850, -694, -210, -349, 0, 0, 0, + 0, 0, -191, 0, 0, 0, 771, 0, 882, 0, + 0, 0, 0, 627, 629, -17, -234, 0, -62, 0, + 473, 0, 500, -858, -595, -569, -567, -544, -504, -491, + -486, 0,-1160, 0, 10, 0, 114, 0,-1083, 0, + 0, 0, 145, 295, 0, 0, 0, 333,-1055, 0, + -271, -298, 1046, 0, 0, 0, -882, 281, 0, 0, + -500, 0, 0, 350, 0, 0, 325, 0, 0, 358, + 0, -516, -867, 0, 0, 0, 0, 0, 447, -13, + 0, 0, 879, 883, 888, 1054, -528, 0, 0, -275, + 898, 443, 0, -838, 0, 0, 0, 0, 0, 0, + 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, + 0, 501, 0, 0, 0, 0, -239, 437, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 519, 0, -505, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, + 0, 0, 355, 0, 0, 360, 359, 278, 0, 0, + 0, 0, 0, 0, 0, 0, 580, 0, 0, 0, + 0, -52, 0, -12, -189, 0, 0, 424, 0, 481, + 0, 936, 0, 1237, -290, -267, -63, 812, 0, 586, + 0, -30, 11, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -262, 0, 1325, 0, 0, -741, 0, 0, 0, - 835, 0, -293, -125, 1001, 918, 0, 915, 0, 1133, - 1355, 1040, 0, 0, 731, 1654, 0, 0, 0, 0, - 1011, 0, 0, 0, 0, 0, -575, 1395, 0, 0, - 0, 0, 0, 1136, 506, 774, 661, 820, 1332, 1334, - 1335, 1333, 1336, 0, 1347, 0, 0, 0, 952, 1204, - -735, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -288, 0, 0, 0, 0, -450, 0, 590, - 0, 501, 0, 579, 0, 0, 0, 649, -530, -15, - -309, -5, 0, 1601, 0, 90, 0, 94, 98, 101, - 106, 111, 136, 137, 143, 146, 150, 0, -671, 0, - -16, 0, 0, 783, 0, 706, 0, 0, 0, 708, - -212, 767, -861, 0, 845, -453, 0, 0, 0, 0, - 0, 0, 748, 0, 0, 749, 0, 0, 0, 0, + 0, 0, -261, 0, 587, 0, 0, 8, 0, 0, + 0, 894, 0, -296, -125, 1038, 968, 0, 973, 0, + 1181, 1404, 1102, 0, 0, 781, 1716, 0, 0, 0, + 0, 1073, 0, 0, 0, 0, 0, -685, 1455, 0, + 0, 0, 0, 0, 1118, 382, 818, 785, 817, 1392, + 1396, 1398, 1405, 1407, 0, 1440, 0, 0, 0, 1079, + 1296, -730, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -299, 0, 0, 0, 0, -447, 0, + 684, 0, 596, 0, 679, 0, 0, 0, 744, -529, + -16, -315, -5, 0, 1696, 0, 66, 0, 68, 101, + 132, 135, 143, 147, 156, 162, 163, 176, 0, -672, + 0, -21, 0, 0, 880, 0, 802, 0, 0, 0, + 786, -241, 850, -844, 0, 902, -453, 0, 0, 0, + 0, 0, 0, 796, 0, 0, 791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 677, 0, 0, 0, 0, 0, 0, 0, 0, -23, - 0, 1294, 0, 0, 0, 924, 0, 0, 0, 0, - 0, 0, -168, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1398, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, - -1, 997, 0, 0, 0, 1002, + 0, 728, 0, 0, 0, 0, 0, 0, 0, 0, + -29, 0, 1341, 0, 0, 0, 969, 0, 0, 0, + 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1445, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 622, 0, 0, 0, 0, + 0, 0, 0, 0, 723, 0, 0, 0, 0, 0, + 0, -19, 1043, 0, 0, 0, 1047, }; - protected static readonly short [] yyTable = { 109, - 513, 155, 234, 111, 731, 293, 18, 195, 189, 516, - 43, 156, 736, 430, 448, 680, 324, 329, 489, 429, - 115, 258, 775, 509, 323, 328, 472, 556, 193, 335, - 532, 405, 702, 497, 906, 1012, 543, 354, 570, 867, - 345, 868, 260, 783, 252, 230, 886, 788, 468, 1165, - 1166, 538, 6, 309, 785, 303, 1132, 771, 663, 303, - 938, 558, 115, 1015, 571, 310, 115, 312, 806, 317, - 1254, 361, 877, 369, 195, 195, 444, 338, 14, 707, - 801, 1060, 575, 1061, 664, 898, 1261, 772, 900, 20, - 190, 673, 505, 1061, 1005, 195, 1193, 710, 362, 446, - 370, 1043, 1045, 1319, 447, 712, 160, 874, 291, 407, - 161, 410, 739, 348, 162, 481, 665, 163, 559, 865, - 359, 433, 164, 1446, 641, 642, 847, 165, 830, 437, - 438, 986, 16, 848, 633, 412, 349, 802, 333, 109, - 234, 155, 995, 111, 347, 472, 47, 2, 773, 316, - 350, 156, 166, 167, 785, 1126, 446, 866, 47, 168, - 115, 447, 169, 292, 411, 575, 170, 502, 875, 42, - 575, 503, 575, 575, 575, 575, 575, 575, 575, 575, - 575, 575, 575, 197, 447, 473, 291, 195, 195, 1015, - 878, 478, 348, 807, 575, 1360, 575, 477, 575, 482, - 575, 575, 575, 506, 643, 507, 756, 250, 785, 759, - 729, 448, 725, 711, 869, 349, 575, 487, 413, 977, - 666, 713, 439, 414, 291, 415, 575, 575, 740, 350, - 471, 416, 417, 445, 570, 476, 518, 1062, 750, 575, - 15, 292, 1447, 556, 468, 1428, 160, 1062, 258, 195, - 161, 433, 191, 674, 162, 575, 251, 163, 258, 508, - 571, 537, 164, 1044, 1046, 1320, 542, 165, 556, 485, - 47, 488, 1452, 289, 1074, 195, 492, 494, 562, 292, - 334, 290, 571, 433, 1462, 539, 1463, 195, 579, 115, - 519, 688, 166, 167, 195, 527, 345, 529, 530, 168, - 528, 492, 169, 531, 473, 473, 170, 535, 418, 6, - 1, 1057, 540, 545, 546, 613, 614, 938, 115, 1003, - 1361, 555, 757, 291, 635, 760, 1495, 967, 975, 635, - 651, 557, 577, 635, 1085, 386, 195, 1112, 303, 195, - 115, 359, 831, 636, 638, 483, 1424, 794, 635, 471, - 591, 635, 637, 639, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 1192, 648, 571, 291, 881, - 1472, 387, 1215, 195, 195, 635, 689, 654, 894, 345, - 522, 234, 1390, 1141, 1208, 996, 631, 1293, 750, 1348, - 291, 652, 1258, 881, 635, 892, 892, 744, 484, 1492, - 681, 195, 195, 412, 232, 48, 1417, 345, 938, 860, - 981, 345, 2, 345, 345, 345, 345, 1378, 1379, 195, - 1381, 345, 699, 292, 708, 357, 1069, 622, 1070, 622, - 1459, 1400, 1138, 195, 1407, 649, 650, 94, 655, 1143, - 646, 661, 1160, 232, 976, 1001, 1496, 473, 359, 1423, - 635, 388, 389, 497, 667, 359, 355, 359, 1332, 359, - 654, 795, 472, 749, 1168, 684, 697, 758, 1469, 701, - 570, 412, 1310, 1445, 737, 892, 1311, 1050, 3, 4, - 5, 6, 1460, 882, 622, 232, 413, 883, 654, 115, - 727, 414, 591, 415, 734, 232, 571, 678, 433, 416, - 417, 1338, 635, 359, 356, 984, 782, 200, 741, 743, - 790, 883, 792, 751, 793, 347, 736, 198, 761, 232, - 938, 655, 737, 763, 94, 1161, 938, 434, 349, 1470, - 1246, 20, 347, 1284, 748, 195, 357, 555, 357, 965, - 357, 357, 789, 357, 250, 357, 776, 557, 198, 655, - 844, 1333, 960, 873, 413, 201, 115, 195, 678, 414, - 676, 415, 555, 348, 677, 357, 571, 416, 417, 796, - 796, 679, 557, 811, 845, 813, 428, 823, 435, 330, - 348, 115, 916, 737, 725, 330, 349, 357, 434, 357, - 1234, 330, 357, 251, 330, 330, 433, 347, 725, 879, - 350, 846, 246, 349, 891, 891, 247, 991, 330, 775, - 451, 311, 451, 922, 1454, 1455, 809, 350, 922, 1235, - 922, 473, 815, 922, 922, 678, 922, 922, 1291, 516, - 732, 323, 679, 1234, 54, 1086, 732, 323, 862, 435, - 330, 635, 195, 736, 925, 348, 635, 1236, 922, 925, - 635, 925, 313, 725, 925, 925, 248, 925, 925, 352, - 330, 47, 1235, 195, 1294, 635, 471, 451, 349, 94, - 1486, 889, 330, 250, 633, 330, 330, 1292, 258, 925, - 492, 843, 350, 702, 891, 732, 323, 521, 895, 330, - 1236, 1054, 635, 729, 903, 348, 734, 634, 633, 1237, - 522, 727, 47, 922, 245, 352, 250, 1238, 363, 910, - 1239, 635, 969, 1295, 115, 232, 115, 523, 349, 1240, - 911, 634, 251, 1031, 736, 633, 249, 364, 365, 195, - 890, 1217, 1233, 535, 925, 714, 473, 1241, 44, 261, - 232, 473, 1237, 94, 901, 348, 902, 366, 634, 113, - 1238, 1217, 195, 1239, 904, 251, 776, 937, 367, 916, - 115, 908, 1240, 115, 916, 1051, 916, 195, 349, 916, - 916, 195, 916, 916, 780, 1233, 402, 1217, 661, 652, - 1241, 591, 350, 828, 968, 263, 591, 918, 403, 734, - 1105, 113, 226, 1051, 227, 113, 960, 918, 556, 432, - 935, 936, 918, 349, 918, 1315, 661, 918, 918, 348, - 918, 918, 94, 390, 391, 661, 781, 791, 1328, 327, - 327, 1334, 359, 195, 648, 829, 999, 1135, 1002, 316, - 556, 957, 349, 488, 1004, 824, 371, 1346, 360, 564, - 327, 195, 195, 359, 667, 949, 565, 825, 982, 916, - 330, 316, 680, 683, 1084, 985, 1096, 684, 566, 435, - 1013, 398, 556, 1167, 912, 993, 1031, 734, 1097, 912, - 359, 912, 316, 1411, 912, 912, 598, 912, 912, 1035, - 580, 358, 473, 94, 717, 330, 891, 918, 718, 113, - 581, 330, 1191, 615, 616, 396, 397, 330, 1040, 316, - 598, 330, 598, 564, 399, 853, 316, 195, 582, 1016, - 565, 1018, 316, 1020, 330, 657, 400, 569, 583, 317, - 494, 401, 566, 330, 657, 330, 494, 1030, 297, 195, - 448, 823, 327, 327, 335, 1464, 1251, 195, 335, 404, - 330, 114, 267, 114, 330, 330, 330, 434, 114, 1149, - 667, 267, 656, 763, 912, 763, 1037, 763, 1038, 734, - 1039, 656, 492, 752, 330, 752, 1281, 752, 435, 392, - 393, 1483, 330, 1281, 435, 330, 330, 822, 276, 330, - 276, 516, 335, 394, 395, 276, 115, 1501, 1502, 64, - 64, 726, 436, 64, 327, 503, 776, 932, 933, 1077, - 569, 1079, 166, 1080, 166, 569, 166, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 569, 113, 323, - 327, 440, 323, 330, 330, 473, 330, 330, 56, 569, - 226, 569, 327, 569, 1089, 569, 569, 569, 178, 327, - 178, 443, 178, 488, 65, 569, 569, 113, 65, 469, - 569, 569, 619, 620, 621, 622, 470, 1113, 734, 776, - 333, 569, 569, 1117, 1118, 1120, 383, 384, 385, 113, - 1030, 226, 490, 229, 569, 491, 234, 488, 1152, 1125, - 488, 327, 512, 296, 327, 297, 960, 335, 1473, 1474, - 569, 335, 555, 330, 335, 360, 335, 1145, 349, 440, - 234, 335, 557, 1011, 1148, 804, 1087, 115, 1088, 517, - 742, 115, 742, 520, 115, 195, 488, 495, 327, 327, - 409, 549, 409, 495, 555, 891, 891, 1212, 1174, 1080, - 958, 1152, 958, 536, 557, 335, 754, 541, 754, 115, - 575, 409, 409, 115, 518, 518, 327, 327, 345, 349, - 1216, 1232, 345, 576, 330, 345, 555, 345, 635, 635, - 413, 409, 345, 617, 618, 414, 557, 415, 195, 409, - 1216, 1204, 409, 416, 417, 115, 154, 161, 154, 161, - 682, 162, 1212, 162, 1265, 195, 869, 1249, 869, 488, - 67, 662, 67, 184, 1232, 184, 1216, 584, 1289, 1290, - 155, 119, 155, 119, 353, 115, 281, 433, 281, 126, - 288, 126, 288, 1130, 1131, 623, 624, 647, 113, 685, - 687, 1318, 709, 715, 1321, 716, 738, 762, 336, 755, - 1326, 764, 339, 340, 341, 342, 343, 344, 345, 346, - 195, 195, 765, 1286, 1326, 766, 767, 352, 195, 784, - 785, 799, 787, 800, 805, 804, 195, 195, 327, 195, - 810, 1356, 812, 1357, 814, 1306, 820, 832, 833, 851, - 352, 835, 836, 839, 42, 856, 857, 1306, 858, 195, - 327, 859, 195, 352, 863, 113, 864, 197, 352, 880, - 1306, 229, 884, 352, 1335, 352, 352, 352, 352, 885, - 896, 887, 327, 352, 35, 892, 913, 352, 897, 1306, - 113, 352, 905, 923, 1391, 928, 930, 934, 944, 352, - 945, 948, 352, 938, 352, 950, 953, 947, 955, 961, - 973, 1418, 974, 977, 983, 259, 990, 506, 1009, 997, - 1014, 1008, 1024, 1041, 1430, 1432, 1033, 1047, 352, 1075, - 1048, 1056, 1058, 1049, 1078, 734, 1068, 1286, 1091, 1072, - 1083, 1076, 1095, 1099, 1098, 1100, 1101, 488, 1103, 259, - 1106, 1418, 1418, 259, 259, 259, 259, 259, 259, 259, - 259, 1116, 1119, 1121, 1440, 262, 1128, 327, 1133, 286, - 287, 288, 499, 294, 295, 1139, 1141, 1144, 307, 308, - 1151, 1173, 1161, 1176, 352, 313, 449, 315, 327, 319, - 1180, 1178, 1181, 1187, 331, 332, 1182, 734, 1191, 1190, - 1195, 1198, 1199, 1200, 1201, 1207, 1203, 1418, 1296, 450, - 473, 473, 1252, 1247, 1253, 1250, 336, 1255, 368, 1267, - 1343, 1262, 451, 113, 1309, 113, 1288, 453, 1313, 1314, - 1323, 1330, 454, 734, 455, 456, 457, 458, 1324, 1327, - 1340, 1331, 459, 1488, 1488, 544, 460, 1333, 1342, 1345, - 1497, 1497, 1347, 1349, 327, 591, 591, 1351, 461, 1353, - 1354, 462, 1359, 463, 1364, 1367, 1370, 1401, 1374, 113, - 1371, 1372, 113, 1382, 1383, 1415, 1386, 327, 1396, 1403, - 1416, 1412, 1413, 1422, 1425, 1426, 544, 464, 1436, 1439, - 1437, 1450, 327, 1441, 1442, 1444, 327, 1456, 610, 611, - 612, 372, 1461, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 1457, - 1465, 1466, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 1468, 1475, 1460, 1459, 1503, 1481, 1482, 9, - 954, 35, 259, 1314, 1504, 35, 1505, 531, 599, 839, - 489, 31, 259, 946, 806, 490, 35, 259, 446, 313, - 600, 35, 368, 668, 29, 35, 327, 327, 35, 21, - 514, 810, 488, 29, 308, 746, 30, 205, 30, 95, - 35, 35, 779, 635, 756, 35, 35, 847, 747, 757, - 748, 35, 811, 35, 35, 35, 35, 749, 780, 656, - 813, 35, 510, 312, 678, 35, 815, 35, 337, 656, - 330, 635, 231, 53, 122, 526, 104, 35, 284, 35, - 35, 544, 35, 129, 123, 48, 35, 259, 499, 105, - 285, 130, 327, 499, 499, 235, 21, 1123, 1124, 259, - 259, 259, 943, 1025, 259, 259, 35, 1264, 1256, 1458, - 1427, 1467, 35, 35, 1414, 841, 499, 1443, 1409, 1303, - 854, 970, 327, 1316, 966, 971, 972, 1263, 1337, 499, - 499, 1499, 1260, 1491, 499, 1438, 1490, 499, 1196, 499, - 1433, 499, 499, 499, 499, 1431, 1358, 1307, 752, 499, - 786, 1197, 989, 499, 939, 113, 915, 499, 917, 872, - 798, 586, 1059, 850, 299, 499, 870, 547, 499, 625, - 499, 499, 626, 628, 627, 912, 499, 629, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 630, - 1188, 769, 1184, 1268, 499, 499, 1140, 406, 1102, 499, - 499, 1053, 499, 499, 499, 499, 499, 499, 499, 841, - 499, 499, 1071, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 1114, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 698, 1042, 499, 746, - 499, 1107, 499, 1170, 1109, 499, 1175, 745, 24, 645, - 25, 499, 1006, 26, 0, 1266, 0, 0, 27, 0, - 941, 0, 28, 0, 940, 0, 113, 0, 0, 0, - 113, 30, 0, 113, 0, 0, 742, 0, 32, 0, - 0, 259, 0, 33, 0, 0, 0, 34, 0, 0, - 327, 0, 0, 0, 0, 0, 0, 0, 113, 36, - 0, 37, 113, 0, 0, 38, 0, 0, 0, 0, - 0, 0, 0, 39, 40, 0, 0, 41, 0, 0, - 747, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 113, 0, 48, 0, 48, 0, - 48, 0, 48, 327, 0, 48, 291, 48, 48, 0, - 48, 0, 48, 0, 48, 0, 48, 48, 48, 48, - 327, 0, 48, 48, 113, 0, 773, 0, 48, 48, - 48, 48, 48, 0, 0, 48, 48, 48, 0, 48, - 0, 48, 48, 48, 48, 48, 48, 48, 48, 0, - 48, 48, 48, 48, 0, 0, 48, 48, 48, 0, - 48, 321, 0, 0, 0, 48, 48, 0, 48, 48, - 0, 48, 48, 48, 0, 327, 327, 48, 0, 0, - 0, 0, 259, 327, 0, 0, 0, 0, 0, 0, - 0, 327, 327, 0, 327, 0, 0, 48, 0, 48, - 48, 0, 0, 544, 0, 0, 0, 0, 0, 0, - 0, 0, 48, 0, 327, 841, 841, 327, 0, 0, - 0, 0, 0, 841, 841, 841, 841, 841, 0, 841, - 841, 0, 841, 841, 841, 841, 841, 841, 841, 841, - 0, 0, 0, 0, 841, 0, 841, 841, 841, 841, - 841, 841, 330, 48, 841, 0, 0, 0, 841, 841, - 0, 841, 841, 841, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 841, 0, 841, 0, 841, 841, 0, - 0, 841, 0, 841, 841, 841, 841, 841, 841, 841, - 841, 841, 841, 841, 841, 0, 841, 0, 0, 841, - 841, 0, 0, 841, 841, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 841, 841, - 841, 841, 841, 0, 0, 0, 841, 841, 0, 0, - 841, 0, 0, 0, 0, 841, 841, 841, 841, 841, - 0, 0, 0, 841, 0, 841, 0, 0, 0, 0, - 0, 841, 841, 0, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyTable = { 110, + 156, 514, 434, 112, 18, 732, 294, 196, 190, 235, + 517, 157, 737, 431, 473, 44, 193, 430, 490, 681, + 533, 318, 557, 449, 773, 324, 329, 116, 231, 259, + 336, 510, 406, 703, 544, 498, 1012, 905, 261, 1132, + 866, 867, 781, 885, 469, 253, 1165, 1166, 310, 786, + 363, 934, 371, 1060, 708, 1254, 304, 804, 1061, 539, + 304, 362, 14, 370, 445, 1061, 311, 191, 313, 769, + 116, 1261, 664, 1332, 116, 196, 196, 571, 339, 1015, + 260, 674, 161, 897, 162, 899, 1043, 413, 1005, 1045, + 1319, 880, 709, 1193, 48, 785, 196, 413, 665, 712, + 292, 1360, 1446, 20, 290, 348, 48, 95, 559, 411, + 408, 251, 291, 572, 260, 689, 799, 163, 260, 260, + 260, 260, 260, 260, 260, 260, 349, 828, 360, 974, + 666, 677, 434, 473, 503, 678, 864, 522, 504, 16, + 110, 156, 634, 876, 112, 447, 770, 235, 164, 350, + 523, 165, 157, 349, 1160, 293, 348, 43, 6, 166, + 252, 292, 412, 167, 434, 560, 1333, 524, 116, 580, + 414, 506, 168, 800, 865, 415, 350, 416, 169, 170, + 414, 934, 805, 417, 418, 415, 474, 416, 196, 196, + 351, 448, 171, 417, 418, 785, 679, 198, 478, 292, + 690, 1, 447, 984, 349, 440, 1015, 771, 1003, 882, + 726, 730, 1062, 976, 868, 713, 293, 346, 48, 1062, + 449, 1447, 1126, 161, 15, 162, 1361, 350, 233, 192, + 1428, 472, 325, 330, 667, 360, 477, 1161, 557, 446, + 469, 351, 360, 675, 360, 975, 360, 649, 1044, 785, + 196, 1046, 1320, 355, 293, 532, 259, 1452, 163, 536, + 419, 877, 538, 557, 541, 486, 259, 543, 792, 1462, + 429, 1463, 489, 571, 1495, 540, 196, 493, 495, 1074, + 334, 682, 507, 880, 508, 2, 251, 750, 196, 164, + 360, 520, 165, 934, 531, 196, 528, 116, 530, 934, + 166, 529, 493, 2, 167, 474, 474, 260, 934, 572, + 1057, 387, 873, 168, 546, 547, 1069, 260, 1070, 169, + 170, 556, 260, 966, 1459, 1192, 116, 578, 652, 1424, + 1085, 572, 558, 171, 1215, 252, 1390, 196, 509, 304, + 196, 1234, 1112, 448, 1208, 438, 439, 388, 116, 1417, + 472, 592, 636, 638, 640, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 292, 1472, 655, 3, + 4, 5, 6, 874, 196, 196, 1460, 656, 297, 434, + 298, 829, 793, 996, 1234, 95, 685, 632, 235, 1293, + 636, 788, 260, 790, 1496, 791, 1492, 881, 653, 858, + 448, 882, 196, 196, 260, 260, 260, 479, 980, 260, + 260, 737, 482, 391, 392, 6, 572, 1469, 650, 651, + 196, 293, 335, 700, 662, 710, 312, 389, 390, 647, + 636, 1138, 1310, 488, 196, 636, 1311, 750, 1143, 636, + 20, 233, 636, 668, 356, 642, 643, 233, 474, 233, + 473, 655, 519, 353, 636, 498, 1348, 738, 821, 679, + 656, 1338, 233, 1168, 749, 702, 435, 698, 757, 888, + 888, 887, 887, 346, 331, 1050, 48, 434, 1470, 655, + 331, 636, 680, 436, 1378, 1379, 331, 1381, 656, 331, + 331, 728, 357, 592, 563, 735, 483, 116, 1400, 353, + 636, 1407, 733, 331, 778, 738, 571, 780, 733, 741, + 743, 413, 324, 49, 751, 324, 1423, 636, 358, 759, + 679, 842, 636, 748, 761, 644, 636, 435, 324, 1246, + 292, 614, 615, 484, 324, 331, 196, 556, 737, 201, + 1445, 636, 572, 680, 436, 843, 779, 774, 558, 888, + 959, 887, 623, 358, 623, 634, 346, 733, 196, 637, + 639, 452, 556, 452, 116, 292, 738, 915, 636, 726, + 794, 794, 844, 558, 809, 964, 811, 314, 348, 634, + 726, 1454, 1455, 324, 346, 893, 485, 636, 346, 116, + 346, 346, 346, 346, 414, 635, 260, 55, 346, 415, + 878, 416, 251, 826, 1235, 202, 634, 417, 418, 623, + 773, 247, 572, 991, 968, 248, 872, 807, 452, 635, + 1001, 348, 474, 813, 726, 1291, 349, 48, 517, 358, + 1236, 358, 1237, 358, 358, 233, 358, 1486, 358, 860, + 1294, 523, 233, 196, 199, 827, 635, 1235, 263, 350, + 581, 252, 287, 288, 289, 1238, 295, 296, 744, 1086, + 582, 308, 309, 351, 196, 249, 246, 472, 314, 349, + 316, 48, 320, 1236, 1292, 1237, 199, 332, 333, 1054, + 358, 493, 358, 703, 536, 358, 259, 841, 894, 1295, + 250, 863, 350, 730, 48, 1239, 360, 735, 1238, 331, + 715, 369, 728, 649, 662, 262, 351, 48, 1240, 1031, + 349, 331, 48, 1241, 331, 331, 433, 48, 910, 48, + 48, 48, 48, 116, 116, 317, 349, 48, 331, 196, + 889, 48, 662, 350, 474, 1051, 317, 260, 1239, 474, + 95, 662, 900, 48, 901, 264, 48, 351, 48, 350, + 196, 1240, 903, 599, 774, 936, 1241, 349, 435, 907, + 331, 820, 350, 737, 1051, 196, 116, 350, 116, 196, + 616, 617, 48, 1315, 48, 48, 787, 360, 194, 592, + 350, 789, 1141, 653, 592, 917, 1328, 735, 359, 1105, + 912, 1258, 557, 361, 351, 912, 959, 912, 934, 935, + 912, 912, 918, 912, 912, 1346, 317, 918, 403, 918, + 822, 821, 918, 918, 684, 918, 918, 45, 685, 372, + 404, 196, 823, 1096, 557, 999, 1135, 1002, 114, 956, + 668, 489, 95, 1004, 718, 1097, 360, 918, 719, 196, + 196, 1284, 314, 393, 394, 369, 400, 982, 948, 1217, + 1233, 1084, 435, 1031, 985, 681, 557, 395, 396, 1013, + 397, 398, 1167, 914, 993, 317, 735, 360, 914, 1217, + 914, 114, 1411, 914, 914, 114, 914, 914, 583, 986, + 912, 474, 565, 890, 851, 511, 888, 845, 584, 566, + 995, 399, 918, 1233, 846, 1217, 317, 1040, 527, 328, + 328, 567, 401, 251, 921, 364, 196, 902, 1016, 921, + 1018, 921, 1020, 331, 921, 921, 331, 921, 921, 227, + 328, 228, 909, 565, 365, 366, 1030, 317, 196, 227, + 566, 230, 405, 317, 1464, 1251, 196, 668, 449, 921, + 318, 95, 567, 402, 367, 95, 435, 658, 1149, 1011, + 1334, 802, 252, 914, 1191, 368, 658, 298, 735, 48, + 1037, 493, 1038, 268, 1039, 657, 908, 931, 932, 114, + 1483, 908, 268, 908, 657, 436, 908, 908, 414, 908, + 908, 517, 48, 415, 1087, 416, 1088, 1501, 1502, 437, + 36, 417, 418, 116, 921, 48, 774, 967, 441, 1077, + 48, 1079, 764, 1080, 764, 48, 764, 48, 48, 48, + 48, 331, 328, 328, 1281, 48, 753, 331, 753, 48, + 753, 1281, 277, 331, 277, 474, 599, 331, 599, 277, + 227, 48, 1089, 727, 48, 336, 48, 504, 444, 336, + 331, 331, 115, 489, 115, 1117, 1118, 331, 331, 115, + 331, 331, 57, 384, 385, 386, 908, 1113, 735, 774, + 48, 470, 48, 48, 471, 1120, 196, 65, 65, 699, + 1030, 65, 331, 743, 328, 743, 954, 489, 954, 1125, + 489, 66, 235, 336, 1152, 66, 959, 434, 167, 491, + 167, 556, 167, 1035, 755, 334, 755, 1145, 114, 179, + 328, 179, 558, 179, 1148, 155, 235, 155, 492, 742, + 1326, 162, 328, 162, 116, 196, 489, 361, 116, 328, + 163, 116, 163, 556, 1326, 513, 336, 114, 1174, 1080, + 336, 518, 331, 336, 558, 336, 521, 1152, 346, 576, + 336, 1356, 346, 1357, 331, 346, 116, 346, 537, 114, + 116, 865, 346, 865, 542, 556, 1216, 1232, 68, 577, + 68, 328, 550, 185, 328, 185, 558, 156, 196, 156, + 120, 1204, 120, 282, 336, 282, 1216, 620, 621, 622, + 623, 127, 116, 127, 1265, 196, 289, 1249, 289, 489, + 350, 441, 1473, 1474, 887, 887, 519, 519, 328, 328, + 1232, 350, 1216, 636, 636, 663, 1130, 1131, 618, 619, + 585, 337, 116, 624, 625, 340, 341, 342, 343, 344, + 345, 346, 347, 683, 354, 686, 328, 328, 648, 495, + 688, 711, 331, 716, 331, 495, 714, 717, 739, 740, + 196, 196, 755, 1286, 756, 758, 760, 36, 196, 762, + 763, 36, 764, 331, 331, 765, 196, 196, 782, 196, + 783, 785, 36, 797, 798, 1306, 803, 36, 802, 808, + 810, 36, 818, 331, 36, 830, 812, 1306, 831, 196, + 833, 331, 196, 331, 331, 834, 36, 36, 837, 43, + 1306, 36, 36, 849, 1335, 854, 855, 36, 114, 36, + 36, 36, 36, 856, 857, 862, 198, 36, 580, 1306, + 861, 36, 879, 36, 883, 884, 886, 891, 895, 904, + 1391, 896, 912, 36, 496, 36, 36, 410, 36, 410, + 496, 922, 36, 927, 929, 933, 937, 1418, 328, 943, + 947, 944, 1212, 946, 976, 952, 949, 954, 410, 410, + 1430, 1432, 36, 972, 960, 735, 973, 1286, 36, 36, + 328, 981, 983, 990, 507, 114, 997, 489, 410, 1009, + 1014, 1008, 1024, 1075, 1033, 1047, 410, 1418, 1418, 410, + 1041, 1048, 328, 1056, 1440, 1049, 1058, 1068, 1078, 1072, + 114, 580, 1091, 1076, 1083, 1095, 580, 1212, 580, 580, + 580, 580, 580, 580, 580, 580, 580, 580, 580, 1098, + 1099, 1100, 1103, 1289, 1290, 1106, 1101, 735, 1116, 337, + 580, 1121, 580, 1119, 580, 1128, 580, 580, 580, 500, + 474, 474, 1133, 1418, 1139, 1141, 1318, 1144, 1151, 1321, + 1173, 1176, 580, 1180, 1181, 1178, 1187, 1182, 545, 1161, + 1190, 1191, 1195, 735, 1198, 1203, 1250, 1199, 1207, 1247, + 1200, 1201, 1296, 1488, 1488, 1309, 1252, 328, 1267, 373, + 1497, 1497, 1253, 1255, 1262, 592, 592, 1288, 1313, 1314, + 1330, 580, 1323, 1324, 1327, 1340, 1342, 1345, 328, 545, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 1343, 611, 612, 613, 1331, 1347, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, + 545, 545, 1333, 1349, 114, 114, 1351, 1353, 1354, 1359, + 1364, 1367, 1382, 25, 1370, 26, 1371, 1372, 27, 331, + 1209, 1374, 1383, 28, 1386, 331, 1396, 29, 1401, 1403, + 1412, 1415, 1413, 328, 1416, 1422, 31, 1425, 1436, 1426, + 1437, 1439, 1441, 33, 1442, 1444, 1456, 114, 34, 114, + 1210, 1450, 35, 1457, 328, 1461, 1465, 331, 1466, 1475, + 1460, 331, 1468, 1459, 37, 1481, 38, 1482, 1503, 328, + 39, 1211, 9, 328, 1504, 1505, 950, 532, 40, 41, + 837, 32, 42, 490, 600, 321, 356, 942, 491, 805, + 447, 601, 669, 30, 22, 31, 489, 809, 30, 309, + 747, 515, 331, 206, 545, 31, 845, 331, 749, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 779, 757, 748, 96, 758, 331, 810, 750, 780, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 657, 331, 331, 328, 328, 331, 331, 331, 331, 331, + 812, 313, 331, 331, 814, 679, 657, 331, 331, 331, + 331, 331, 331, 331, 331, 500, 354, 331, 338, 123, + 500, 500, 105, 784, 285, 130, 331, 636, 124, 331, + 106, 331, 286, 331, 131, 636, 331, 232, 54, 236, + 21, 1025, 331, 500, 1123, 942, 1124, 1264, 1256, 1458, + 1427, 1467, 839, 500, 1303, 1414, 500, 500, 1409, 1443, + 328, 500, 1316, 969, 500, 1499, 500, 970, 500, 500, + 500, 500, 971, 1263, 852, 1337, 500, 1491, 965, 1260, + 500, 1431, 1438, 1433, 500, 1490, 1358, 871, 1307, 1196, + 328, 938, 500, 752, 914, 500, 1197, 500, 500, 796, + 989, 587, 1059, 500, 916, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 848, 300, 548, 869, + 626, 500, 500, 582, 114, 627, 500, 500, 628, 500, + 500, 500, 500, 500, 500, 500, 629, 500, 500, 630, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 839, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 631, 767, 500, 1184, 500, 1268, 500, + 1188, 1140, 500, 407, 1102, 1071, 1109, 1053, 500, 1107, + 911, 1114, 356, 1042, 1170, 745, 1006, 646, 356, 1175, + 1266, 0, 0, 0, 940, 0, 582, 939, 0, 0, + 0, 582, 0, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 0, 0, 0, 0, 0, 0, + 356, 0, 0, 0, 356, 582, 0, 582, 0, 582, + 0, 582, 582, 582, 0, 114, 0, 0, 0, 114, + 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 0, 0, 0, 0, 203, 356, 0, 114, 0, 0, + 356, 114, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 0, 0, 0, 582, 0, 0, 356, + 0, 0, 0, 356, 356, 0, 356, 356, 356, 0, + 356, 356, 356, 114, 356, 356, 204, 774, 356, 356, + 356, 356, 328, 0, 545, 356, 356, 0, 0, 0, + 356, 356, 356, 356, 356, 356, 356, 356, 0, 328, + 0, 0, 0, 114, 0, 0, 0, 0, 0, 356, + 0, 0, 356, 0, 356, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 356, 205, 206, 207, 208, + 0, 209, 210, 211, 212, 213, 214, 215, 216, 0, + 0, 217, 218, 219, 220, 221, 222, 223, 224, 0, + 0, 0, 0, 0, 328, 328, 0, 0, 0, 0, + 0, 0, 328, 0, 0, 0, 839, 839, 0, 0, + 328, 328, 0, 328, 839, 839, 839, 839, 839, 0, + 839, 839, 0, 839, 839, 839, 839, 839, 839, 839, + 839, 0, 0, 328, 0, 839, 328, 839, 839, 839, + 839, 839, 839, 0, 0, 839, 331, 0, 0, 839, + 839, 0, 839, 839, 839, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 839, 0, 839, 0, 839, 839, + 0, 0, 839, 0, 839, 839, 839, 839, 839, 839, + 839, 839, 839, 839, 839, 839, 0, 839, 0, 0, + 839, 839, 0, 0, 839, 839, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, + 839, 839, 839, 839, 0, 0, 0, 839, 839, 0, + 0, 839, 0, 0, 0, 0, 839, 839, 839, 839, + 839, 0, 0, 0, 839, 0, 839, 0, 0, 0, + 0, 0, 839, 839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 841, 841, 841, 841, - 0, 841, 773, 773, 0, 0, 0, 0, 841, 0, - 773, 773, 773, 773, 773, 0, 773, 773, 733, 773, - 773, 773, 773, 773, 773, 773, 0, 0, 0, 0, - 0, 773, 0, 773, 773, 773, 773, 773, 773, 0, - 0, 773, 0, 0, 0, 773, 773, 0, 773, 773, - 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 773, 0, 773, 0, 773, 773, 0, 0, 773, 0, - 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 0, 773, 0, 0, 773, 773, 0, 0, - 773, 773, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 773, 773, 773, 773, 773, - 0, 0, 0, 773, 773, 0, 0, 773, 0, 0, - 0, 0, 773, 773, 773, 773, 773, 0, 330, 0, - 773, 0, 773, 330, 330, 0, 0, 0, 773, 773, - 0, 0, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, - 0, 0, 0, 773, 773, 773, 773, 0, 773, 330, - 330, 0, 0, 0, 330, 773, 0, 330, 0, 330, - 0, 330, 330, 330, 330, 0, 0, 0, 0, 330, - 0, 0, 0, 330, 0, 0, 0, 330, 0, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 330, 0, - 330, 330, 0, 0, 0, 0, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 0, 0, 0, 0, 330, 330, 0, 0, 0, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, - 330, 330, 0, 0, 330, 330, 330, 330, 330, 0, - 0, 330, 330, 0, 0, 0, 330, 330, 330, 330, - 330, 330, 330, 330, 733, 0, 0, 0, 360, 733, - 733, 0, 0, 0, 0, 330, 0, 0, 330, 0, - 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, - 0, 330, 733, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 733, 733, 0, 0, 0, - 733, 0, 0, 733, 0, 733, 0, 733, 733, 733, - 733, 0, 0, 0, 0, 733, 0, 0, 0, 733, - 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, - 0, 733, 0, 0, 733, 0, 733, 733, 0, 0, - 0, 0, 733, 0, 733, 733, 733, 733, 733, 733, - 733, 733, 733, 733, 733, 0, 0, 0, 0, 0, - 733, 733, 330, 0, 0, 733, 733, 733, 733, 733, - 733, 0, 733, 733, 733, 0, 733, 733, 0, 0, - 733, 733, 733, 733, 323, 0, 0, 733, 733, 323, - 323, 0, 733, 733, 733, 733, 733, 733, 733, 733, + 0, 0, 0, 0, 0, 0, 0, 839, 839, 839, + 839, 0, 839, 774, 774, 0, 0, 0, 0, 839, + 0, 774, 774, 774, 774, 774, 0, 774, 774, 0, + 774, 774, 774, 774, 774, 774, 774, 0, 0, 734, + 0, 0, 774, 0, 774, 774, 774, 774, 774, 774, + 0, 0, 774, 0, 0, 0, 774, 774, 0, 774, + 774, 774, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 774, 0, 774, 0, 774, 774, 0, 0, 774, + 0, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 774, 774, 0, 774, 0, 0, 774, 774, 0, + 0, 774, 774, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 774, 774, 774, 774, + 774, 0, 0, 0, 774, 774, 0, 0, 774, 0, + 0, 0, 0, 774, 774, 774, 774, 774, 0, 0, + 0, 774, 331, 774, 0, 0, 0, 331, 331, 774, + 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, + 331, 0, 0, 0, 774, 774, 774, 774, 0, 774, + 331, 0, 0, 331, 331, 0, 774, 0, 331, 0, + 0, 331, 0, 331, 0, 331, 331, 331, 331, 0, + 0, 0, 0, 331, 0, 0, 0, 331, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 331, + 0, 0, 331, 0, 331, 331, 0, 0, 0, 0, + 331, 0, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 0, 0, 0, 0, 331, 331, + 0, 0, 0, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 0, 331, 331, 0, 0, 331, 331, + 331, 331, 331, 0, 0, 331, 331, 0, 0, 0, + 331, 331, 331, 331, 331, 331, 331, 331, 0, 0, + 0, 0, 0, 0, 0, 734, 0, 0, 0, 331, + 734, 734, 331, 0, 331, 0, 331, 0, 0, 331, + 0, 0, 0, 0, 0, 331, 361, 0, 0, 0, + 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 734, 0, 0, 734, 734, 0, 0, + 0, 734, 0, 0, 734, 0, 734, 0, 734, 734, + 734, 734, 0, 0, 0, 0, 734, 0, 0, 0, + 734, 0, 0, 0, 734, 0, 0, 0, 0, 0, + 0, 0, 734, 0, 0, 734, 0, 734, 734, 0, + 0, 0, 0, 734, 0, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 734, 734, 0, 0, 0, 0, + 0, 734, 734, 0, 0, 0, 734, 734, 734, 734, + 734, 734, 0, 734, 734, 734, 0, 734, 734, 0, + 0, 734, 734, 734, 734, 324, 0, 0, 734, 734, + 324, 324, 0, 734, 734, 734, 734, 734, 734, 734, + 734, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 734, 324, 0, 734, 0, 734, 0, 734, + 0, 0, 734, 324, 0, 0, 324, 324, 734, 0, + 0, 324, 0, 0, 324, 0, 324, 0, 324, 324, + 324, 324, 0, 49, 0, 0, 324, 0, 0, 0, + 324, 0, 0, 0, 324, 0, 0, 0, 0, 0, + 0, 0, 324, 0, 0, 324, 0, 324, 324, 0, + 0, 0, 0, 324, 0, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 0, 0, 0, 0, + 0, 324, 324, 0, 0, 0, 324, 324, 324, 324, + 324, 324, 0, 324, 324, 324, 0, 324, 324, 0, + 0, 324, 324, 324, 324, 0, 0, 0, 324, 324, + 0, 0, 0, 324, 324, 324, 324, 324, 324, 324, + 324, 0, 361, 0, 0, 0, 0, 361, 361, 0, + 0, 0, 324, 0, 0, 324, 0, 324, 0, 324, + 0, 0, 324, 0, 0, 0, 28, 0, 324, 0, + 361, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 361, 0, 0, 361, 361, 0, 0, 0, 361, 0, + 0, 361, 0, 361, 0, 361, 361, 361, 361, 0, + 0, 0, 0, 361, 0, 0, 0, 361, 0, 0, + 0, 361, 0, 0, 0, 0, 0, 0, 0, 361, + 0, 0, 361, 0, 361, 361, 0, 0, 0, 35, + 361, 0, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 0, 0, 0, 0, 0, 361, 361, + 0, 0, 0, 361, 361, 0, 361, 361, 361, 0, + 361, 361, 361, 0, 361, 361, 0, 0, 361, 361, + 361, 361, 0, 0, 0, 361, 361, 0, 0, 0, + 361, 361, 361, 361, 361, 361, 361, 361, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 34, 361, + 0, 0, 361, 0, 361, 0, 0, 0, 0, 0, + 49, 0, 0, 0, 49, 361, 49, 0, 49, 0, + 49, 0, 0, 49, 0, 49, 49, 0, 49, 0, + 49, 0, 49, 0, 49, 49, 49, 49, 0, 0, + 49, 49, 0, 0, 0, 0, 49, 49, 49, 49, + 49, 0, 0, 49, 49, 49, 0, 49, 0, 49, + 49, 49, 49, 49, 49, 49, 49, 28, 49, 49, + 49, 49, 0, 0, 49, 49, 49, 0, 49, 0, + 0, 0, 0, 49, 49, 0, 49, 49, 0, 49, + 49, 49, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 733, 323, 0, 733, 0, 733, 0, 733, 0, - 0, 733, 0, 0, 0, 323, 323, 733, 0, 0, - 323, 0, 0, 323, 0, 323, 0, 323, 323, 323, - 323, 0, 0, 0, 0, 323, 0, 0, 0, 323, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, - 0, 323, 0, 0, 323, 0, 323, 323, 0, 0, - 0, 0, 323, 0, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 0, 0, 0, 0, 0, - 323, 323, 0, 0, 0, 323, 323, 323, 323, 323, - 323, 0, 323, 323, 323, 0, 323, 323, 355, 0, - 323, 323, 323, 323, 360, 0, 0, 323, 323, 360, - 360, 0, 323, 323, 323, 323, 323, 323, 323, 323, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 323, 360, 0, 323, 0, 323, 0, 323, 0, - 0, 323, 0, 0, 0, 360, 360, 323, 0, 0, - 360, 0, 0, 360, 0, 360, 0, 360, 360, 360, - 360, 0, 0, 0, 0, 360, 0, 0, 0, 360, - 0, 0, 0, 360, 0, 0, 0, 0, 0, 0, - 0, 360, 0, 0, 360, 0, 360, 360, 0, 0, - 0, 0, 360, 0, 360, 360, 360, 360, 360, 360, - 360, 360, 360, 360, 360, 0, 0, 0, 330, 0, - 360, 360, 0, 0, 330, 360, 360, 0, 360, 360, - 360, 0, 360, 360, 360, 0, 360, 360, 0, 0, - 360, 360, 360, 360, 0, 0, 0, 360, 360, 0, - 0, 0, 360, 360, 360, 360, 360, 360, 360, 360, - 330, 0, 0, 0, 0, 0, 27, 0, 0, 0, - 0, 360, 0, 0, 360, 0, 360, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 360, 0, 0, + 0, 0, 0, 0, 0, 49, 0, 49, 49, 0, + 0, 0, 28, 28, 0, 0, 0, 28, 0, 0, + 49, 28, 0, 28, 0, 0, 28, 0, 28, 28, + 0, 28, 0, 28, 0, 28, 0, 28, 28, 28, + 28, 0, 0, 28, 28, 0, 33, 0, 0, 28, + 0, 28, 28, 28, 0, 0, 28, 28, 28, 0, + 28, 49, 0, 28, 0, 28, 28, 28, 28, 0, + 0, 0, 28, 28, 28, 0, 35, 28, 28, 28, + 35, 0, 0, 0, 0, 0, 28, 28, 0, 28, + 28, 35, 28, 28, 28, 0, 35, 0, 28, 0, + 35, 0, 0, 35, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 35, 35, 0, 28, 0, + 35, 35, 0, 0, 28, 28, 35, 0, 35, 35, + 35, 35, 0, 28, 0, 0, 35, 0, 0, 0, + 35, 0, 35, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 35, 0, 35, 35, 932, 35, 0, 0, + 34, 35, 0, 0, 0, 34, 0, 0, 0, 34, + 0, 0, 34, 0, 28, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 34, 34, 0, 0, 35, 34, + 34, 0, 0, 0, 0, 34, 0, 34, 34, 34, + 34, 0, 0, 48, 0, 34, 0, 0, 0, 34, + 0, 34, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 34, 0, 0, 34, 0, 34, 0, 0, 28, + 34, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 28, 28, 0, 34, 34, 28, 28, + 48, 0, 48, 0, 28, 0, 28, 28, 28, 28, + 7, 0, 0, 0, 28, 0, 0, 0, 28, 0, + 28, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 28, 0, 0, 28, 0, 28, 48, 0, 0, 28, + 0, 48, 0, 33, 0, 0, 48, 33, 48, 48, + 48, 48, 0, 933, 48, 0, 48, 0, 33, 28, + 48, 0, 0, 33, 0, 28, 28, 33, 0, 0, + 33, 0, 48, 0, 0, 48, 0, 48, 0, 0, + 0, 0, 33, 33, 0, 0, 0, 33, 33, 0, + 0, 0, 0, 33, 0, 33, 33, 33, 33, 0, + 0, 48, 0, 33, 0, 0, 5, 33, 0, 33, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 48, 33, 0, 33, 0, 48, 0, 33, 0, + 48, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 48, 0, 33, 0, + 48, 48, 0, 932, 0, 33, 48, 48, 48, 48, + 48, 48, 0, 0, 0, 0, 48, 0, 48, 0, + 48, 0, 48, 48, 0, 0, 0, 48, 0, 0, + 48, 0, 48, 0, 0, 48, 0, 48, 0, 0, + 0, 48, 48, 48, 0, 0, 0, 48, 48, 0, + 48, 0, 0, 48, 48, 48, 48, 48, 48, 0, + 0, 48, 0, 48, 0, 48, 0, 48, 0, 48, + 48, 0, 0, 0, 48, 0, 0, 48, 0, 48, + 0, 0, 48, 0, 48, 0, 0, 0, 48, 48, + 48, 0, 0, 0, 48, 48, 0, 0, 0, 0, + 48, 0, 48, 48, 48, 48, 0, 0, 48, 0, + 48, 0, 0, 0, 48, 0, 48, 7, 0, 0, + 0, 49, 0, 0, 0, 0, 48, 0, 0, 48, + 0, 48, 49, 0, 0, 48, 0, 49, 0, 0, + 0, 49, 0, 0, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 49, 49, 0, 0, + 933, 49, 49, 0, 48, 0, 0, 49, 0, 49, + 49, 49, 49, 0, 0, 48, 0, 49, 0, 0, + 48, 49, 0, 49, 48, 0, 0, 48, 0, 0, + 0, 0, 0, 49, 0, 0, 49, 0, 49, 48, + 48, 0, 49, 0, 48, 48, 0, 0, 0, 0, + 48, 0, 48, 48, 48, 48, 0, 0, 0, 0, + 48, 0, 49, 0, 48, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 48, 0, 56, 48, + 0, 48, 0, 0, 0, 48, 57, 25, 58, 26, + 0, 0, 27, 59, 0, 60, 61, 28, 62, 63, + 64, 29, 0, 0, 0, 48, 0, 65, 0, 66, + 31, 67, 68, 69, 70, 0, 0, 33, 0, 0, + 0, 71, 34, 0, 72, 73, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 0, 37, 0, + 38, 75, 0, 0, 39, 0, 76, 77, 78, 79, + 80, 81, 40, 41, 82, 83, 42, 84, 0, 85, + 0, 0, 86, 87, 0, 331, 88, 89, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 90, 91, 92, 93, 94, 0, 0, 0, 95, + 0, 0, 0, 96, 0, 0, 0, 0, 97, 98, + 99, 100, 101, 0, 0, 0, 102, 331, 103, 0, + 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 0, 0, 0, 0, 0, 330, 581, 0, 0, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, - 330, 330, 0, 0, 330, 330, 330, 330, 330, 0, - 0, 330, 330, 0, 0, 34, 330, 330, 330, 330, - 330, 330, 330, 330, 355, 0, 0, 0, 0, 0, - 355, 0, 0, 0, 0, 330, 0, 0, 330, 0, - 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 0, 0, 0, 355, 0, 0, 581, - 0, 0, 0, 0, 581, 0, 581, 581, 581, 581, - 581, 581, 581, 581, 581, 581, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 581, 0, - 581, 27, 581, 0, 581, 581, 581, 355, 0, 0, - 0, 0, 355, 0, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 0, 0, 0, 0, 0, - 0, 355, 0, 0, 0, 355, 355, 0, 355, 355, - 355, 0, 355, 355, 355, 0, 355, 355, 0, 0, - 355, 355, 355, 355, 0, 0, 0, 355, 355, 581, - 0, 0, 355, 355, 355, 355, 355, 355, 355, 355, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 0, 355, 27, 27, 355, 0, 355, 27, 0, 0, - 0, 27, 0, 27, 0, 0, 27, 355, 27, 27, - 0, 27, 0, 27, 0, 27, 0, 27, 27, 27, - 27, 0, 0, 27, 27, 0, 0, 0, 5, 27, - 0, 27, 27, 27, 0, 0, 27, 27, 27, 0, - 27, 0, 0, 27, 0, 27, 27, 27, 27, 0, - 0, 0, 27, 27, 27, 0, 0, 27, 27, 27, - 0, 0, 0, 0, 0, 0, 27, 27, 0, 27, - 27, 936, 27, 27, 27, 0, 0, 0, 27, 0, - 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 27, 0, - 0, 0, 34, 0, 27, 27, 34, 0, 0, 34, - 0, 0, 0, 27, 47, 0, 0, 0, 0, 0, - 0, 34, 34, 0, 0, 33, 34, 34, 0, 33, - 0, 0, 34, 0, 34, 34, 34, 34, 0, 0, - 33, 0, 34, 0, 0, 33, 34, 0, 34, 33, - 0, 0, 33, 0, 27, 0, 0, 7, 34, 0, - 34, 34, 0, 34, 33, 33, 0, 34, 27, 33, - 33, 0, 27, 0, 0, 33, 0, 33, 33, 33, - 33, 0, 0, 27, 0, 33, 0, 34, 27, 33, - 0, 33, 27, 0, 34, 27, 0, 0, 0, 0, - 937, 33, 0, 0, 33, 0, 33, 27, 27, 0, - 33, 0, 27, 27, 0, 0, 0, 0, 27, 0, - 27, 27, 27, 27, 0, 0, 0, 0, 27, 0, - 33, 0, 27, 0, 27, 0, 33, 33, 0, 0, - 0, 0, 32, 0, 27, 0, 32, 27, 0, 27, - 0, 0, 0, 27, 0, 0, 0, 32, 0, 0, - 0, 0, 32, 0, 0, 0, 32, 0, 0, 32, - 0, 0, 0, 27, 0, 0, 0, 0, 0, 27, - 27, 32, 32, 0, 0, 5, 32, 32, 0, 47, - 0, 0, 32, 0, 32, 32, 32, 32, 0, 0, - 47, 0, 32, 0, 0, 47, 32, 0, 32, 47, - 0, 0, 47, 0, 0, 0, 0, 0, 32, 0, - 0, 32, 0, 32, 47, 47, 0, 32, 936, 47, - 47, 0, 47, 0, 0, 47, 0, 47, 47, 47, - 47, 0, 0, 47, 0, 47, 0, 32, 47, 47, - 0, 47, 47, 0, 32, 47, 0, 0, 0, 0, - 0, 47, 0, 0, 47, 0, 47, 47, 47, 0, - 47, 47, 47, 47, 0, 47, 0, 0, 47, 0, - 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, - 47, 47, 47, 0, 47, 47, 0, 0, 47, 0, - 0, 0, 0, 0, 47, 0, 0, 47, 0, 47, - 47, 47, 0, 47, 7, 47, 47, 0, 48, 0, - 0, 47, 0, 47, 47, 47, 47, 0, 0, 48, - 0, 47, 0, 47, 48, 47, 0, 47, 48, 0, - 0, 48, 0, 0, 0, 0, 0, 47, 0, 0, - 47, 0, 47, 48, 48, 0, 47, 937, 48, 48, - 0, 47, 0, 0, 48, 0, 48, 48, 48, 48, - 0, 0, 47, 0, 48, 0, 47, 47, 48, 0, - 48, 47, 0, 0, 47, 0, 0, 0, 0, 0, - 48, 0, 0, 48, 0, 48, 47, 47, 0, 48, - 0, 47, 47, 0, 0, 0, 0, 47, 0, 47, - 47, 47, 47, 0, 0, 0, 0, 47, 0, 48, - 0, 47, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 55, 47, 0, 47, 0, - 0, 0, 47, 56, 24, 57, 25, 0, 0, 26, - 58, 0, 59, 60, 27, 61, 62, 63, 28, 0, - 0, 0, 47, 0, 64, 0, 65, 30, 66, 67, - 68, 69, 0, 0, 32, 0, 0, 0, 70, 33, - 0, 71, 72, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 73, 0, 36, 0, 37, 74, 0, - 0, 38, 0, 75, 76, 77, 78, 79, 80, 39, - 40, 81, 82, 41, 83, 0, 84, 0, 0, 85, - 86, 0, 330, 87, 88, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, - 91, 92, 93, 0, 0, 0, 94, 0, 0, 0, - 95, 0, 0, 0, 0, 96, 97, 98, 99, 100, - 0, 0, 0, 101, 330, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, - 0, 0, 0, 0, 330, 0, 105, 106, 107, 108, - 0, 0, 0, 0, 0, 330, 0, 0, 197, 0, - 330, 0, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 0, 0, 0, 0, 330, - 330, 0, 0, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 0, 330, 330, 0, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 0, 501, 0, 0, 330, 0, 330, 501, 0, 330, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 330, 0, 0, 330, 0, 330, 330, 0, 0, 0, - 330, 330, 0, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 501, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 330, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 330, 0, 0, 0, 0, - 0, 330, 0, 202, 501, 0, 0, 0, 0, 501, - 0, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 928, 501, 501, 203, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 0, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 0, - 497, 0, 0, 0, 0, 501, 497, 0, 0, 0, - 0, 0, 0, 0, 501, 204, 205, 206, 207, 0, - 208, 209, 210, 211, 212, 213, 214, 215, 0, 0, - 216, 217, 218, 219, 220, 221, 222, 223, 0, 0, - 0, 0, 497, 0, 0, 928, 0, 0, 0, 0, - 928, 0, 928, 928, 928, 928, 928, 928, 928, 928, - 928, 928, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 387, 0, 0, 928, 0, 928, 387, 928, 0, - 928, 928, 928, 497, 0, 0, 0, 0, 497, 0, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 497, 497, 387, 497, 497, 497, 497, 497, 497, - 497, 0, 497, 497, 0, 497, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 928, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 0, 505, - 0, 0, 0, 0, 497, 505, 0, 497, 0, 0, - 0, 0, 0, 497, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 323, 0, 387, 387, 387, 387, - 0, 387, 0, 387, 387, 0, 387, 387, 387, 387, - 387, 505, 387, 387, 387, 387, 0, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 0, - 0, 0, 0, 323, 0, 387, 0, 0, 387, 0, - 0, 0, 505, 0, 387, 0, 0, 505, 0, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 0, 331, 0, 0, 0, 0, 0, 331, 0, 106, + 107, 108, 109, 0, 0, 0, 0, 0, 331, 0, + 0, 198, 0, 331, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, + 0, 0, 331, 331, 0, 0, 0, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 0, 331, 331, 0, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 0, 502, 0, 0, 331, 0, 331, + 502, 0, 331, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 331, 0, 0, 331, 0, 331, 331, + 0, 0, 0, 331, 331, 0, 0, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 502, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 331, 331, 0, + 0, 0, 0, 0, 0, 331, 0, 0, 331, 0, + 0, 0, 0, 0, 331, 0, 0, 502, 0, 0, + 0, 0, 502, 0, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 924, 502, 502, 0, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 0, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 0, 498, 0, 0, 0, 0, 502, 498, + 0, 0, 0, 0, 0, 0, 0, 502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 505, 0, 505, 505, 505, 505, 505, 505, 505, - 0, 505, 505, 0, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 0, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 505, 505, 0, 330, 561, - 0, 0, 0, 505, 330, 0, 505, 0, 24, 0, - 25, 0, 505, 26, 0, 0, 0, 0, 27, 0, - 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 0, 0, 0, 0, 0, 0, 32, 0, - 330, 0, 0, 33, 0, 0, 0, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, - 0, 0, 0, 39, 40, 0, 0, 41, 0, 0, - 320, 330, 0, 0, 0, 0, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 330, 330, 330, 330, 330, 330, 330, 0, - 330, 330, 0, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 0, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 0, 430, 888, 0, - 0, 353, 330, 430, 0, 330, 0, 24, 0, 25, - 0, 330, 26, 0, 0, 0, 0, 27, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 430, - 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, - 0, 0, 39, 40, 0, 0, 41, 0, 0, 320, - 430, 0, 0, 0, 0, 430, 0, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 430, - 0, 430, 430, 430, 430, 430, 430, 430, 0, 430, - 430, 0, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 0, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 430, 430, 430, 430, 430, - 430, 430, 430, 430, 430, 0, 390, 1034, 0, 0, - 353, 430, 390, 0, 430, 0, 24, 0, 25, 0, - 430, 26, 0, 0, 0, 0, 27, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 0, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 32, 0, 390, 0, - 0, 33, 0, 0, 0, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, - 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, - 0, 39, 40, 0, 0, 41, 0, 0, 320, 390, - 0, 0, 0, 0, 390, 0, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 390, 0, - 390, 390, 390, 390, 390, 390, 390, 0, 390, 0, - 0, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 0, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 390, 390, 390, 0, 536, 0, 351, 0, 353, - 390, 536, 0, 390, 0, 0, 0, 0, 0, 390, + 0, 0, 0, 0, 0, 498, 0, 0, 924, 0, + 0, 0, 0, 924, 0, 924, 924, 924, 924, 924, + 924, 924, 924, 924, 924, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 924, 0, 924, + 388, 924, 0, 924, 924, 924, 498, 0, 0, 0, + 0, 498, 0, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 498, 498, 388, 498, 498, 498, + 498, 498, 498, 498, 0, 498, 498, 0, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 924, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 0, 506, 0, 0, 0, 0, 498, 506, 0, + 498, 0, 0, 0, 0, 0, 498, 0, 0, 0, + 0, 324, 0, 0, 0, 0, 0, 324, 0, 388, + 388, 388, 388, 0, 388, 0, 388, 388, 0, 388, + 388, 388, 388, 388, 506, 388, 388, 388, 388, 0, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 0, 0, 0, 0, 324, 0, 388, 0, + 0, 388, 0, 0, 0, 506, 0, 388, 0, 0, + 506, 0, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 506, 0, 506, 506, 506, 506, + 506, 506, 506, 0, 506, 506, 0, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 0, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 0, 331, 746, 0, 0, 0, 506, 331, 0, 506, + 0, 25, 0, 26, 0, 506, 27, 0, 0, 0, + 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 0, 331, 0, 0, 34, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, + 42, 0, 0, 747, 331, 0, 0, 0, 0, 331, + 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 0, 0, 0, 0, 0, 0, 0, 292, + 0, 0, 0, 331, 0, 331, 331, 331, 331, 331, + 331, 331, 0, 331, 331, 0, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 0, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, + 431, 562, 0, 0, 322, 331, 431, 0, 331, 0, + 25, 0, 26, 0, 331, 27, 0, 0, 0, 0, + 28, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 431, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 351, 0, 0, 0, 536, 351, 0, - 0, 228, 0, 351, 0, 351, 351, 351, 351, 0, - 0, 0, 0, 351, 0, 0, 0, 351, 330, 0, - 0, 351, 0, 0, 330, 0, 0, 0, 736, 351, - 0, 0, 351, 0, 351, 0, 0, 0, 536, 0, - 0, 0, 0, 536, 0, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 0, 0, 351, 0, - 330, 0, 0, 0, 0, 0, 0, 536, 0, 536, - 0, 536, 0, 536, 536, 536, 736, 536, 536, 0, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 0, 0, 0, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 548, 536, 0, 351, 0, 0, 548, 0, 330, - 0, 0, 0, 0, 0, 330, 0, 0, 536, 0, - 0, 330, 330, 330, 330, 330, 330, 736, 330, 0, - 330, 330, 0, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 548, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 0, 0, 0, 0, - 330, 0, 330, 0, 0, 330, 0, 0, 0, 0, - 0, 330, 0, 0, 548, 0, 0, 0, 0, 548, - 0, 548, 548, 548, 548, 548, 548, 548, 548, 548, - 548, 548, 0, 0, 0, 552, 0, 0, 0, 0, - 0, 552, 0, 548, 0, 548, 0, 548, 0, 548, - 548, 548, 0, 548, 548, 0, 0, 548, 548, 548, - 548, 548, 548, 548, 548, 548, 0, 0, 0, 548, - 548, 548, 548, 548, 548, 548, 548, 552, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 548, 0, + 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, + 0, 0, 0, 0, 0, 40, 41, 0, 0, 42, + 0, 0, 321, 431, 0, 0, 0, 0, 431, 0, + 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, + 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 431, 0, 431, 431, 431, 431, 431, 431, + 431, 0, 431, 431, 0, 431, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 0, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 431, 431, 0, 391, + 887, 0, 0, 354, 431, 391, 0, 431, 0, 25, + 0, 26, 0, 431, 27, 0, 0, 0, 0, 28, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, + 0, 391, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 555, 548, 0, 0, 0, 0, 555, - 0, 0, 0, 0, 0, 0, 0, 0, 552, 0, - 0, 0, 0, 552, 0, 552, 552, 552, 552, 552, - 552, 552, 552, 552, 552, 552, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 555, 0, 552, 0, 552, - 0, 552, 0, 552, 552, 552, 0, 552, 552, 0, - 0, 552, 552, 552, 552, 0, 0, 0, 552, 552, - 0, 0, 0, 552, 552, 552, 552, 552, 552, 552, - 552, 0, 0, 0, 0, 0, 555, 0, 0, 0, - 0, 555, 552, 555, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 555, 0, 0, 0, 553, 552, 0, - 0, 0, 0, 553, 0, 555, 0, 555, 0, 555, - 0, 555, 555, 555, 0, 555, 555, 0, 0, 555, - 555, 555, 555, 0, 0, 0, 555, 555, 0, 0, - 0, 555, 555, 555, 555, 555, 555, 555, 555, 553, + 37, 0, 38, 0, 0, 0, 39, 0, 0, 0, + 0, 0, 0, 0, 40, 41, 0, 0, 42, 0, + 0, 321, 391, 0, 0, 0, 0, 391, 0, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 554, 555, 0, 0, 0, - 0, 554, 0, 0, 0, 0, 0, 0, 0, 0, - 553, 0, 0, 0, 0, 553, 0, 553, 553, 553, - 553, 553, 553, 553, 553, 553, 553, 553, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 554, 0, 553, - 0, 553, 0, 553, 0, 553, 553, 553, 0, 553, - 553, 0, 0, 553, 553, 553, 553, 0, 0, 0, - 553, 553, 0, 558, 0, 553, 553, 553, 553, 553, - 553, 553, 553, 0, 0, 0, 0, 0, 554, 0, - 0, 0, 0, 554, 553, 554, 554, 554, 554, 554, + 0, 391, 0, 391, 391, 391, 391, 391, 391, 391, + 0, 391, 0, 0, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 0, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 0, 537, 0, + 353, 0, 354, 391, 537, 0, 391, 0, 0, 0, + 0, 0, 391, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 353, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 353, 0, 0, 0, + 537, 353, 0, 0, 230, 0, 353, 0, 353, 353, + 353, 353, 0, 0, 0, 0, 353, 0, 0, 0, + 353, 331, 0, 0, 353, 0, 0, 331, 0, 0, + 0, 737, 353, 0, 0, 353, 0, 353, 0, 0, + 0, 537, 0, 0, 0, 0, 537, 0, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 0, + 0, 353, 0, 331, 0, 0, 0, 0, 0, 0, + 537, 0, 537, 0, 537, 0, 537, 537, 537, 737, + 537, 537, 0, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 0, 0, 0, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 549, 537, 0, 353, 0, 0, + 549, 0, 331, 0, 0, 0, 0, 0, 331, 0, + 0, 537, 0, 0, 331, 331, 331, 331, 331, 331, + 737, 331, 0, 331, 331, 0, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 549, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, + 0, 0, 0, 331, 0, 331, 0, 0, 331, 0, + 0, 0, 0, 0, 331, 0, 0, 549, 0, 0, + 0, 0, 549, 0, 549, 549, 549, 549, 549, 549, + 549, 549, 549, 549, 549, 0, 0, 0, 553, 0, + 0, 0, 0, 0, 553, 0, 549, 0, 549, 0, + 549, 0, 549, 549, 549, 0, 549, 549, 0, 0, + 549, 549, 549, 549, 549, 549, 549, 549, 549, 0, + 0, 0, 549, 549, 549, 549, 549, 549, 549, 549, + 553, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 549, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 556, 549, 0, 0, + 0, 0, 556, 0, 0, 0, 0, 0, 0, 0, + 0, 553, 0, 0, 0, 0, 553, 0, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 553, 553, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 556, 0, + 553, 0, 553, 0, 553, 0, 553, 553, 553, 0, + 553, 553, 0, 0, 553, 553, 553, 553, 0, 0, + 0, 553, 553, 0, 0, 0, 553, 553, 553, 553, + 553, 553, 553, 553, 0, 0, 0, 0, 0, 556, + 0, 0, 0, 0, 556, 553, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 0, 0, 0, + 554, 553, 0, 0, 0, 0, 554, 0, 556, 0, + 556, 0, 556, 0, 556, 556, 556, 0, 556, 556, + 0, 0, 556, 556, 556, 556, 0, 0, 0, 556, + 556, 0, 0, 0, 556, 556, 556, 556, 556, 556, + 556, 556, 554, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 555, 556, + 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, + 0, 0, 0, 554, 0, 0, 0, 0, 554, 0, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 555, 0, 554, 0, 554, 0, 554, 0, 554, 554, + 554, 0, 554, 554, 0, 0, 554, 554, 554, 554, + 0, 0, 0, 554, 554, 0, 559, 0, 554, 554, 554, 554, 554, 554, 554, 554, 0, 0, 0, 0, - 553, 0, 0, 0, 0, 0, 0, 554, 0, 554, - 0, 554, 0, 554, 554, 554, 0, 554, 554, 0, - 0, 554, 554, 554, 554, 0, 0, 0, 554, 554, - 0, 559, 0, 554, 554, 554, 554, 554, 554, 554, - 554, 0, 0, 0, 0, 0, 558, 0, 0, 0, - 0, 558, 554, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 0, 0, 0, 0, 554, 0, - 0, 0, 0, 0, 0, 558, 0, 558, 0, 558, - 0, 558, 558, 558, 0, 0, 0, 0, 0, 558, - 558, 558, 558, 0, 0, 0, 558, 558, 0, 560, - 0, 558, 558, 558, 558, 558, 558, 558, 558, 0, - 0, 0, 0, 0, 559, 0, 0, 0, 0, 559, - 558, 559, 559, 559, 559, 559, 559, 559, 559, 559, - 559, 559, 0, 0, 0, 0, 558, 0, 0, 0, - 0, 0, 0, 559, 0, 559, 0, 559, 0, 559, - 559, 559, 0, 0, 0, 0, 0, 559, 559, 559, - 559, 0, 0, 0, 559, 559, 0, 561, 0, 559, + 0, 555, 0, 0, 0, 0, 555, 554, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 555, 555, 0, + 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, + 555, 0, 555, 0, 555, 0, 555, 555, 555, 0, + 555, 555, 0, 0, 555, 555, 555, 555, 0, 0, + 0, 555, 555, 0, 560, 0, 555, 555, 555, 555, + 555, 555, 555, 555, 0, 0, 0, 0, 0, 559, + 0, 0, 0, 0, 559, 555, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 0, 0, 0, - 0, 0, 560, 0, 0, 0, 0, 560, 559, 560, - 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, - 0, 0, 0, 0, 559, 0, 0, 0, 0, 0, - 0, 560, 0, 560, 0, 560, 0, 560, 560, 560, - 0, 0, 0, 0, 0, 560, 560, 560, 560, 0, - 0, 0, 560, 560, 0, 562, 0, 560, 560, 560, - 560, 560, 560, 560, 560, 0, 0, 0, 0, 0, - 561, 0, 0, 0, 0, 561, 560, 561, 561, 561, + 0, 555, 0, 0, 0, 0, 0, 0, 559, 0, + 559, 0, 559, 0, 559, 559, 559, 0, 0, 0, + 0, 0, 559, 559, 559, 559, 0, 0, 0, 559, + 559, 0, 561, 0, 559, 559, 559, 559, 559, 559, + 559, 559, 0, 0, 0, 0, 0, 560, 0, 0, + 0, 0, 560, 559, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 560, 560, 0, 0, 0, 0, 559, + 0, 0, 0, 0, 0, 0, 560, 0, 560, 0, + 560, 0, 560, 560, 560, 0, 0, 0, 0, 0, + 560, 560, 560, 560, 0, 0, 0, 560, 560, 0, + 562, 0, 560, 560, 560, 560, 560, 560, 560, 560, + 0, 0, 0, 0, 0, 561, 0, 0, 0, 0, + 561, 560, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 561, 561, 0, 0, 0, 0, 560, 0, 0, + 0, 0, 0, 0, 561, 0, 561, 0, 561, 0, + 561, 561, 561, 0, 0, 0, 0, 0, 561, 561, + 561, 561, 0, 0, 0, 561, 561, 0, 563, 0, 561, 561, 561, 561, 561, 561, 561, 561, 0, 0, - 0, 0, 560, 0, 0, 0, 0, 0, 0, 561, - 0, 561, 0, 561, 0, 561, 561, 561, 0, 0, - 0, 0, 0, 561, 561, 561, 561, 0, 0, 0, - 561, 561, 0, 563, 0, 0, 0, 561, 561, 561, - 561, 561, 561, 0, 0, 0, 0, 0, 562, 0, - 0, 0, 0, 562, 561, 562, 562, 562, 562, 562, + 0, 0, 0, 562, 0, 0, 0, 0, 562, 561, + 562, 562, 562, 562, 562, 562, 562, 562, 562, 562, + 562, 0, 0, 0, 0, 561, 0, 0, 0, 0, + 0, 0, 562, 0, 562, 0, 562, 0, 562, 562, + 562, 0, 0, 0, 0, 0, 562, 562, 562, 562, + 0, 0, 0, 562, 562, 0, 564, 0, 0, 0, 562, 562, 562, 562, 562, 562, 0, 0, 0, 0, - 561, 0, 0, 0, 0, 0, 0, 562, 0, 562, - 0, 562, 0, 562, 562, 562, 0, 0, 0, 0, - 0, 562, 562, 562, 562, 0, 0, 0, 562, 562, - 0, 564, 0, 0, 0, 562, 562, 562, 562, 562, - 562, 0, 0, 0, 0, 0, 563, 0, 0, 0, - 0, 563, 562, 563, 563, 563, 563, 563, 563, 563, - 563, 563, 563, 563, 0, 0, 0, 0, 562, 0, - 0, 0, 0, 0, 0, 563, 0, 563, 0, 563, - 0, 563, 563, 563, 0, 0, 0, 0, 0, 563, - 563, 563, 563, 0, 0, 0, 563, 563, 0, 565, - 0, 0, 0, 563, 563, 563, 563, 563, 563, 0, - 0, 0, 0, 0, 564, 0, 0, 0, 0, 564, - 563, 564, 564, 564, 564, 564, 564, 564, 564, 564, - 564, 564, 0, 0, 0, 0, 563, 0, 0, 0, - 0, 0, 0, 564, 0, 564, 0, 564, 0, 564, - 564, 564, 0, 0, 0, 0, 0, 564, 564, 564, - 564, 0, 0, 0, 564, 564, 0, 566, 0, 0, - 0, 564, 564, 564, 564, 564, 564, 0, 0, 0, - 0, 0, 565, 0, 0, 0, 0, 565, 564, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 0, 0, 0, 0, 564, 0, 0, 0, 0, 0, - 0, 565, 0, 565, 0, 565, 0, 565, 565, 565, - 0, 0, 0, 0, 0, 565, 565, 565, 565, 0, - 0, 0, 565, 565, 0, 567, 0, 0, 0, 565, - 565, 565, 565, 565, 565, 0, 0, 0, 0, 0, - 566, 0, 0, 0, 0, 566, 565, 566, 566, 566, - 566, 566, 566, 566, 566, 566, 566, 566, 0, 0, - 0, 0, 565, 0, 0, 0, 0, 0, 0, 566, - 0, 566, 0, 566, 0, 566, 566, 566, 0, 0, - 0, 0, 0, 0, 0, 566, 566, 0, 0, 0, - 566, 566, 0, 568, 0, 0, 0, 0, 0, 566, - 566, 566, 566, 0, 0, 0, 0, 0, 567, 0, - 0, 0, 0, 567, 566, 567, 567, 567, 567, 567, - 567, 567, 567, 567, 567, 567, 0, 0, 0, 0, - 566, 0, 0, 0, 0, 0, 0, 567, 0, 567, - 0, 567, 0, 567, 567, 567, 0, 0, 0, 0, - 0, 0, 0, 567, 567, 0, 0, 0, 567, 567, - 0, 570, 0, 0, 0, 0, 0, 567, 567, 567, - 567, 0, 0, 0, 0, 0, 568, 0, 0, 0, - 0, 568, 567, 568, 568, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 0, 0, 0, 0, 567, 0, - 0, 0, 0, 0, 0, 568, 0, 568, 0, 568, - 0, 568, 568, 568, 0, 0, 0, 0, 0, 0, - 0, 568, 568, 0, 0, 0, 568, 568, 0, 571, - 0, 0, 0, 0, 0, 568, 568, 568, 568, 0, - 0, 0, 0, 0, 570, 0, 0, 0, 0, 570, - 568, 570, 570, 570, 570, 570, 570, 570, 570, 570, - 570, 570, 0, 0, 0, 0, 568, 0, 0, 0, - 0, 0, 0, 570, 0, 570, 0, 570, 0, 570, - 570, 570, 0, 0, 0, 0, 0, 0, 0, 570, - 570, 0, 0, 0, 570, 570, 0, 572, 0, 0, - 0, 0, 0, 0, 0, 570, 570, 0, 0, 0, - 0, 0, 571, 0, 0, 0, 0, 571, 570, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 0, 0, 0, 0, 570, 0, 0, 0, 0, 0, - 0, 571, 0, 571, 0, 571, 0, 571, 571, 571, - 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, - 0, 0, 571, 571, 0, 573, 0, 0, 0, 0, - 0, 0, 0, 571, 571, 0, 0, 0, 0, 0, - 572, 0, 0, 0, 0, 572, 571, 572, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 0, 0, - 0, 0, 571, 0, 0, 0, 0, 0, 0, 572, - 0, 572, 0, 572, 0, 572, 572, 572, 0, 0, - 0, 0, 0, 0, 0, 0, 572, 0, 0, 0, - 572, 572, 0, 574, 0, 0, 0, 0, 0, 0, - 0, 572, 572, 0, 0, 0, 0, 0, 573, 0, - 0, 0, 0, 573, 572, 573, 573, 573, 573, 573, - 573, 573, 573, 573, 573, 573, 0, 0, 0, 0, - 572, 0, 0, 0, 0, 0, 0, 573, 0, 573, - 0, 573, 0, 573, 573, 573, 0, 0, 0, 0, - 0, 0, 0, 0, 573, 0, 0, 0, 0, 573, - 0, 576, 0, 0, 0, 0, 0, 0, 0, 573, - 573, 0, 0, 0, 0, 0, 574, 0, 0, 0, - 0, 574, 573, 574, 574, 574, 574, 574, 574, 574, - 574, 574, 574, 574, 0, 0, 0, 0, 573, 0, - 0, 0, 0, 0, 0, 574, 0, 574, 0, 574, - 0, 574, 574, 574, 0, 0, 0, 0, 0, 0, - 0, 0, 574, 0, 0, 0, 0, 574, 0, 577, - 0, 0, 0, 0, 0, 0, 0, 574, 574, 0, - 0, 0, 0, 0, 576, 0, 0, 0, 0, 576, - 574, 576, 576, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 0, 0, 0, 0, 574, 0, 0, 0, - 0, 0, 0, 576, 0, 576, 0, 576, 0, 576, - 576, 576, 0, 0, 0, 578, 0, 0, 0, 0, + 0, 563, 0, 0, 0, 0, 563, 562, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 563, 563, 0, + 0, 0, 0, 562, 0, 0, 0, 0, 0, 0, + 563, 0, 563, 0, 563, 0, 563, 563, 563, 0, + 0, 0, 0, 0, 563, 563, 563, 563, 0, 0, + 0, 563, 563, 0, 565, 0, 0, 0, 563, 563, + 563, 563, 563, 563, 0, 0, 0, 0, 0, 564, + 0, 0, 0, 0, 564, 563, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 564, 564, 0, 0, 0, + 0, 563, 0, 0, 0, 0, 0, 0, 564, 0, + 564, 0, 564, 0, 564, 564, 564, 0, 0, 0, + 0, 0, 564, 564, 564, 564, 0, 0, 0, 564, + 564, 0, 566, 0, 0, 0, 564, 564, 564, 564, + 564, 564, 0, 0, 0, 0, 0, 565, 0, 0, + 0, 0, 565, 564, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 0, 0, 0, 0, 564, + 0, 0, 0, 0, 0, 0, 565, 0, 565, 0, + 565, 0, 565, 565, 565, 0, 0, 0, 0, 0, + 565, 565, 565, 565, 0, 0, 0, 565, 565, 0, + 567, 0, 0, 0, 565, 565, 565, 565, 565, 565, + 0, 0, 0, 0, 0, 566, 0, 0, 0, 0, + 566, 565, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 566, 566, 0, 0, 0, 0, 565, 0, 0, + 0, 0, 0, 0, 566, 0, 566, 0, 566, 0, + 566, 566, 566, 0, 0, 0, 0, 0, 566, 566, + 566, 566, 0, 0, 0, 566, 566, 0, 568, 0, + 0, 0, 566, 566, 566, 566, 566, 566, 0, 0, + 0, 0, 0, 567, 0, 0, 0, 0, 567, 566, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 0, 0, 0, 0, 566, 0, 0, 0, 0, + 0, 0, 567, 0, 567, 0, 567, 0, 567, 567, + 567, 0, 0, 0, 0, 0, 0, 0, 567, 567, + 0, 0, 0, 567, 567, 0, 569, 0, 0, 0, + 0, 0, 567, 567, 567, 567, 0, 0, 0, 0, + 0, 568, 0, 0, 0, 0, 568, 567, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 568, 568, 0, + 0, 0, 0, 567, 0, 0, 0, 0, 0, 0, + 568, 0, 568, 0, 568, 0, 568, 568, 568, 0, + 0, 0, 0, 0, 0, 0, 568, 568, 0, 0, + 0, 568, 568, 0, 570, 0, 0, 0, 0, 0, + 568, 568, 568, 568, 0, 0, 0, 0, 0, 569, + 0, 0, 0, 0, 569, 568, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 0, 0, 0, + 0, 568, 0, 0, 0, 0, 0, 0, 569, 0, + 569, 0, 569, 0, 569, 569, 569, 0, 0, 0, + 0, 0, 0, 0, 569, 569, 0, 0, 0, 569, + 569, 0, 571, 0, 0, 0, 0, 0, 569, 569, + 569, 569, 0, 0, 0, 0, 0, 570, 0, 0, + 0, 0, 570, 569, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 0, 0, 0, 0, 569, + 0, 0, 0, 0, 0, 0, 570, 0, 570, 0, + 570, 0, 570, 570, 570, 0, 0, 0, 0, 0, + 0, 0, 570, 570, 0, 0, 0, 570, 570, 0, + 572, 0, 0, 0, 0, 0, 0, 0, 570, 570, + 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, + 571, 570, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 0, 0, 0, 0, 570, 0, 0, + 0, 0, 0, 0, 571, 0, 571, 0, 571, 0, + 571, 571, 571, 0, 0, 0, 0, 0, 0, 0, + 571, 571, 0, 0, 0, 571, 571, 0, 573, 0, + 0, 0, 0, 0, 0, 0, 571, 571, 0, 0, + 0, 0, 0, 572, 0, 0, 0, 0, 572, 571, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, + 572, 0, 0, 0, 0, 571, 0, 0, 0, 0, + 0, 0, 572, 0, 572, 0, 572, 0, 572, 572, + 572, 0, 0, 0, 0, 0, 0, 0, 0, 572, + 0, 0, 0, 572, 572, 0, 574, 0, 0, 0, + 0, 0, 0, 0, 572, 572, 0, 0, 0, 0, + 0, 573, 0, 0, 0, 0, 573, 572, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 0, + 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, + 573, 0, 573, 0, 573, 0, 573, 573, 573, 0, + 0, 0, 0, 0, 0, 0, 0, 573, 0, 0, + 0, 573, 573, 0, 575, 0, 0, 0, 0, 0, + 0, 0, 573, 573, 0, 0, 0, 0, 0, 574, + 0, 0, 0, 0, 574, 573, 574, 574, 574, 574, + 574, 574, 574, 574, 574, 574, 574, 0, 0, 0, + 0, 573, 0, 0, 0, 0, 0, 0, 574, 0, + 574, 0, 574, 0, 574, 574, 574, 0, 0, 0, + 0, 0, 0, 0, 0, 574, 0, 0, 0, 0, + 574, 0, 576, 0, 0, 0, 0, 0, 0, 0, + 574, 574, 0, 0, 0, 0, 0, 575, 0, 0, + 0, 0, 575, 574, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 575, 575, 0, 0, 0, 0, 574, + 0, 0, 0, 0, 0, 0, 575, 0, 575, 0, + 575, 0, 575, 575, 575, 0, 0, 0, 0, 0, + 0, 0, 0, 575, 0, 0, 0, 0, 575, 0, + 577, 0, 0, 0, 0, 0, 0, 0, 575, 575, 0, 0, 0, 0, 0, 576, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 576, 576, 0, 0, 0, - 0, 0, 577, 0, 0, 0, 0, 577, 576, 577, + 576, 575, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 576, 576, 0, 0, 0, 0, 575, 0, 0, + 0, 0, 0, 0, 576, 0, 576, 0, 576, 0, + 576, 576, 576, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 576, 0, 578, 0, + 0, 0, 0, 0, 0, 0, 576, 576, 0, 0, + 0, 0, 0, 577, 0, 0, 0, 0, 577, 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 0, 0, 0, 0, 576, 0, 0, 0, 0, 0, - 0, 577, 0, 577, 0, 577, 0, 577, 577, 577, - 0, 0, 0, 579, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 577, 0, 0, 0, 0, 578, 0, - 0, 0, 0, 578, 577, 578, 578, 578, 578, 578, - 578, 578, 578, 578, 578, 578, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 578, 0, 578, - 0, 578, 577, 578, 578, 578, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 330, 578, - 0, 0, 736, 0, 0, 0, 0, 0, 0, 0, - 578, 0, 0, 0, 0, 0, 579, 0, 0, 0, - 0, 579, 578, 579, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 330, 0, 0, 0, 578, 0, - 0, 0, 0, 0, 0, 579, 0, 579, 0, 579, - 736, 579, 579, 579, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 579, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 330, - 0, 0, 0, 0, 0, 330, 579, 330, 0, 330, - 0, 736, 330, 0, 330, 330, 0, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 0, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 0, 0, 55, 0, 330, 0, 330, 0, 0, 330, - 56, 24, 57, 25, 0, 330, 26, 58, 0, 59, - 60, 27, 61, 62, 63, 28, 0, 0, 0, 0, - 0, 64, 0, 65, 30, 66, 67, 68, 69, 0, - 0, 32, 0, 0, 0, 70, 33, 0, 71, 72, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 0, 36, 0, 37, 74, 0, 0, 38, 0, - 75, 76, 77, 78, 79, 80, 39, 40, 81, 82, - 41, 83, 0, 84, 0, 0, 85, 86, 0, 0, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, - 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, - 0, 0, 96, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, - 0, 0, 0, 105, 106, 107, 108, 56, 24, 57, - 25, 0, 0, 26, 58, 0, 59, 60, 27, 61, - 62, 63, 28, 0, 0, 0, 0, 0, 64, 0, - 65, 30, 66, 67, 68, 69, 0, 0, 32, 0, - 0, 0, 70, 33, 0, 71, 72, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 73, 0, 36, - 0, 37, 74, 0, 0, 38, 0, 75, 76, 77, - 78, 79, 80, 39, 40, 81, 82, 41, 83, 0, - 84, 0, 0, 85, 86, 0, 0, 87, 88, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 92, 93, 0, 0, 0, - 94, 0, 0, 0, 95, 0, 0, 0, 0, 96, - 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 0, 0, 0, 0, 0, 103, 104, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 550, 0, 0, 0, - 105, 106, 107, 108, 56, 24, 57, 25, 0, 0, - 26, 58, 0, 59, 60, 27, 61, 62, 63, 28, - 0, 0, 0, 0, 0, 64, 0, 65, 30, 66, - 67, 68, 69, 0, 0, 32, 0, 0, 0, 70, - 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 0, 36, 0, 37, 74, - 0, 0, 38, 0, 75, 76, 77, 78, 79, 80, - 39, 40, 81, 82, 41, 83, 0, 84, 0, 0, - 85, 86, 0, 0, 87, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 91, 92, 93, 0, 0, 0, 94, 0, 0, - 0, 95, 0, 0, 0, 0, 96, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, - 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, + 577, 0, 0, 0, 0, 576, 0, 0, 0, 0, + 0, 0, 577, 0, 577, 0, 577, 0, 577, 577, + 577, 0, 0, 0, 579, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, + 0, 578, 0, 0, 0, 0, 578, 577, 578, 578, + 578, 578, 578, 578, 578, 578, 578, 578, 578, 0, + 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, + 578, 0, 578, 0, 578, 0, 578, 578, 578, 0, + 0, 0, 0, 331, 0, 0, 0, 737, 0, 0, + 0, 0, 578, 0, 0, 0, 0, 579, 0, 0, + 0, 0, 579, 578, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 578, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 0, 579, 0, 579, 0, + 579, 578, 579, 579, 579, 737, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 579, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 933, 0, 0, 0, 105, 551, 107, - 108, 933, 933, 933, 933, 0, 0, 933, 933, 0, - 933, 933, 933, 933, 933, 933, 933, 0, 0, 0, - 0, 0, 933, 0, 933, 933, 933, 933, 933, 933, - 0, 0, 933, 0, 0, 0, 933, 933, 0, 933, - 933, 933, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 933, 0, 933, 0, 933, 933, 0, 0, 933, - 0, 933, 933, 933, 933, 933, 933, 933, 933, 933, - 933, 933, 933, 0, 933, 0, 0, 933, 933, 0, - 0, 933, 933, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 933, 933, 933, 933, - 933, 0, 0, 0, 933, 0, 0, 0, 933, 0, - 0, 0, 0, 933, 933, 933, 933, 933, 0, 0, - 0, 933, 0, 933, 0, 0, 0, 0, 0, 933, - 933, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 579, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 331, 0, 0, 579, 0, 0, + 331, 0, 331, 0, 331, 0, 737, 331, 0, 331, + 331, 0, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 0, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 0, 0, 56, 0, 331, + 0, 331, 0, 0, 331, 57, 25, 58, 26, 0, + 331, 27, 59, 0, 60, 61, 28, 62, 63, 64, + 29, 0, 0, 0, 0, 0, 65, 0, 66, 31, + 67, 68, 69, 70, 0, 0, 33, 0, 0, 0, + 71, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 76, 77, 78, 79, 80, + 81, 40, 41, 82, 83, 42, 84, 0, 85, 0, + 0, 86, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 784, 0, 0, 0, 933, 933, 933, 933, 784, 784, - 784, 784, 0, 0, 784, 784, 0, 784, 784, 784, - 784, 784, 784, 784, 0, 0, 0, 0, 0, 784, - 0, 784, 784, 784, 784, 784, 784, 0, 0, 784, - 0, 0, 0, 784, 784, 0, 784, 784, 784, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, - 784, 0, 784, 784, 0, 0, 784, 0, 784, 784, - 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, - 0, 784, 0, 0, 784, 784, 0, 0, 784, 784, + 90, 91, 92, 93, 94, 0, 0, 0, 95, 0, + 0, 0, 96, 0, 0, 0, 0, 97, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 784, 784, 784, 784, 784, 0, 0, - 0, 784, 0, 0, 0, 784, 0, 0, 0, 0, - 784, 784, 784, 784, 784, 0, 0, 0, 784, 0, - 784, 0, 0, 0, 0, 0, 784, 784, 0, 0, + 0, 0, 0, 0, 267, 0, 0, 0, 106, 107, + 108, 109, 57, 25, 58, 26, 0, 0, 27, 59, + 0, 60, 61, 28, 62, 63, 64, 29, 0, 0, + 0, 0, 0, 65, 0, 66, 31, 67, 68, 69, + 70, 0, 0, 33, 0, 0, 0, 71, 34, 0, + 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 74, 0, 37, 0, 38, 75, 0, 0, + 39, 0, 76, 77, 78, 79, 80, 81, 40, 41, + 82, 83, 42, 84, 0, 85, 0, 0, 86, 87, + 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, + 93, 94, 0, 0, 0, 95, 0, 0, 0, 96, + 0, 0, 0, 0, 97, 98, 99, 100, 101, 0, + 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, + 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 732, 0, 0, - 0, 784, 784, 784, 784, 56, 24, 0, 25, 0, - 0, 26, 254, 0, 1156, 0, 27, 61, 62, 0, - 28, 0, 0, 24, 0, 25, 64, 0, 26, 30, - 0, 0, 0, 27, 0, 0, 32, 28, 0, 0, - 0, 33, 0, 71, 72, 34, 30, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 36, 33, 37, - 74, 0, 34, 38, 0, 0, 76, 0, 78, 0, - 80, 39, 40, 255, 36, 41, 37, 0, 0, 0, - 38, 0, 86, 0, 0, 87, 88, 0, 39, 40, - 0, 0, 41, 0, 0, 320, 0, 0, 0, 0, - 89, 90, 91, 92, 301, 0, 0, 0, 512, 733, - 0, 0, 95, 0, 0, 0, 0, 0, 97, 98, - 99, 100, 0, 0, 0, 101, 0, 102, 0, 0, - 0, 0, 0, 103, 104, 0, 0, 0, 0, 0, + 0, 551, 0, 0, 0, 106, 107, 108, 109, 57, + 25, 58, 26, 0, 0, 27, 59, 0, 60, 61, + 28, 62, 63, 64, 29, 0, 0, 0, 0, 0, + 65, 0, 66, 31, 67, 68, 69, 70, 0, 0, + 33, 0, 0, 0, 71, 34, 0, 72, 73, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, + 0, 37, 0, 38, 75, 0, 0, 39, 0, 76, + 77, 78, 79, 80, 81, 40, 41, 82, 83, 42, + 84, 0, 85, 0, 0, 86, 87, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, + 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, + 0, 97, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 919, 0, 0, 0, 105, 302, - 107, 108, 56, 24, 0, 25, 0, 0, 26, 254, - 0, 0, 0, 27, 61, 62, 353, 28, 0, 0, - 171, 0, 171, 64, 0, 171, 30, 0, 0, 0, - 171, 0, 0, 32, 171, 0, 0, 0, 33, 0, - 71, 72, 34, 171, 0, 0, 0, 0, 0, 0, - 171, 0, 0, 0, 36, 171, 37, 74, 920, 171, - 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, - 255, 171, 41, 171, 0, 0, 0, 171, 0, 86, - 0, 0, 87, 88, 0, 171, 171, 0, 0, 171, - 0, 0, 171, 0, 0, 0, 0, 89, 90, 91, - 92, 301, 0, 0, 0, 512, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 0, 0, 957, 0, 0, - 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, - 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, - 61, 62, 0, 28, 0, 105, 302, 107, 108, 64, - 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 171, 33, 0, 71, 72, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 929, 0, + 0, 0, 106, 552, 108, 109, 929, 929, 929, 929, + 0, 0, 929, 929, 0, 929, 929, 929, 929, 929, + 929, 929, 0, 0, 0, 0, 0, 929, 0, 929, + 929, 929, 929, 929, 929, 0, 0, 929, 0, 0, + 0, 929, 929, 0, 929, 929, 929, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 929, 0, 929, 0, + 929, 929, 0, 0, 929, 0, 929, 929, 929, 929, + 929, 929, 929, 929, 929, 929, 929, 929, 0, 929, + 0, 0, 929, 929, 0, 0, 929, 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, - 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, - 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 929, 929, 929, 929, 929, 0, 0, 0, 929, + 0, 0, 0, 929, 0, 0, 0, 0, 929, 929, + 929, 929, 929, 0, 0, 0, 929, 0, 929, 0, + 0, 0, 0, 0, 929, 929, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 92, 301, 0, 0, - 0, 719, 988, 0, 0, 95, 0, 0, 0, 0, - 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, + 0, 0, 0, 0, 0, 784, 0, 0, 0, 929, + 929, 929, 929, 784, 784, 784, 784, 0, 0, 784, + 784, 0, 784, 784, 784, 784, 784, 784, 784, 0, + 0, 0, 0, 0, 784, 0, 784, 784, 784, 784, + 784, 784, 0, 0, 784, 0, 0, 0, 784, 784, + 0, 784, 784, 784, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 784, 0, 784, 0, 784, 784, 0, + 0, 784, 0, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 0, 784, 0, 0, 784, + 784, 0, 0, 784, 784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 784, 784, + 784, 784, 784, 0, 0, 0, 784, 0, 0, 0, + 784, 0, 0, 0, 0, 784, 784, 784, 784, 784, + 0, 0, 0, 784, 0, 784, 0, 0, 0, 0, + 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 732, - 0, 105, 720, 107, 108, 0, 0, 56, 24, 0, - 25, 0, 721, 26, 254, 0, 0, 0, 27, 61, - 62, 0, 28, 0, 0, 171, 0, 171, 64, 0, - 171, 30, 0, 0, 0, 171, 0, 0, 32, 171, - 0, 0, 0, 33, 0, 71, 72, 34, 171, 0, - 0, 0, 0, 0, 0, 171, 0, 0, 0, 36, - 171, 37, 74, 920, 171, 38, 0, 0, 76, 0, - 78, 0, 80, 39, 40, 255, 171, 41, 171, 0, - 0, 0, 171, 0, 86, 0, 0, 87, 88, 0, - 171, 171, 0, 0, 171, 0, 0, 171, 0, 0, - 0, 0, 89, 90, 91, 92, 301, 0, 0, 0, - 512, 0, 0, 0, 95, 0, 0, 0, 0, 0, - 97, 98, 99, 100, 0, 0, 0, 101, 0, 102, - 957, 0, 0, 0, 0, 103, 104, 0, 0, 0, + 0, 0, 733, 0, 0, 0, 784, 784, 784, 784, + 57, 25, 0, 26, 0, 0, 27, 255, 0, 1034, + 0, 28, 62, 63, 0, 29, 0, 0, 25, 0, + 26, 65, 0, 27, 31, 0, 0, 0, 28, 0, + 0, 33, 29, 0, 0, 0, 34, 0, 72, 73, + 35, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 37, 34, 38, 75, 0, 35, 39, 0, + 0, 77, 0, 79, 0, 81, 40, 41, 256, 37, + 42, 38, 0, 0, 0, 39, 0, 87, 0, 0, + 88, 89, 0, 40, 41, 0, 0, 42, 0, 0, + 321, 0, 0, 0, 0, 90, 91, 92, 93, 302, + 0, 0, 0, 513, 734, 0, 0, 96, 0, 0, + 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, + 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 700, 0, 0, 0, - 105, 302, 107, 108, 56, 24, 0, 25, 0, 0, - 26, 254, 0, 0, 0, 27, 61, 62, 171, 28, - 0, 0, 24, 0, 25, 64, 0, 26, 30, 0, - 0, 0, 27, 0, 0, 32, 28, 0, 0, 0, - 33, 0, 71, 72, 34, 30, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 0, 36, 33, 37, 74, - 0, 34, 38, 0, 0, 76, 0, 78, 0, 80, - 39, 40, 255, 36, 41, 37, 0, 84, 0, 38, - 0, 86, 0, 0, 87, 88, 0, 39, 40, 0, - 0, 41, 0, 0, 320, 0, 0, 0, 0, 89, - 90, 91, 92, 301, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, - 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, - 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, - 0, 27, 61, 62, 0, 28, 0, 105, 302, 107, - 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 353, 33, 0, 71, 72, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, - 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, - 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 92, 301, - 0, 0, 0, 719, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 918, + 0, 0, 0, 106, 303, 108, 109, 57, 25, 0, + 26, 0, 0, 27, 255, 0, 1156, 0, 28, 62, + 63, 354, 29, 0, 0, 25, 0, 26, 65, 0, + 27, 31, 0, 0, 0, 28, 0, 0, 33, 29, + 0, 0, 0, 34, 0, 72, 73, 35, 31, 0, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, + 34, 38, 75, 919, 35, 39, 0, 0, 77, 0, + 79, 0, 81, 40, 41, 256, 37, 42, 38, 0, + 0, 0, 39, 0, 87, 0, 0, 88, 89, 0, + 40, 41, 0, 0, 42, 0, 0, 321, 0, 0, + 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, + 513, 0, 0, 0, 96, 0, 0, 0, 0, 0, + 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 354, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 302, 0, 0, 0, 720, 988, 0, 0, + 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 733, 0, 106, 721, 108, 109, + 0, 0, 57, 25, 0, 26, 0, 722, 27, 255, + 0, 0, 0, 28, 62, 63, 0, 29, 0, 0, + 172, 0, 172, 65, 0, 172, 31, 0, 0, 0, + 172, 0, 0, 33, 172, 0, 0, 0, 34, 0, + 72, 73, 35, 172, 0, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 37, 172, 38, 75, 919, 172, + 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, + 256, 172, 42, 172, 0, 0, 0, 172, 0, 87, + 0, 0, 88, 89, 0, 172, 172, 0, 0, 172, + 0, 0, 172, 0, 0, 0, 0, 90, 91, 92, + 93, 302, 0, 0, 0, 513, 0, 0, 0, 96, + 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, + 0, 0, 102, 0, 103, 0, 0, 953, 0, 0, + 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 732, 0, 105, 720, 107, 108, 0, 0, 56, - 24, 0, 25, 0, 721, 26, 254, 0, 0, 0, - 27, 61, 62, 0, 28, 0, 0, 24, 0, 25, - 64, 0, 26, 30, 0, 0, 0, 27, 0, 0, - 32, 28, 0, 0, 0, 33, 0, 71, 72, 34, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 36, 33, 37, 74, 0, 34, 38, 0, 0, - 76, 0, 78, 0, 80, 39, 40, 255, 36, 41, - 37, 0, 0, 0, 38, 0, 86, 0, 0, 87, - 88, 0, 39, 40, 0, 0, 41, 0, 0, 514, - 0, 0, 0, 0, 89, 90, 91, 92, 301, 0, - 0, 0, 512, 0, 0, 0, 95, 0, 0, 0, - 0, 0, 97, 98, 99, 100, 0, 0, 0, 101, - 0, 102, 0, 0, 0, 0, 0, 103, 104, 0, + 0, 701, 0, 0, 0, 106, 303, 108, 109, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 172, 29, 0, 0, 172, 0, 172, + 65, 0, 172, 31, 0, 0, 0, 172, 0, 0, + 33, 172, 0, 0, 0, 34, 0, 72, 73, 35, + 172, 0, 0, 0, 0, 0, 0, 172, 0, 0, + 0, 37, 172, 38, 75, 0, 172, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 172, 42, + 172, 0, 85, 0, 172, 0, 87, 0, 0, 88, + 89, 0, 172, 172, 0, 0, 172, 0, 0, 172, + 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 953, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 29, 0, 106, 303, 108, 109, 65, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 172, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, + 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 585, 0, - 0, 0, 105, 302, 107, 108, 56, 24, 0, 25, - 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 353, 28, 0, 0, 24, 0, 25, 64, 0, 26, - 30, 0, 0, 0, 27, 0, 0, 32, 28, 0, - 0, 0, 33, 0, 71, 72, 34, 30, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 36, 33, - 37, 74, 0, 34, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 255, 36, 41, 37, 0, 0, - 0, 38, 0, 86, 0, 0, 87, 88, 0, 39, - 40, 0, 0, 41, 0, 0, 567, 0, 0, 0, - 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, + 90, 91, 92, 93, 302, 0, 0, 0, 720, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 907, 0, 0, 0, 105, - 106, 107, 108, 56, 24, 0, 25, 0, 0, 26, - 254, 0, 0, 0, 27, 61, 62, 353, 28, 0, - 0, 24, 0, 25, 64, 0, 26, 30, 0, 0, - 0, 27, 0, 0, 32, 28, 0, 0, 0, 33, - 0, 71, 72, 34, 30, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 36, 33, 37, 74, 0, - 34, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 255, 36, 41, 37, 0, 0, 0, 38, 0, - 86, 0, 0, 87, 88, 0, 39, 40, 0, 0, - 41, 0, 0, 747, 0, 0, 0, 0, 89, 90, - 91, 92, 301, 0, 0, 0, 0, 0, 0, 0, - 95, 0, 0, 0, 0, 0, 97, 98, 99, 100, - 0, 0, 0, 101, 0, 102, 0, 0, 0, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 733, 0, 106, 721, + 108, 109, 0, 0, 57, 25, 0, 26, 0, 722, + 27, 255, 0, 0, 0, 28, 62, 63, 0, 29, + 0, 0, 25, 0, 26, 65, 0, 27, 31, 0, + 0, 0, 28, 0, 0, 33, 29, 0, 0, 0, + 34, 0, 72, 73, 35, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 37, 34, 38, 75, + 0, 35, 39, 0, 0, 77, 0, 79, 0, 81, + 40, 41, 256, 37, 42, 38, 0, 0, 0, 39, + 0, 87, 0, 0, 88, 89, 0, 40, 41, 0, + 0, 42, 0, 0, 321, 0, 0, 0, 0, 90, + 91, 92, 93, 302, 0, 0, 0, 513, 0, 0, + 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, + 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, + 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 603, 0, 0, 0, 105, 302, 107, 108, - 603, 603, 0, 603, 0, 0, 603, 603, 0, 0, - 0, 603, 603, 603, 353, 603, 0, 0, 484, 0, - 484, 603, 0, 484, 603, 0, 0, 0, 484, 0, - 0, 603, 484, 0, 0, 0, 603, 0, 603, 603, - 603, 484, 0, 0, 0, 0, 0, 0, 484, 0, - 0, 0, 603, 484, 603, 603, 0, 484, 603, 0, - 0, 603, 0, 603, 0, 603, 603, 603, 603, 484, - 603, 484, 0, 0, 0, 484, 0, 603, 0, 0, - 603, 603, 0, 484, 484, 0, 0, 484, 0, 0, - 484, 0, 0, 0, 0, 603, 603, 603, 603, 603, - 0, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 0, 0, 0, 603, 603, 603, 603, 0, 0, 0, - 603, 0, 603, 0, 0, 0, 0, 0, 603, 603, + 0, 0, 0, 586, 0, 0, 0, 106, 303, 108, + 109, 57, 25, 0, 26, 0, 0, 27, 255, 0, + 0, 0, 28, 62, 63, 354, 29, 0, 0, 25, + 0, 26, 65, 0, 27, 31, 0, 0, 0, 28, + 0, 0, 33, 29, 0, 0, 0, 34, 0, 72, + 73, 35, 31, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 0, 37, 34, 38, 75, 0, 35, 39, + 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, + 37, 42, 38, 0, 0, 0, 39, 0, 87, 0, + 0, 88, 89, 0, 40, 41, 0, 0, 42, 0, + 0, 515, 0, 0, 0, 0, 90, 91, 92, 93, + 94, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 495, - 0, 0, 0, 603, 603, 603, 603, 56, 24, 0, - 25, 0, 0, 26, 254, 0, 0, 0, 27, 61, - 62, 484, 28, 0, 0, 0, 0, 0, 64, 0, - 0, 30, 0, 0, 0, 27, 0, 0, 32, 0, - 0, 0, 330, 33, 0, 71, 72, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 36, - 0, 37, 74, 0, 0, 38, 0, 0, 76, 0, - 78, 27, 80, 39, 40, 255, 27, 41, 330, 0, - 0, 27, 0, 27, 27, 27, 27, 0, 0, 27, - 0, 27, 0, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 89, 90, 91, 256, 0, 27, 0, 0, - 27, 0, 27, 0, 95, 0, 0, 0, 0, 0, + 906, 0, 0, 0, 106, 107, 108, 109, 57, 25, + 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, + 62, 63, 354, 29, 0, 0, 25, 0, 26, 65, + 0, 27, 31, 0, 0, 0, 28, 0, 0, 33, + 29, 0, 0, 0, 34, 0, 72, 73, 35, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 37, 34, 38, 75, 0, 35, 39, 0, 0, 77, + 0, 79, 0, 81, 40, 41, 256, 37, 42, 38, + 0, 0, 0, 39, 0, 87, 0, 0, 88, 89, + 0, 40, 41, 0, 0, 42, 0, 0, 568, 0, + 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, + 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, + 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, + 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, - 0, 0, 27, 27, 0, 0, 0, 0, 0, 0, - 0, 330, 330, 330, 330, 736, 0, 0, 330, 330, - 105, 496, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 0, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 0, 47, 0, 0, 0, 47, - 330, 47, 0, 330, 47, 0, 47, 47, 0, 47, - 0, 47, 0, 47, 0, 47, 47, 47, 47, 0, - 0, 47, 47, 0, 0, 0, 0, 47, 0, 47, - 47, 47, 0, 0, 47, 0, 47, 0, 47, 0, - 0, 47, 0, 47, 47, 47, 47, 0, 0, 0, - 47, 47, 47, 0, 0, 47, 47, 47, 0, 0, - 0, 0, 0, 0, 47, 47, 0, 47, 47, 0, - 47, 47, 47, 0, 0, 0, 47, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 604, 0, 0, + 0, 106, 303, 108, 109, 604, 604, 0, 604, 0, + 0, 604, 604, 0, 0, 0, 604, 604, 604, 354, + 604, 0, 0, 25, 0, 26, 604, 0, 27, 604, + 0, 0, 0, 28, 0, 0, 604, 29, 0, 0, + 0, 604, 0, 604, 604, 604, 31, 0, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 604, 34, 604, + 604, 0, 35, 604, 0, 0, 604, 0, 604, 0, + 604, 604, 604, 604, 37, 604, 38, 0, 0, 0, + 39, 0, 604, 0, 0, 604, 604, 0, 40, 41, + 0, 0, 42, 0, 0, 747, 0, 0, 0, 0, + 604, 604, 604, 604, 604, 0, 0, 0, 0, 0, + 0, 0, 604, 0, 0, 0, 0, 0, 604, 604, + 604, 604, 0, 0, 0, 604, 0, 604, 0, 0, + 0, 0, 0, 604, 604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, - 47, 0, 80, 47, 0, 47, 47, 0, 47, 0, - 47, 47, 47, 0, 47, 47, 47, 47, 0, 0, - 47, 47, 0, 0, 0, 0, 47, 0, 47, 47, - 47, 0, 0, 47, 0, 47, 0, 47, 0, 0, - 47, 0, 47, 47, 47, 47, 0, 0, 0, 47, - 47, 47, 47, 0, 47, 47, 47, 0, 0, 0, - 0, 0, 0, 47, 47, 0, 47, 47, 0, 47, - 47, 47, 0, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 0, 0, 496, 0, 0, 0, 604, 604, + 604, 604, 57, 25, 0, 26, 0, 0, 27, 255, + 0, 0, 0, 28, 62, 63, 354, 29, 0, 0, + 0, 0, 0, 65, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 33, 0, 450, 0, 331, 34, 0, + 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 37, 0, 38, 75, 451, 0, + 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, + 256, 452, 42, 331, 0, 0, 454, 0, 0, 0, + 0, 455, 0, 456, 457, 458, 459, 0, 0, 0, + 0, 460, 0, 0, 0, 461, 0, 90, 91, 92, + 257, 0, 0, 0, 0, 0, 0, 462, 0, 96, + 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 47, 0, 47, 0, 47, - 0, 81, 47, 0, 47, 47, 0, 47, 0, 47, - 47, 47, 0, 47, 47, 47, 47, 0, 0, 47, - 47, 0, 0, 0, 0, 47, 0, 47, 47, 47, - 0, 0, 47, 0, 47, 0, 47, 0, 0, 47, - 0, 47, 47, 47, 47, 0, 0, 0, 47, 47, - 47, 47, 0, 47, 47, 47, 0, 0, 0, 0, - 0, 0, 47, 47, 0, 47, 47, 0, 47, 47, - 47, 0, 0, 0, 47, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, - 0, 47, 0, 47, 47, 0, 47, 0, 47, 47, - 211, 47, 0, 47, 0, 47, 0, 47, 47, 47, - 47, 0, 0, 47, 47, 0, 0, 0, 0, 47, - 0, 47, 47, 47, 0, 0, 47, 0, 47, 330, - 47, 0, 0, 47, 0, 47, 47, 47, 47, 0, - 0, 0, 47, 47, 47, 0, 0, 47, 47, 47, - 47, 0, 330, 0, 0, 0, 47, 47, 0, 47, - 47, 0, 47, 47, 47, 330, 0, 0, 47, 0, - 330, 0, 0, 330, 0, 330, 0, 330, 330, 330, - 330, 0, 0, 0, 0, 330, 0, 0, 47, 330, - 0, 0, 0, 330, 212, 0, 0, 449, 0, 0, - 0, 330, 0, 0, 330, 0, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 465, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 331, 331, 331, 331, + 737, 0, 0, 331, 331, 106, 497, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 0, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, + 48, 0, 1314, 0, 48, 331, 48, 0, 331, 48, + 0, 48, 48, 0, 48, 0, 48, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 48, 48, 0, 0, + 0, 0, 48, 0, 48, 48, 48, 0, 0, 48, + 0, 48, 0, 48, 0, 0, 48, 0, 48, 48, + 48, 48, 0, 0, 0, 48, 48, 48, 0, 0, + 48, 48, 48, 0, 0, 0, 0, 0, 0, 48, + 48, 0, 48, 48, 0, 48, 48, 48, 0, 0, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, + 0, 48, 0, 48, 0, 48, 0, 81, 48, 0, + 48, 48, 0, 48, 0, 48, 48, 48, 0, 48, + 48, 48, 48, 0, 0, 48, 48, 0, 0, 0, + 0, 48, 0, 48, 48, 48, 0, 0, 48, 0, + 48, 0, 48, 0, 0, 48, 0, 48, 48, 48, + 48, 0, 0, 0, 48, 48, 48, 48, 0, 48, + 48, 48, 0, 0, 0, 0, 0, 0, 48, 48, + 0, 48, 48, 0, 48, 48, 48, 0, 0, 0, + 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, + 48, 0, 48, 0, 48, 0, 82, 48, 0, 48, + 48, 0, 48, 0, 48, 48, 48, 0, 48, 48, + 48, 48, 0, 0, 48, 48, 0, 0, 0, 0, + 48, 0, 48, 48, 48, 0, 0, 48, 0, 48, + 0, 48, 0, 0, 48, 0, 48, 48, 48, 48, + 0, 0, 0, 48, 48, 48, 48, 0, 48, 48, + 48, 0, 0, 0, 0, 0, 0, 48, 48, 0, + 48, 48, 0, 48, 48, 48, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 450, 0, 0, 0, 0, 330, 0, 0, 0, 0, - 330, 0, 0, 451, 0, 0, 0, 330, 453, 262, - 0, 330, 0, 454, 47, 455, 456, 457, 458, 0, - 0, 0, 0, 459, 330, 0, 0, 460, 0, 0, - 0, 1299, 0, 0, 56, 24, 0, 25, 0, 461, - 26, 254, 462, 0, 463, 27, 61, 62, 0, 28, - 0, 0, 0, 0, 0, 64, 330, 0, 30, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 464, 0, - 33, 0, 71, 72, 34, 0, 587, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 36, 0, 37, 74, - 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, - 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, - 0, 589, 0, 0, 87, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 1300, 0, 0, 0, 0, 89, - 90, 91, 92, 93, 0, 0, 0, 0, 0, 0, - 0, 95, 914, 0, 590, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, - 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, - 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, - 0, 27, 61, 62, 0, 28, 0, 105, 106, 107, - 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, - 34, 0, 587, 0, 0, 0, 0, 0, 0, 588, - 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, - 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, - 41, 0, 0, 0, 0, 0, 0, 589, 0, 0, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, - 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, - 590, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, - 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, - 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 0, 28, 0, 105, 106, 107, 108, 64, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 33, 0, 71, 72, 34, 0, 587, 0, - 0, 0, 0, 0, 0, 588, 0, 0, 36, 0, - 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, - 0, 0, 0, 589, 0, 0, 87, 88, 0, 0, + 0, 0, 48, 0, 0, 0, 48, 0, 48, 48, + 0, 48, 0, 48, 48, 212, 48, 0, 48, 0, + 48, 0, 48, 48, 48, 48, 0, 0, 48, 48, + 0, 0, 0, 0, 48, 0, 48, 48, 48, 0, + 0, 48, 0, 48, 331, 48, 0, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 0, 48, 48, 48, + 0, 0, 48, 48, 48, 48, 0, 331, 0, 0, + 0, 48, 48, 0, 48, 48, 28, 48, 48, 48, + 331, 0, 0, 48, 0, 331, 0, 0, 331, 0, + 331, 0, 331, 331, 331, 331, 0, 0, 0, 28, + 331, 0, 0, 48, 331, 0, 0, 0, 331, 213, + 0, 0, 28, 0, 352, 0, 331, 28, 0, 331, + 0, 331, 28, 0, 28, 28, 28, 28, 0, 0, + 28, 0, 28, 0, 0, 0, 28, 352, 0, 0, + 331, 0, 0, 0, 450, 331, 0, 0, 28, 0, + 352, 28, 331, 28, 263, 352, 331, 0, 229, 48, + 352, 0, 352, 352, 352, 352, 0, 451, 0, 331, + 352, 0, 0, 0, 352, 0, 0, 28, 352, 0, + 452, 0, 0, 28, 28, 454, 352, 0, 0, 352, + 455, 352, 456, 457, 458, 459, 0, 0, 0, 0, + 460, 331, 0, 0, 461, 0, 0, 0, 1299, 0, + 0, 57, 25, 0, 26, 352, 462, 27, 255, 463, + 0, 464, 28, 62, 63, 0, 29, 0, 0, 0, + 0, 0, 65, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 465, 0, 34, 0, 72, + 73, 35, 0, 588, 0, 0, 0, 0, 0, 0, + 589, 0, 0, 37, 0, 38, 75, 0, 0, 39, + 0, 352, 77, 0, 79, 0, 81, 40, 41, 256, + 0, 42, 0, 0, 0, 0, 0, 0, 590, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 1300, 0, 0, 0, 0, 90, 91, 92, 93, + 94, 0, 0, 0, 0, 0, 0, 0, 96, 913, + 0, 591, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 57, 25, 0, + 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, + 63, 0, 29, 0, 106, 107, 108, 109, 65, 0, + 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 34, 0, 72, 73, 35, 0, 588, + 0, 0, 0, 0, 0, 0, 589, 0, 0, 37, + 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, + 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, + 0, 0, 0, 0, 590, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 91, 92, 93, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, - 0, 0, 56, 24, 0, 25, 0, 0, 26, 254, - 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, - 106, 107, 108, 64, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, - 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, - 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, - 255, 0, 41, 0, 0, 84, 0, 0, 0, 86, - 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, - 92, 301, 0, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, - 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, - 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, - 61, 62, 0, 28, 0, 105, 302, 107, 108, 64, - 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, + 0, 0, 90, 91, 92, 93, 94, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 591, 0, 0, + 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 107, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, + 0, 72, 73, 35, 0, 588, 0, 0, 0, 0, + 0, 0, 589, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 590, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 94, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 0, 29, 0, 106, 107, 108, 109, + 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, - 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, - 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, + 0, 0, 85, 0, 0, 0, 87, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 29, 0, 106, 303, 108, 109, 65, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, + 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 92, 301, 0, 0, - 0, 0, 871, 0, 0, 95, 0, 0, 0, 0, - 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, - 0, 0, 0, 0, 56, 24, 0, 25, 0, 0, - 26, 254, 0, 0, 0, 27, 61, 62, 0, 28, - 0, 105, 302, 107, 108, 64, 0, 0, 30, 0, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 33, 0, 71, 72, 34, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 37, 74, - 0, 0, 38, 0, 0, 76, 0, 78, 0, 80, - 39, 40, 255, 0, 41, 0, 0, 0, 0, 0, - 0, 86, 0, 0, 87, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 91, 92, 301, 0, 0, 0, 512, 0, 0, - 0, 95, 0, 0, 0, 0, 0, 97, 98, 99, - 100, 0, 0, 0, 101, 0, 102, 0, 0, 0, - 0, 0, 103, 104, 0, 0, 0, 0, 0, 0, - 56, 24, 0, 25, 0, 0, 26, 254, 0, 0, - 0, 27, 61, 62, 0, 28, 0, 105, 302, 107, - 108, 64, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 0, 33, 0, 71, 72, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 0, 37, 74, 0, 0, 38, 0, - 0, 76, 0, 78, 0, 80, 39, 40, 255, 0, - 41, 0, 0, 0, 0, 0, 0, 86, 0, 0, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 91, 92, 301, - 0, 0, 0, 506, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 97, 98, 99, 100, 0, 0, 0, - 101, 0, 102, 0, 0, 0, 0, 0, 103, 104, - 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, - 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 0, 28, 0, 105, 302, 107, 108, 64, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 33, 0, 71, 72, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 37, 74, 0, 0, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 255, 0, 41, 0, 0, 0, - 0, 0, 0, 86, 0, 0, 87, 88, 0, 0, + 90, 91, 92, 93, 302, 0, 0, 0, 0, 870, + 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 57, 25, 0, 26, 0, 0, 27, 255, 0, + 0, 0, 28, 62, 63, 0, 29, 0, 106, 303, + 108, 109, 65, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 34, 0, 72, + 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 38, 75, 0, 0, 39, + 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, + 0, 42, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 302, 0, 0, 0, 513, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 57, 25, 0, + 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, + 63, 0, 29, 0, 106, 303, 108, 109, 65, 0, + 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, + 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, + 0, 0, 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 90, 91, 92, 301, 0, 0, 0, 0, - 0, 0, 0, 95, 0, 0, 0, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, - 0, 0, 56, 24, 0, 25, 0, 0, 26, 254, - 0, 0, 0, 27, 61, 62, 0, 28, 0, 105, - 302, 107, 108, 64, 0, 0, 30, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, - 71, 72, 34, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 36, 0, 37, 74, 0, 0, - 38, 0, 0, 76, 0, 78, 0, 80, 39, 40, - 255, 0, 41, 0, 0, 0, 0, 0, 0, 86, - 0, 0, 87, 88, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, - 92, 93, 0, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 0, 0, 0, 97, 98, 99, 100, 0, - 0, 0, 101, 0, 102, 0, 0, 0, 0, 0, - 103, 104, 0, 0, 0, 0, 0, 0, 56, 24, - 0, 25, 0, 0, 26, 254, 0, 0, 0, 27, - 61, 62, 0, 28, 0, 105, 106, 107, 108, 64, - 0, 0, 30, 0, 0, 0, 0, 0, 0, 32, - 0, 0, 0, 0, 33, 0, 71, 72, 34, 0, + 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, + 507, 0, 0, 0, 96, 0, 0, 0, 0, 0, + 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 302, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 0, 29, 0, 106, 303, 108, 109, + 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 37, 74, 0, 0, 38, 0, 0, 76, - 0, 78, 0, 80, 39, 40, 255, 0, 41, 0, - 0, 0, 0, 0, 0, 86, 0, 0, 87, 88, + 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, + 0, 0, 0, 0, 0, 0, 87, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 29, 0, 106, 107, 108, 109, 65, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, + 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 91, 92, 93, 0, 0, - 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, - 0, 97, 98, 99, 100, 0, 0, 0, 101, 0, - 102, 0, 0, 0, 0, 0, 103, 104, 0, 0, - 0, 0, 0, 0, 77, 77, 0, 77, 0, 0, - 77, 77, 0, 0, 0, 77, 77, 77, 0, 77, - 0, 105, 1026, 107, 108, 77, 0, 0, 77, 0, - 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, - 77, 0, 77, 77, 77, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 0, 77, 77, - 0, 0, 77, 0, 0, 77, 0, 77, 0, 77, - 77, 77, 77, 0, 77, 0, 0, 0, 0, 0, - 0, 77, 0, 0, 77, 77, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, - 77, 77, 77, 77, 0, 0, 0, 0, 0, 0, - 0, 77, 0, 0, 0, 0, 0, 77, 77, 77, - 77, 0, 0, 0, 77, 0, 77, 0, 0, 0, - 0, 0, 77, 77, 0, 0, 0, 0, 0, 0, - 134, 134, 0, 134, 0, 0, 134, 134, 0, 0, - 0, 134, 134, 134, 0, 134, 0, 77, 77, 77, - 77, 134, 0, 0, 134, 0, 0, 0, 0, 0, - 0, 134, 0, 0, 0, 0, 134, 0, 134, 134, - 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 134, 0, 134, 134, 0, 0, 134, 0, - 0, 134, 0, 134, 0, 134, 134, 134, 134, 0, - 134, 0, 0, 0, 0, 0, 0, 134, 0, 0, - 134, 134, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 134, 134, 134, 134, 134, - 0, 0, 0, 0, 0, 0, 0, 134, 0, 0, - 0, 0, 0, 134, 134, 134, 134, 0, 0, 0, - 134, 0, 134, 0, 0, 0, 0, 0, 134, 134, - 0, 0, 0, 0, 0, 0, 56, 24, 0, 25, - 0, 0, 26, 254, 0, 0, 0, 27, 61, 62, - 0, 28, 0, 134, 134, 134, 134, 64, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 32, 0, 27, - 0, 27, 33, 0, 71, 72, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, - 37, 74, 27, 0, 38, 0, 0, 76, 0, 78, - 0, 80, 39, 40, 255, 27, 41, 0, 0, 0, - 27, 0, 0, 0, 0, 27, 0, 27, 27, 27, - 27, 0, 0, 0, 0, 27, 0, 0, 0, 27, - 0, 89, 90, 91, 256, 301, 0, 0, 0, 0, - 0, 27, 0, 95, 27, 0, 27, 0, 0, 97, - 98, 99, 100, 0, 0, 0, 101, 0, 102, 0, - 0, 0, 0, 0, 103, 104, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 27, 27, 0, 0, - 0, 0, 0, 0, 636, 0, 636, 0, 636, 105, - 257, 636, 108, 636, 636, 0, 636, 0, 636, 0, - 636, 0, 636, 636, 636, 0, 0, 0, 636, 636, - 0, 0, 0, 0, 636, 0, 636, 636, 0, 0, - 0, 636, 0, 0, 0, 636, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 636, 636, 0, 636, - 0, 0, 0, 636, 636, 0, 0, 0, 0, 0, - 0, 636, 636, 56, 24, 636, 25, 0, 636, 26, - 254, 0, 0, 636, 27, 61, 62, 0, 28, 0, - 0, 0, 0, 0, 64, 0, 0, 30, 0, 0, - 0, 0, 0, 0, 32, 636, 636, 0, 0, 33, - 0, 71, 72, 34, 0, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 36, 0, 37, 74, 0, - 0, 38, 0, 0, 76, 0, 78, 0, 80, 39, - 40, 255, 0, 41, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 24, 0, 25, 0, 0, 26, 636, - 1209, 0, 0, 27, 0, 0, 0, 28, 89, 90, - 91, 256, 0, 0, 0, 0, 30, 635, 0, 635, - 95, 0, 635, 32, 635, 635, 0, 635, 33, 635, - 1210, 635, 34, 635, 635, 635, 0, 0, 0, 635, - 635, 0, 0, 0, 36, 635, 37, 635, 635, 0, - 38, 1211, 635, 0, 0, 0, 635, 0, 39, 40, - 0, 0, 41, 0, 0, 320, 105, 257, 635, 0, - 635, 0, 0, 0, 635, 635, 0, 0, 0, 0, - 0, 0, 635, 635, 0, 635, 635, 635, 0, 635, - 635, 0, 635, 635, 635, 635, 0, 635, 0, 635, - 0, 635, 635, 635, 0, 0, 0, 635, 635, 0, - 0, 0, 0, 635, 0, 635, 635, 0, 0, 0, - 635, 0, 0, 0, 635, 0, 0, 0, 0, 635, - 0, 0, 0, 0, 0, 0, 635, 0, 635, 0, - 0, 0, 635, 635, 0, 0, 353, 0, 0, 0, - 635, 635, 0, 0, 635, 0, 0, 635, 0, 24, - 0, 25, 635, 0, 26, 0, 0, 1269, 0, 27, - 635, 676, 0, 28, 0, 677, 1270, 1271, 0, 0, - 0, 1272, 30, 0, 0, 0, 0, 1273, 0, 32, - 0, 24, 0, 25, 33, 0, 26, 0, 34, 1269, - 0, 27, 0, 676, 0, 28, 0, 677, 1270, 1271, - 36, 0, 37, 1272, 30, 0, 38, 0, 0, 1273, - 0, 32, 0, 0, 39, 40, 33, 0, 41, 0, - 34, 1274, 0, 0, 0, 47, 1275, 47, 635, 0, - 47, 0, 36, 0, 37, 47, 0, 0, 38, 47, - 0, 0, 0, 0, 0, 0, 39, 40, 47, 0, - 41, 0, 0, 1274, 0, 47, 0, 47, 1275, 47, - 47, 1276, 47, 0, 47, 0, 47, 47, 47, 0, - 0, 47, 0, 47, 0, 0, 47, 0, 47, 0, - 47, 0, 47, 0, 0, 47, 0, 47, 0, 0, - 47, 47, 47, 0, 47, 0, 47, 47, 47, 0, - 47, 47, 1277, 47, 0, 47, 47, 0, 47, 0, - 47, 47, 0, 0, 47, 47, 0, 47, 0, 0, - 0, 0, 47, 47, 47, 0, 47, 0, 0, 47, - 0, 47, 152, 24, 1277, 25, 47, 0, 26, 0, - 47, 0, 47, 27, 47, 0, 0, 28, 0, 47, - 0, 0, 47, 0, 47, 0, 30, 0, 47, 0, - 0, 47, 152, 32, 0, 0, 47, 47, 33, 0, - 47, 0, 34, 47, 564, 0, 0, 0, 47, 0, - 0, 565, 0, 0, 36, 0, 37, 0, 0, 0, - 38, 0, 0, 566, 0, 0, 0, 0, 39, 40, - 0, 0, 41, 0, 24, 567, 25, 0, 0, 26, - 47, 0, 0, 0, 27, 0, 0, 0, 28, 0, - 0, 0, 29, 24, 0, 25, 0, 30, 26, 0, - 0, 0, 31, 27, 32, 0, 0, 28, 0, 33, - 0, 0, 0, 34, 35, 0, 30, 0, 0, 0, - 0, 0, 0, 32, 47, 36, 0, 37, 33, 0, - 0, 38, 34, 0, 0, 0, 0, 0, 0, 39, - 40, 0, 0, 41, 36, 0, 37, 172, 0, 172, - 38, 0, 172, 0, 0, 0, 568, 172, 39, 40, - 0, 172, 41, 0, 171, 320, 171, 0, 0, 171, - 172, 0, 0, 0, 171, 0, 0, 172, 171, 0, - 0, 0, 172, 0, 0, 0, 172, 171, 0, 0, - 0, 291, 0, 0, 171, 0, 0, 0, 172, 171, - 172, 0, 0, 171, 172, 0, 0, 0, 0, 0, - 0, 0, 172, 172, 0, 171, 172, 171, 181, 172, - 181, 171, 0, 181, 0, 0, 0, 42, 181, 171, - 171, 0, 181, 171, 0, 0, 171, 0, 0, 0, - 0, 181, 0, 0, 0, 0, 321, 0, 181, 0, - 0, 0, 0, 181, 0, 0, 34, 181, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 0, 181, - 0, 181, 34, 0, 0, 181, 34, 0, 0, 34, - 0, 0, 0, 181, 181, 0, 0, 181, 0, 0, - 181, 34, 34, 0, 0, 0, 34, 34, 0, 0, - 172, 0, 34, 0, 34, 34, 34, 34, 0, 0, - 0, 0, 34, 0, 0, 0, 34, 171, 34, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, - 34, 34, 32, 34, 0, 0, 0, 34, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, - 0, 0, 32, 0, 0, 32, 0, 34, 0, 0, - 0, 0, 0, 34, 34, 0, 0, 32, 32, 0, - 0, 181, 32, 32, 0, 47, 0, 0, 32, 0, - 32, 32, 32, 32, 0, 0, 47, 0, 32, 0, - 0, 47, 32, 0, 32, 47, 0, 0, 47, 0, - 0, 0, 0, 0, 32, 0, 0, 32, 0, 32, - 47, 47, 0, 32, 0, 47, 47, 0, 47, 0, - 0, 47, 0, 47, 47, 47, 47, 0, 0, 47, - 0, 47, 0, 32, 47, 47, 0, 47, 47, 32, - 32, 47, 0, 0, 0, 0, 0, 47, 0, 0, - 47, 0, 47, 47, 47, 0, 47, 0, 47, 47, - 47, 0, 0, 0, 47, 0, 47, 47, 47, 47, - 0, 0, 0, 0, 47, 0, 47, 0, 47, 0, - 47, 0, 36, 47, 0, 0, 0, 0, 0, 0, - 47, 0, 0, 47, 0, 47, 47, 0, 47, 47, - 0, 47, 0, 0, 0, 0, 47, 0, 47, 47, - 47, 47, 0, 0, 0, 0, 47, 0, 0, 47, - 47, 47, 0, 0, 0, 37, 0, 0, 0, 0, - 0, 0, 47, 0, 47, 47, 47, 47, 0, 47, - 0, 0, 0, 0, 47, 0, 47, 47, 47, 47, - 0, 0, 0, 0, 47, 0, 0, 0, 47, 47, - 0, 47, 0, 47, 47, 0, 0, 193, 0, 0, - 47, 0, 47, 47, 47, 47, 47, 47, 0, 0, - 0, 0, 47, 0, 47, 47, 47, 47, 0, 0, - 47, 0, 47, 0, 0, 0, 47, 47, 0, 47, - 0, 47, 47, 0, 0, 195, 0, 0, 47, 0, - 47, 47, 47, 47, 0, 47, 0, 0, 0, 0, - 47, 0, 47, 47, 47, 47, 0, 0, 0, 0, - 47, 0, 0, 0, 47, 47, 0, 47, 0, 0, - 0, 0, 47, 295, 47, 0, 47, 0, 47, 47, - 0, 47, 0, 47, 0, 0, 0, 0, 47, 0, - 47, 47, 47, 47, 0, 47, 0, 0, 47, 0, - 0, 0, 47, 0, 0, 47, 0, 0, 47, 0, - 0, 296, 449, 47, 47, 0, 0, 47, 47, 47, - 47, 47, 47, 47, 0, 0, 47, 0, 47, 0, - 0, 0, 47, 0, 0, 450, 0, 0, 0, 0, - 0, 0, 449, 47, 47, 47, 47, 47, 451, 47, - 0, 0, 452, 453, 0, 0, 0, 0, 454, 0, - 455, 456, 457, 458, 0, 450, 0, 0, 459, 0, - 0, 0, 460, 47, 0, 0, 0, 0, 451, 0, - 0, 0, 0, 453, 461, 0, 0, 462, 454, 463, - 455, 456, 457, 458, 0, 0, 0, 0, 459, 0, - 0, 0, 460, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 464, 461, 0, 0, 462, 0, 463, + 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 78, 78, 0, 78, 0, 0, 78, 78, 0, + 0, 0, 78, 78, 78, 0, 78, 0, 106, 1026, + 108, 109, 78, 0, 0, 78, 0, 0, 0, 0, + 0, 0, 78, 0, 0, 0, 0, 78, 0, 78, + 78, 78, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 78, 0, 78, 78, 0, 0, 78, + 0, 0, 78, 0, 78, 0, 78, 78, 78, 78, + 0, 78, 0, 0, 0, 0, 0, 0, 78, 0, + 0, 78, 78, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 78, 78, 78, 78, + 78, 0, 0, 0, 0, 0, 0, 0, 78, 0, + 0, 0, 0, 0, 78, 78, 78, 78, 0, 0, + 0, 78, 0, 78, 0, 0, 0, 0, 0, 78, + 78, 0, 0, 0, 0, 0, 0, 135, 135, 0, + 135, 0, 0, 135, 135, 0, 0, 0, 135, 135, + 135, 0, 135, 0, 78, 78, 78, 78, 135, 0, + 0, 135, 0, 0, 0, 0, 0, 0, 135, 0, + 0, 0, 0, 135, 0, 135, 135, 135, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 135, 135, 0, 0, 135, 0, 0, 135, 0, + 135, 0, 135, 135, 135, 135, 0, 135, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 135, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 135, 135, 135, 135, 135, 0, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 0, + 135, 135, 135, 135, 0, 0, 0, 135, 0, 135, + 0, 0, 0, 0, 0, 135, 135, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 135, 135, 135, 135, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 28, 0, 28, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 38, 75, 28, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 28, 42, 0, 0, 0, 28, 0, 0, + 0, 0, 28, 0, 28, 28, 28, 28, 0, 0, + 0, 0, 28, 0, 0, 0, 28, 0, 90, 91, + 92, 257, 302, 0, 0, 0, 0, 0, 28, 0, + 96, 28, 0, 28, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 28, 0, 0, + 0, 0, 0, 28, 28, 0, 0, 0, 0, 0, + 0, 637, 0, 637, 0, 637, 106, 258, 637, 109, + 637, 637, 0, 637, 0, 637, 0, 637, 0, 637, + 637, 637, 0, 0, 0, 637, 637, 0, 0, 0, + 0, 637, 0, 637, 637, 0, 0, 0, 637, 0, + 0, 0, 637, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 637, 637, 0, 637, 0, 0, 0, + 637, 637, 0, 0, 0, 0, 0, 0, 637, 637, + 57, 25, 637, 26, 0, 637, 27, 255, 0, 0, + 637, 28, 62, 63, 0, 29, 0, 0, 0, 0, + 0, 65, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 637, 637, 0, 0, 34, 0, 72, 73, + 35, 0, 0, 0, 0, 637, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, + 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, + 42, 0, 0, 85, 0, 0, 0, 0, 0, 0, + 25, 0, 26, 0, 0, 27, 637, 0, 0, 0, + 28, 0, 0, 0, 29, 90, 91, 92, 257, 0, + 0, 0, 0, 31, 636, 0, 636, 96, 0, 636, + 33, 636, 636, 0, 636, 34, 636, 0, 636, 35, + 636, 636, 636, 0, 0, 0, 636, 636, 0, 0, + 0, 37, 636, 38, 636, 636, 0, 39, 0, 636, + 0, 0, 0, 636, 0, 40, 41, 0, 0, 42, + 0, 0, 321, 106, 258, 636, 0, 636, 0, 0, + 0, 636, 636, 0, 0, 0, 0, 0, 0, 636, + 636, 0, 636, 636, 636, 0, 636, 636, 292, 636, + 636, 636, 636, 0, 636, 0, 636, 0, 636, 636, + 636, 0, 0, 0, 636, 636, 0, 0, 0, 0, + 636, 0, 636, 636, 0, 0, 0, 636, 0, 0, + 0, 636, 0, 0, 0, 0, 636, 0, 0, 0, + 0, 0, 0, 636, 0, 636, 0, 0, 0, 636, + 636, 0, 0, 322, 0, 0, 0, 636, 636, 0, + 0, 636, 0, 0, 636, 0, 25, 0, 26, 636, + 0, 27, 0, 0, 1269, 0, 28, 636, 677, 0, + 29, 0, 678, 1270, 1271, 0, 0, 0, 1272, 31, + 0, 0, 0, 0, 1273, 0, 33, 0, 25, 0, + 26, 34, 0, 27, 0, 35, 1269, 0, 28, 0, + 677, 0, 29, 0, 678, 1270, 1271, 37, 0, 38, + 1272, 31, 0, 39, 0, 0, 1273, 0, 33, 0, + 0, 40, 41, 34, 0, 42, 0, 35, 1274, 0, + 0, 0, 48, 1275, 48, 636, 0, 48, 0, 37, + 0, 38, 48, 0, 0, 39, 48, 0, 0, 0, + 0, 0, 0, 40, 41, 48, 0, 42, 0, 0, + 1274, 0, 48, 0, 48, 1275, 48, 48, 1276, 48, + 0, 48, 0, 48, 48, 48, 0, 0, 48, 0, + 48, 0, 0, 48, 0, 48, 0, 48, 0, 48, + 0, 0, 48, 0, 48, 0, 0, 48, 48, 48, + 0, 48, 0, 48, 48, 48, 0, 48, 48, 1277, + 48, 0, 48, 48, 0, 48, 0, 48, 48, 0, + 0, 48, 48, 0, 48, 0, 0, 0, 0, 48, + 48, 48, 0, 48, 0, 0, 48, 0, 48, 153, + 25, 1277, 26, 48, 0, 27, 0, 48, 0, 48, + 28, 48, 0, 0, 29, 0, 48, 0, 0, 48, + 0, 48, 0, 31, 0, 48, 0, 0, 48, 153, + 33, 0, 0, 48, 48, 34, 0, 48, 0, 35, + 48, 565, 0, 0, 0, 48, 0, 0, 566, 0, + 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, + 567, 0, 0, 0, 0, 40, 41, 0, 0, 42, + 0, 25, 568, 26, 0, 0, 27, 48, 0, 0, + 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, + 485, 0, 485, 0, 31, 485, 0, 0, 0, 32, + 485, 33, 0, 0, 485, 0, 34, 0, 0, 0, + 35, 36, 0, 485, 0, 0, 0, 0, 0, 0, + 485, 48, 37, 0, 38, 485, 0, 0, 39, 485, + 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, + 42, 485, 0, 485, 173, 0, 173, 485, 0, 173, + 0, 0, 0, 569, 173, 485, 485, 0, 173, 485, + 0, 172, 485, 172, 0, 0, 172, 173, 0, 0, + 0, 172, 0, 0, 173, 172, 0, 0, 0, 173, + 0, 0, 0, 173, 172, 0, 0, 0, 0, 0, + 0, 172, 0, 0, 0, 173, 172, 173, 0, 0, + 172, 173, 0, 0, 0, 0, 0, 0, 0, 173, + 173, 0, 172, 173, 172, 182, 173, 182, 172, 0, + 182, 0, 0, 0, 43, 182, 172, 172, 0, 182, + 172, 0, 0, 172, 0, 0, 0, 0, 182, 0, + 0, 0, 0, 485, 0, 182, 0, 0, 0, 0, + 182, 0, 0, 35, 182, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 182, 0, 182, 35, + 0, 0, 182, 35, 0, 0, 35, 0, 0, 0, + 182, 182, 0, 0, 182, 0, 0, 182, 35, 35, + 0, 0, 0, 35, 35, 0, 0, 173, 0, 35, + 0, 35, 35, 35, 35, 0, 0, 0, 0, 35, + 0, 0, 0, 35, 172, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 35, 35, 33, + 35, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 33, 0, 0, 0, 33, + 0, 0, 33, 0, 35, 0, 0, 0, 0, 0, + 35, 35, 0, 0, 33, 33, 0, 0, 182, 33, + 33, 0, 48, 0, 0, 33, 0, 33, 33, 33, + 33, 0, 0, 48, 0, 33, 0, 0, 48, 33, + 0, 33, 48, 0, 0, 48, 0, 0, 0, 0, + 0, 33, 0, 0, 33, 0, 33, 48, 48, 0, + 33, 0, 48, 48, 0, 48, 0, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 48, 0, 48, 0, + 33, 48, 48, 0, 48, 48, 33, 33, 48, 0, + 0, 0, 0, 0, 48, 0, 0, 48, 0, 48, + 48, 48, 0, 48, 0, 48, 48, 48, 0, 0, + 0, 48, 0, 48, 48, 48, 48, 0, 0, 0, + 0, 48, 0, 48, 0, 48, 0, 48, 0, 37, + 48, 0, 0, 0, 0, 0, 0, 48, 0, 0, + 48, 0, 48, 48, 0, 48, 48, 48, 48, 0, + 0, 0, 0, 48, 0, 48, 48, 48, 48, 0, + 0, 48, 0, 48, 0, 0, 48, 48, 48, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 48, + 0, 48, 48, 48, 48, 0, 48, 0, 0, 0, + 0, 48, 0, 48, 48, 48, 48, 0, 0, 0, + 0, 48, 0, 0, 0, 48, 48, 0, 48, 0, + 0, 0, 0, 450, 296, 0, 0, 48, 0, 48, + 48, 0, 48, 0, 48, 0, 0, 0, 0, 48, + 0, 48, 48, 48, 48, 0, 451, 0, 0, 48, + 0, 0, 0, 48, 0, 0, 48, 0, 0, 452, + 0, 0, 297, 453, 454, 48, 450, 0, 48, 455, + 48, 456, 457, 458, 459, 0, 0, 0, 0, 460, + 0, 0, 0, 461, 0, 0, 0, 0, 0, 451, + 0, 0, 0, 0, 48, 462, 48, 48, 463, 0, + 464, 0, 452, 0, 0, 0, 0, 454, 0, 0, + 0, 0, 455, 0, 456, 457, 458, 459, 0, 0, + 0, 0, 460, 0, 465, 0, 461, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 462, 0, + 0, 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 464, + 0, 0, 0, 0, 0, 0, 0, 465, }; protected static readonly short [] yyCheck = { 17, - 299, 17, 51, 17, 510, 68, 4, 20, 18, 300, - 6, 17, 512, 189, 233, 466, 87, 88, 289, 188, - 17, 59, 553, 298, 87, 88, 248, 337, 20, 92, - 319, 157, 486, 296, 770, 920, 330, 108, 352, 711, - 0, 713, 59, 570, 58, 47, 737, 578, 235, 1130, - 1131, 326, 0, 77, 268, 73, 1095, 256, 256, 77, - 0, 372, 59, 925, 352, 79, 63, 81, 256, 84, - 1216, 113, 256, 115, 87, 88, 325, 95, 256, 256, - 372, 256, 256, 268, 282, 757, 1232, 368, 760, 335, - 256, 256, 256, 268, 256, 108, 1177, 256, 113, 372, - 115, 256, 256, 256, 372, 256, 17, 368, 363, 172, - 17, 376, 256, 391, 17, 256, 314, 17, 429, 256, - 357, 191, 17, 256, 349, 350, 306, 17, 655, 200, - 201, 873, 257, 313, 409, 256, 414, 429, 277, 157, - 189, 157, 884, 157, 343, 367, 294, 358, 429, 386, - 428, 157, 17, 17, 368, 1090, 429, 294, 306, 17, - 157, 429, 17, 418, 429, 339, 17, 370, 429, 418, - 344, 374, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 429, 233, 248, 363, 200, 201, 1051, - 374, 262, 391, 381, 368, 256, 370, 260, 372, 340, - 374, 375, 376, 367, 429, 369, 256, 371, 422, 256, - 509, 430, 506, 372, 714, 414, 390, 288, 339, 381, - 418, 372, 224, 344, 363, 346, 400, 401, 372, 428, - 248, 352, 353, 229, 548, 253, 307, 422, 526, 413, - 418, 418, 375, 553, 431, 1391, 157, 422, 286, 262, - 157, 321, 418, 418, 157, 429, 420, 157, 296, 423, - 548, 324, 157, 418, 418, 418, 329, 157, 578, 286, - 418, 289, 1418, 268, 1010, 288, 294, 295, 349, 418, - 419, 276, 570, 353, 1430, 327, 1432, 300, 358, 286, - 308, 256, 157, 157, 307, 313, 256, 315, 315, 157, - 314, 319, 157, 318, 367, 368, 157, 322, 429, 257, - 256, 983, 327, 331, 332, 386, 387, 257, 315, 895, - 381, 337, 372, 363, 272, 372, 256, 854, 256, 277, - 256, 337, 356, 281, 1025, 262, 349, 1073, 356, 352, - 337, 256, 656, 414, 415, 376, 1385, 256, 296, 367, - 368, 414, 415, 416, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 1176, 436, 655, 363, 256, - 1451, 298, 256, 386, 387, 323, 341, 256, 418, 339, - 269, 430, 256, 367, 1195, 885, 404, 1272, 676, 1324, - 363, 440, 376, 256, 342, 349, 350, 286, 429, 1480, - 470, 414, 415, 256, 369, 257, 256, 367, 256, 698, - 864, 371, 358, 373, 374, 375, 376, 1352, 1353, 432, - 1355, 381, 485, 418, 487, 256, 1002, 372, 1004, 374, - 263, 1366, 1104, 446, 1369, 437, 438, 367, 256, 1111, - 432, 443, 256, 369, 372, 418, 376, 510, 363, 1384, - 263, 378, 379, 716, 446, 370, 266, 372, 325, 374, - 339, 370, 684, 526, 1136, 374, 480, 530, 264, 486, - 784, 256, 1283, 1408, 266, 429, 1287, 977, 424, 425, - 426, 427, 315, 370, 429, 369, 339, 374, 367, 486, - 508, 344, 510, 346, 512, 369, 784, 368, 568, 352, - 353, 1312, 315, 418, 314, 368, 569, 305, 522, 523, - 580, 374, 582, 526, 584, 343, 294, 21, 536, 369, - 368, 339, 314, 541, 367, 339, 374, 368, 414, 325, - 1202, 335, 343, 376, 526, 548, 367, 553, 369, 853, - 371, 372, 428, 374, 371, 376, 560, 553, 52, 367, - 272, 418, 851, 381, 339, 305, 553, 570, 429, 344, - 277, 346, 578, 391, 281, 375, 854, 352, 353, 587, - 588, 368, 578, 636, 296, 638, 429, 647, 368, 357, - 391, 578, 804, 375, 878, 363, 414, 418, 429, 420, - 1200, 369, 423, 420, 372, 373, 666, 343, 363, 725, - 428, 323, 369, 414, 349, 350, 373, 882, 386, 1140, - 372, 368, 374, 339, 1420, 1421, 634, 428, 344, 1200, - 346, 684, 640, 349, 350, 342, 352, 353, 256, 920, - 363, 363, 429, 1243, 418, 381, 369, 369, 701, 429, - 418, 272, 655, 421, 339, 391, 277, 1200, 374, 344, - 281, 346, 368, 418, 349, 350, 423, 352, 353, 372, - 357, 418, 1243, 676, 256, 296, 684, 429, 414, 367, - 1476, 742, 369, 371, 272, 372, 373, 305, 716, 374, - 698, 677, 428, 1137, 429, 418, 418, 256, 751, 386, - 1243, 980, 323, 992, 765, 391, 714, 272, 296, 1200, - 269, 719, 418, 429, 376, 418, 371, 1200, 373, 780, - 1200, 342, 341, 305, 711, 369, 713, 286, 414, 1200, - 783, 296, 420, 945, 421, 323, 376, 392, 393, 742, - 744, 1199, 1200, 748, 429, 381, 799, 1200, 6, 376, - 369, 804, 1243, 367, 762, 391, 764, 412, 323, 17, - 1243, 1219, 765, 1243, 768, 420, 770, 820, 423, 339, - 757, 779, 1243, 760, 344, 978, 346, 780, 414, 349, - 350, 784, 352, 353, 374, 1243, 401, 1245, 339, 828, - 1243, 799, 428, 374, 855, 371, 804, 805, 413, 807, - 1061, 59, 371, 1006, 373, 63, 1095, 339, 1108, 381, - 818, 819, 344, 414, 346, 1290, 367, 349, 350, 391, - 352, 353, 367, 394, 395, 376, 416, 428, 1303, 87, - 88, 376, 357, 836, 894, 416, 889, 1098, 891, 386, - 1140, 849, 414, 851, 897, 294, 379, 1322, 373, 306, - 108, 854, 855, 357, 836, 841, 313, 306, 866, 429, - 371, 386, 1303, 370, 1023, 873, 369, 374, 325, 373, - 923, 384, 1172, 1134, 339, 883, 1088, 885, 381, 344, - 357, 346, 386, 1373, 349, 350, 371, 352, 353, 950, - 418, 418, 945, 367, 370, 357, 373, 429, 374, 157, - 428, 363, 376, 388, 389, 398, 399, 369, 961, 386, - 372, 373, 374, 306, 389, 308, 368, 920, 418, 927, - 313, 929, 374, 931, 386, 367, 385, 256, 428, 381, - 368, 400, 325, 371, 376, 373, 374, 945, 369, 942, - 1149, 1001, 200, 201, 367, 1435, 1207, 950, 371, 390, - 373, 374, 367, 376, 392, 393, 418, 376, 381, 1125, - 942, 376, 367, 372, 429, 374, 952, 376, 954, 977, - 956, 376, 980, 372, 412, 374, 1254, 376, 373, 382, - 383, 1471, 420, 1261, 373, 423, 373, 376, 374, 376, - 376, 1272, 415, 396, 397, 381, 983, 1493, 1494, 370, - 371, 370, 418, 374, 262, 374, 1010, 354, 355, 1017, - 339, 1019, 370, 1021, 372, 344, 374, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 286, 369, - 288, 415, 372, 370, 371, 1088, 373, 374, 375, 368, - 371, 370, 300, 372, 1032, 374, 375, 376, 370, 307, - 372, 418, 374, 1061, 370, 384, 385, 315, 374, 256, - 389, 390, 392, 393, 394, 395, 418, 1075, 1076, 1073, - 277, 400, 401, 354, 355, 1083, 386, 387, 388, 337, - 1088, 371, 376, 373, 413, 376, 1125, 1095, 1127, 1089, - 1098, 349, 367, 367, 352, 369, 1385, 367, 364, 365, - 429, 371, 1108, 373, 374, 373, 376, 1115, 414, 415, - 1149, 381, 1108, 372, 1122, 374, 372, 1104, 374, 376, - 374, 1108, 376, 376, 1111, 1128, 1134, 368, 386, 387, - 371, 343, 373, 374, 1140, 349, 350, 1198, 1146, 1147, - 370, 1180, 372, 294, 1140, 415, 374, 294, 376, 1136, - 372, 392, 393, 1140, 372, 373, 414, 415, 367, 414, - 1199, 1200, 371, 376, 373, 374, 1172, 376, 364, 365, - 339, 412, 381, 390, 391, 344, 1172, 346, 1181, 420, - 1219, 1189, 423, 352, 353, 1172, 370, 370, 372, 372, - 375, 370, 1253, 372, 1247, 1198, 372, 1205, 374, 1207, - 372, 369, 374, 370, 1243, 372, 1245, 418, 1269, 1270, - 370, 374, 372, 376, 418, 1202, 374, 1277, 376, 374, - 374, 376, 376, 1093, 1094, 396, 397, 418, 486, 372, - 372, 1292, 376, 368, 1295, 374, 372, 294, 93, 372, - 1300, 294, 97, 98, 99, 100, 101, 102, 103, 104, - 1253, 1254, 374, 1257, 1314, 372, 372, 261, 1261, 374, - 372, 371, 376, 256, 375, 374, 1269, 1270, 526, 1272, - 294, 1331, 294, 1333, 381, 1278, 356, 372, 374, 381, - 284, 375, 374, 373, 418, 372, 374, 1290, 374, 1292, - 548, 374, 1295, 297, 376, 553, 374, 429, 302, 423, - 1303, 305, 372, 307, 1308, 309, 310, 311, 312, 374, - 372, 367, 570, 317, 0, 421, 343, 321, 373, 1322, - 578, 325, 372, 374, 1363, 294, 294, 374, 370, 333, - 371, 367, 336, 418, 338, 375, 256, 418, 256, 374, - 256, 1380, 256, 381, 280, 59, 256, 367, 343, 368, - 376, 372, 370, 376, 1393, 1394, 371, 374, 362, 423, - 374, 372, 370, 376, 347, 1373, 372, 1371, 367, 372, - 351, 381, 381, 256, 381, 256, 372, 1385, 376, 93, - 368, 1420, 1421, 97, 98, 99, 100, 101, 102, 103, - 104, 347, 374, 370, 1402, 61, 375, 655, 370, 65, - 66, 67, 0, 69, 70, 375, 367, 370, 74, 75, - 372, 348, 339, 368, 418, 81, 261, 83, 676, 85, - 374, 418, 374, 372, 90, 91, 418, 1435, 376, 348, - 368, 375, 367, 367, 367, 381, 368, 1476, 337, 284, - 1493, 1494, 371, 356, 374, 376, 301, 368, 114, 372, - 376, 368, 297, 711, 305, 713, 368, 302, 418, 418, - 418, 369, 307, 1471, 309, 310, 311, 312, 371, 371, - 367, 418, 317, 1477, 1478, 330, 321, 418, 371, 371, - 1484, 1485, 371, 381, 742, 1493, 1494, 373, 333, 371, - 367, 336, 371, 338, 381, 369, 371, 256, 374, 757, - 372, 372, 760, 373, 373, 372, 374, 765, 374, 374, - 372, 418, 376, 370, 418, 376, 371, 362, 418, 372, - 376, 381, 780, 418, 376, 372, 784, 367, 383, 384, - 385, 381, 368, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 372, - 381, 370, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 372, 368, 315, 263, 368, 371, 371, 0, - 0, 257, 286, 418, 372, 261, 372, 367, 372, 376, - 368, 376, 296, 0, 376, 368, 272, 301, 372, 255, - 372, 277, 258, 418, 370, 281, 854, 855, 284, 367, - 372, 376, 368, 368, 367, 376, 370, 418, 368, 418, - 296, 297, 368, 315, 376, 301, 302, 372, 376, 376, - 372, 307, 376, 309, 310, 311, 312, 372, 368, 367, - 372, 317, 298, 368, 368, 321, 372, 323, 367, 376, - 373, 263, 50, 12, 376, 311, 376, 333, 376, 335, - 336, 506, 338, 376, 376, 0, 342, 371, 256, 376, - 376, 376, 920, 261, 262, 51, 5, 1088, 1088, 383, - 384, 385, 836, 942, 388, 389, 362, 1245, 1219, 1425, - 1388, 1441, 368, 369, 1376, 676, 284, 1405, 1371, 1278, - 690, 857, 950, 1290, 853, 857, 857, 1243, 1309, 297, - 298, 1485, 1231, 1479, 302, 1398, 1478, 305, 1180, 307, - 1394, 309, 310, 311, 312, 1393, 1333, 1278, 526, 317, - 575, 1181, 878, 321, 828, 983, 799, 325, 804, 719, - 588, 367, 992, 684, 71, 333, 716, 333, 336, 398, - 338, 339, 399, 401, 400, 784, 344, 402, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 403, - 1172, 548, 1163, 1253, 362, 363, 1108, 157, 1053, 367, - 368, 979, 370, 371, 372, 373, 374, 375, 376, 0, - 378, 379, 1006, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 1076, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 482, 963, 416, 256, - 418, 1064, 420, 1137, 1066, 423, 1147, 524, 265, 422, - 267, 429, 899, 270, -1, 1249, -1, -1, 275, -1, - 834, -1, 279, -1, 833, -1, 1104, -1, -1, -1, - 1108, 288, -1, 1111, -1, -1, 522, -1, 295, -1, - -1, 575, -1, 300, -1, -1, -1, 304, -1, -1, - 1128, -1, -1, -1, -1, -1, -1, -1, 1136, 316, - -1, 318, 1140, -1, -1, 322, -1, -1, -1, -1, - -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, - 337, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 257, -1, 1172, -1, 261, -1, 263, -1, - 265, -1, 267, 1181, -1, 270, 363, 272, 273, -1, - 275, -1, 277, -1, 279, -1, 281, 282, 283, 284, - 1198, -1, 287, 288, 1202, -1, 0, -1, 293, 294, - 295, 296, 297, -1, -1, 300, 301, 302, -1, 304, - -1, 306, 307, 308, 309, 310, 311, 312, 313, -1, - 315, 316, 317, 318, -1, -1, 321, 322, 323, -1, - 325, 418, -1, -1, -1, 330, 331, -1, 333, 334, - -1, 336, 337, 338, -1, 1253, 1254, 342, -1, -1, - -1, -1, 716, 1261, -1, -1, -1, -1, -1, -1, - -1, 1269, 1270, -1, 1272, -1, -1, 362, -1, 364, - 365, -1, -1, 878, -1, -1, -1, -1, -1, -1, - -1, -1, 377, -1, 1292, 256, 257, 1295, -1, -1, - -1, -1, -1, 264, 265, 266, 267, 268, -1, 270, - 271, -1, 273, 274, 275, 276, 277, 278, 279, 280, - -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, - 291, 292, 0, 418, 295, -1, -1, -1, 299, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, - -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, - 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, - 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, - -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + 17, 300, 192, 17, 4, 511, 69, 20, 18, 52, + 301, 17, 513, 190, 249, 6, 20, 189, 290, 467, + 320, 85, 338, 234, 554, 88, 89, 17, 48, 60, + 93, 299, 158, 487, 331, 297, 919, 768, 60, 1095, + 713, 714, 571, 738, 236, 59, 1130, 1131, 78, 579, + 114, 0, 116, 256, 256, 1216, 74, 256, 268, 327, + 78, 114, 256, 116, 325, 268, 80, 256, 82, 256, + 60, 1232, 256, 325, 64, 88, 89, 353, 96, 924, + 60, 256, 17, 756, 17, 758, 256, 256, 256, 256, + 256, 256, 294, 1177, 294, 268, 109, 256, 282, 256, + 363, 256, 256, 335, 268, 343, 306, 367, 372, 376, + 173, 371, 276, 353, 94, 256, 372, 17, 98, 99, + 100, 101, 102, 103, 104, 105, 391, 656, 256, 256, + 314, 277, 322, 368, 370, 281, 256, 256, 374, 257, + 158, 158, 410, 256, 158, 372, 368, 190, 17, 414, + 269, 17, 158, 391, 256, 418, 343, 418, 0, 17, + 420, 363, 429, 17, 354, 429, 418, 286, 158, 359, + 339, 256, 17, 429, 294, 344, 414, 346, 17, 17, + 339, 256, 381, 352, 353, 344, 249, 346, 201, 202, + 428, 234, 17, 352, 353, 368, 342, 429, 261, 363, + 341, 256, 429, 368, 391, 225, 1051, 429, 894, 374, + 507, 510, 422, 381, 715, 372, 418, 0, 418, 422, + 431, 375, 1090, 158, 418, 158, 381, 414, 369, 418, + 1391, 249, 88, 89, 418, 363, 254, 339, 554, 230, + 432, 428, 370, 418, 372, 372, 374, 437, 418, 422, + 263, 418, 418, 109, 418, 319, 287, 1418, 158, 323, + 429, 374, 325, 579, 328, 287, 297, 330, 256, 1430, + 429, 1432, 290, 549, 256, 328, 289, 295, 296, 1010, + 277, 471, 367, 256, 369, 358, 371, 527, 301, 158, + 418, 309, 158, 368, 316, 308, 314, 287, 316, 374, + 158, 315, 320, 358, 158, 368, 369, 287, 257, 549, + 983, 262, 368, 158, 332, 333, 1002, 297, 1004, 158, + 158, 338, 302, 852, 263, 1176, 316, 357, 256, 1385, + 1025, 571, 338, 158, 256, 420, 256, 350, 423, 357, + 353, 1200, 1073, 372, 1195, 201, 202, 298, 338, 256, + 368, 369, 415, 416, 417, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 363, 1451, 256, 424, + 425, 426, 427, 429, 387, 388, 315, 256, 367, 569, + 369, 657, 370, 884, 1243, 367, 374, 405, 431, 1272, + 263, 581, 372, 583, 376, 585, 1480, 370, 441, 699, + 429, 374, 415, 416, 384, 385, 386, 263, 862, 389, + 390, 294, 256, 394, 395, 257, 656, 264, 438, 439, + 433, 418, 419, 486, 444, 488, 368, 378, 379, 433, + 272, 1104, 1283, 289, 447, 277, 1287, 677, 1111, 281, + 335, 369, 315, 447, 266, 349, 350, 369, 511, 369, + 685, 339, 308, 372, 296, 717, 1324, 266, 648, 368, + 339, 1312, 369, 1136, 527, 487, 368, 481, 531, 349, + 350, 349, 350, 256, 357, 976, 418, 667, 325, 367, + 363, 323, 368, 368, 1352, 1353, 369, 1355, 367, 372, + 373, 509, 314, 511, 350, 513, 340, 487, 1366, 418, + 342, 1369, 363, 386, 374, 314, 782, 570, 369, 523, + 524, 256, 369, 257, 527, 372, 1384, 272, 256, 537, + 429, 272, 277, 527, 542, 429, 281, 429, 363, 1202, + 363, 387, 388, 376, 369, 418, 549, 554, 421, 305, + 1408, 296, 782, 429, 429, 296, 416, 561, 554, 429, + 849, 429, 372, 375, 374, 272, 339, 418, 571, 415, + 416, 372, 579, 374, 554, 363, 375, 802, 323, 363, + 588, 589, 323, 579, 637, 851, 639, 368, 343, 296, + 877, 1420, 1421, 418, 367, 418, 429, 342, 371, 579, + 373, 374, 375, 376, 339, 272, 576, 418, 381, 344, + 726, 346, 371, 374, 1200, 305, 323, 352, 353, 429, + 1140, 369, 852, 881, 341, 373, 381, 635, 429, 296, + 418, 343, 685, 641, 418, 256, 391, 418, 919, 367, + 1200, 369, 1200, 371, 372, 369, 374, 1476, 376, 702, + 256, 269, 369, 656, 21, 416, 323, 1243, 62, 414, + 418, 420, 66, 67, 68, 1200, 70, 71, 286, 381, + 428, 75, 76, 428, 677, 423, 376, 685, 82, 391, + 84, 261, 86, 1243, 305, 1243, 53, 91, 92, 979, + 418, 699, 420, 1137, 748, 423, 717, 678, 751, 305, + 376, 709, 414, 992, 284, 1200, 357, 715, 1243, 357, + 381, 115, 720, 893, 339, 376, 428, 297, 1200, 944, + 391, 369, 302, 1200, 372, 373, 381, 307, 781, 309, + 310, 311, 312, 713, 714, 386, 391, 317, 386, 742, + 744, 321, 367, 414, 797, 977, 386, 717, 1243, 802, + 367, 376, 760, 333, 762, 371, 336, 428, 338, 414, + 763, 1243, 766, 372, 768, 818, 1243, 391, 373, 777, + 371, 376, 414, 421, 1006, 778, 756, 414, 758, 782, + 389, 390, 362, 1290, 364, 365, 428, 357, 368, 797, + 414, 428, 367, 826, 802, 803, 1303, 805, 418, 1061, + 339, 376, 1108, 373, 428, 344, 1095, 346, 816, 817, + 349, 350, 339, 352, 353, 1322, 386, 344, 401, 346, + 294, 1001, 349, 350, 370, 352, 353, 6, 374, 379, + 413, 834, 306, 369, 1140, 888, 1098, 890, 17, 847, + 834, 849, 367, 896, 370, 381, 357, 374, 374, 852, + 853, 376, 256, 382, 383, 259, 389, 865, 839, 1199, + 1200, 1023, 373, 1088, 872, 1303, 1172, 396, 397, 922, + 398, 399, 1134, 339, 882, 386, 884, 357, 344, 1219, + 346, 60, 1373, 349, 350, 64, 352, 353, 418, 872, + 429, 944, 306, 373, 308, 299, 742, 306, 428, 313, + 883, 384, 429, 1243, 313, 1245, 386, 960, 312, 88, + 89, 325, 385, 371, 339, 373, 919, 763, 926, 344, + 928, 346, 930, 373, 349, 350, 376, 352, 353, 371, + 109, 373, 778, 306, 392, 393, 944, 368, 941, 371, + 313, 373, 390, 374, 1435, 1207, 949, 941, 1149, 374, + 381, 367, 325, 400, 412, 367, 373, 367, 1125, 372, + 376, 374, 420, 429, 376, 423, 376, 369, 976, 261, + 951, 979, 953, 367, 955, 367, 339, 354, 355, 158, + 1471, 344, 376, 346, 376, 376, 349, 350, 339, 352, + 353, 1272, 284, 344, 372, 346, 374, 1493, 1494, 418, + 0, 352, 353, 983, 429, 297, 1010, 853, 415, 1017, + 302, 1019, 372, 1021, 374, 307, 376, 309, 310, 311, + 312, 357, 201, 202, 1254, 317, 372, 363, 374, 321, + 376, 1261, 374, 369, 376, 1088, 372, 373, 374, 381, + 371, 333, 1032, 370, 336, 367, 338, 374, 418, 371, + 386, 373, 374, 1061, 376, 354, 355, 370, 371, 381, + 373, 374, 375, 386, 387, 388, 429, 1075, 1076, 1073, + 362, 256, 364, 365, 418, 1083, 368, 370, 371, 483, + 1088, 374, 418, 374, 263, 376, 370, 1095, 372, 1089, + 1098, 370, 1125, 415, 1127, 374, 1385, 1277, 370, 376, + 372, 1108, 374, 949, 374, 277, 376, 1115, 287, 370, + 289, 372, 1108, 374, 1122, 370, 1149, 372, 376, 523, + 1300, 370, 301, 372, 1104, 1128, 1134, 373, 1108, 308, + 370, 1111, 372, 1140, 1314, 367, 367, 316, 1146, 1147, + 371, 376, 373, 374, 1140, 376, 376, 1180, 367, 372, + 381, 1331, 371, 1333, 373, 374, 1136, 376, 294, 338, + 1140, 372, 381, 374, 294, 1172, 1199, 1200, 372, 376, + 374, 350, 343, 370, 353, 372, 1172, 370, 1181, 372, + 374, 1189, 376, 374, 415, 376, 1219, 393, 394, 395, + 396, 374, 1172, 376, 1247, 1198, 374, 1205, 376, 1207, + 414, 415, 364, 365, 349, 350, 372, 373, 387, 388, + 1243, 414, 1245, 364, 365, 369, 1093, 1094, 391, 392, + 418, 94, 1202, 397, 398, 98, 99, 100, 101, 102, + 103, 104, 105, 375, 418, 372, 415, 416, 418, 368, + 372, 376, 371, 368, 373, 374, 372, 374, 372, 372, + 1253, 1254, 372, 1257, 372, 372, 294, 257, 1261, 294, + 374, 261, 372, 392, 393, 372, 1269, 1270, 374, 1272, + 372, 376, 272, 371, 256, 1278, 375, 277, 374, 294, + 294, 281, 356, 412, 284, 372, 381, 1290, 374, 1292, + 375, 420, 1295, 0, 423, 374, 296, 297, 373, 418, + 1303, 301, 302, 381, 1308, 372, 374, 307, 487, 309, + 310, 311, 312, 374, 374, 374, 429, 317, 256, 1322, + 376, 321, 423, 323, 372, 374, 367, 421, 372, 372, + 1363, 373, 343, 333, 368, 335, 336, 371, 338, 373, + 374, 374, 342, 294, 294, 374, 418, 1380, 527, 370, + 367, 371, 1198, 418, 381, 256, 375, 256, 392, 393, + 1393, 1394, 362, 256, 374, 1373, 256, 1371, 368, 369, + 549, 372, 280, 256, 367, 554, 368, 1385, 412, 343, + 376, 372, 370, 423, 371, 374, 420, 1420, 1421, 423, + 376, 374, 571, 372, 1402, 376, 370, 372, 347, 372, + 579, 339, 367, 381, 351, 381, 344, 1253, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 381, + 256, 256, 376, 1269, 1270, 368, 372, 1435, 347, 302, + 368, 370, 370, 374, 372, 375, 374, 375, 376, 0, + 1493, 1494, 370, 1476, 375, 367, 1292, 370, 372, 1295, + 348, 368, 390, 374, 374, 418, 372, 418, 331, 339, + 348, 376, 368, 1471, 375, 368, 376, 367, 381, 356, + 367, 367, 337, 1477, 1478, 305, 371, 656, 372, 381, + 1484, 1485, 374, 368, 368, 1493, 1494, 368, 418, 418, + 369, 429, 418, 371, 371, 367, 371, 371, 677, 372, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 376, 384, 385, 386, 418, 371, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 418, 381, 713, 714, 373, 371, 367, 371, + 381, 369, 373, 265, 371, 267, 372, 372, 270, 256, + 272, 374, 373, 275, 374, 262, 374, 279, 256, 374, + 418, 372, 376, 742, 372, 370, 288, 418, 418, 376, + 376, 372, 418, 295, 376, 372, 367, 756, 300, 758, + 302, 381, 304, 372, 763, 368, 381, 294, 370, 368, + 315, 298, 372, 263, 316, 371, 318, 371, 368, 778, + 322, 323, 0, 782, 372, 372, 0, 367, 330, 331, + 376, 376, 334, 368, 372, 337, 0, 0, 368, 376, + 372, 372, 418, 370, 367, 370, 368, 376, 368, 367, + 376, 372, 339, 418, 507, 368, 372, 344, 372, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 368, 376, 376, 418, 376, 363, 376, 372, 368, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 367, 378, 379, 852, 853, 382, 383, 384, 385, 386, + 372, 368, 389, 390, 372, 368, 376, 394, 395, 396, + 397, 398, 399, 400, 401, 256, 418, 373, 367, 376, + 261, 262, 376, 576, 376, 376, 413, 315, 376, 416, + 376, 418, 376, 420, 376, 263, 423, 51, 12, 52, + 5, 941, 429, 284, 1088, 834, 1088, 1245, 1219, 1425, + 1388, 1441, 677, 294, 1278, 1376, 297, 298, 1371, 1405, + 919, 302, 1290, 855, 305, 1485, 307, 855, 309, 310, + 311, 312, 855, 1243, 691, 1309, 317, 1479, 851, 1231, + 321, 1393, 1398, 1394, 325, 1478, 1333, 720, 1278, 1180, + 949, 826, 333, 527, 797, 336, 1181, 338, 339, 589, + 877, 368, 992, 344, 802, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 685, 72, 334, 717, + 399, 362, 363, 256, 983, 400, 367, 368, 401, 370, + 371, 372, 373, 374, 375, 376, 402, 378, 379, 403, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 0, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 404, 549, 416, 1163, 418, 1253, 420, + 1172, 1108, 423, 158, 1053, 1006, 1066, 978, 429, 1064, + 782, 1076, 256, 962, 1137, 525, 898, 423, 262, 1147, + 1249, -1, -1, -1, 832, -1, 339, 831, -1, -1, + -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, + 294, -1, -1, -1, 298, 368, -1, 370, -1, 372, + -1, 374, 375, 376, -1, 1104, -1, -1, -1, 1108, + -1, -1, 1111, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1128, + -1, -1, -1, -1, 285, 339, -1, 1136, -1, -1, + 344, 1140, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, 429, -1, -1, 363, + -1, -1, -1, 367, 368, -1, 370, 371, 372, -1, + 374, 375, 376, 1172, 378, 379, 327, 0, 382, 383, + 384, 385, 1181, -1, 877, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, 1198, + -1, -1, -1, 1202, -1, -1, -1, -1, -1, 413, + -1, -1, 416, -1, 418, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 429, 377, 378, 379, 380, + -1, 382, 383, 384, 385, 386, 387, 388, 389, -1, + -1, 392, 393, 394, 395, 396, 397, 398, 399, -1, + -1, -1, -1, -1, 1253, 1254, -1, -1, -1, -1, + -1, -1, 1261, -1, -1, -1, 256, 257, -1, -1, + 1269, 1270, -1, 1272, 264, 265, 266, 267, 268, -1, + 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, + 280, -1, -1, 1292, -1, 285, 1295, 287, 288, 289, + 290, 291, 292, -1, -1, 295, 0, -1, -1, 299, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, + -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, + 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, 367, 368, -1, + -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, + 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 417, 418, 419, 420, - -1, 422, 256, 257, -1, -1, -1, -1, 429, -1, - 264, 265, 266, 267, 268, -1, 270, 271, 0, 273, - 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, - -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, - -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, - -1, -1, 376, 377, 378, 379, 380, -1, 256, -1, - 384, -1, 386, 261, 262, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, 284, -1, -1, -1, - -1, -1, -1, 417, 418, 419, 420, -1, 422, 297, - 298, -1, -1, -1, 302, 429, -1, 305, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, -1, 321, -1, -1, -1, 325, -1, -1, - -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, - 338, 339, -1, -1, -1, -1, 344, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - -1, -1, -1, -1, 362, 363, -1, -1, -1, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, - 378, 379, -1, -1, 382, 383, 384, 385, 386, -1, - -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, - 398, 399, 400, 401, 256, -1, -1, -1, 0, 261, - 262, -1, -1, -1, -1, 413, -1, -1, 416, -1, - 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, - -1, 429, 284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 297, 298, -1, -1, -1, - 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, - -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, - 362, 363, 0, -1, -1, 367, 368, 369, 370, 371, - 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, - 382, 383, 384, 385, 256, -1, -1, 389, 390, 261, - 262, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, -1, -1, 417, 418, 419, + 420, -1, 422, 256, 257, -1, -1, -1, -1, 429, + -1, 264, 265, 266, 267, 268, -1, 270, 271, -1, + 273, 274, 275, 276, 277, 278, 279, -1, -1, 0, + -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, + -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 314, -1, 316, -1, 318, 319, -1, -1, 322, + -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, -1, 337, -1, -1, 340, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, 371, -1, + -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, + -1, 384, 256, 386, -1, -1, -1, 261, 262, 392, + 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, + 284, -1, -1, -1, 417, 418, 419, 420, -1, 422, + 294, -1, -1, 297, 298, -1, 429, -1, 302, -1, + -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, + -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, + -1, -1, 336, -1, 338, 339, -1, -1, -1, -1, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, -1, -1, -1, -1, 362, 363, + -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, + 384, 385, 386, -1, -1, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, -1, -1, 256, -1, -1, -1, 413, + 261, 262, 416, -1, 418, -1, 420, -1, -1, 423, + -1, -1, -1, -1, -1, 429, 0, -1, -1, -1, + -1, -1, -1, 284, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 294, -1, -1, 297, 298, -1, -1, + -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, + 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, + -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + -1, 362, 363, -1, -1, -1, 367, 368, 369, 370, + 371, 372, -1, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, 256, -1, -1, 389, 390, + 261, 262, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 413, 284, -1, 416, -1, 418, -1, 420, + -1, -1, 423, 294, -1, -1, 297, 298, 429, -1, + -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, + 311, 312, -1, 0, -1, -1, 317, -1, -1, -1, + 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, + -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, + -1, 362, 363, -1, -1, -1, 367, 368, 369, 370, + 371, 372, -1, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, + -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, 256, -1, -1, -1, -1, 261, 262, -1, + -1, -1, 413, -1, -1, 416, -1, 418, -1, 420, + -1, -1, 423, -1, -1, -1, 0, -1, 429, -1, + 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 294, -1, -1, 297, 298, -1, -1, -1, 302, -1, + -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, + -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, + -1, -1, 336, -1, 338, 339, -1, -1, -1, 0, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, -1, 362, 363, + -1, -1, -1, 367, 368, -1, 370, 371, 372, -1, + 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, 413, + -1, -1, 416, -1, 418, -1, -1, -1, -1, -1, + 257, -1, -1, -1, 261, 429, 263, -1, 265, -1, + 267, -1, -1, 270, -1, 272, 273, -1, 275, -1, + 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, + 287, 288, -1, -1, -1, -1, 293, 294, 295, 296, + 297, -1, -1, 300, 301, 302, -1, 304, -1, 306, + 307, 308, 309, 310, 311, 312, 313, 0, 315, 316, + 317, 318, -1, -1, 321, 322, 323, -1, 325, -1, + -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, + 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, 284, -1, 416, -1, 418, -1, 420, -1, - -1, 423, -1, -1, -1, 297, 298, 429, -1, -1, - 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, - -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, - 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, - 372, -1, 374, 375, 376, -1, 378, 379, 0, -1, - 382, 383, 384, 385, 256, -1, -1, 389, 390, 261, - 262, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 362, -1, 364, 365, -1, + -1, -1, 256, 257, -1, -1, -1, 261, -1, -1, + 377, 265, -1, 267, -1, -1, 270, -1, 272, 273, + -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, 0, -1, -1, 293, + -1, 295, 296, 297, -1, -1, 300, 301, 302, -1, + 304, 418, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, -1, 257, 321, 322, 323, + 261, -1, -1, -1, -1, -1, 330, 331, -1, 333, + 334, 272, 336, 337, 338, -1, 277, -1, 342, -1, + 281, -1, -1, 284, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, -1, 296, 297, -1, 362, -1, + 301, 302, -1, -1, 368, 369, 307, -1, 309, 310, + 311, 312, -1, 377, -1, -1, 317, -1, -1, -1, + 321, -1, 323, -1, -1, 257, -1, -1, -1, 261, + -1, -1, 333, -1, 335, 336, 0, 338, -1, -1, + 272, 342, -1, -1, -1, 277, -1, -1, -1, 281, + -1, -1, 284, -1, 418, -1, -1, -1, -1, -1, + -1, 362, -1, -1, 296, 297, -1, -1, 369, 301, + 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, 0, -1, 317, -1, -1, -1, 321, + -1, 323, -1, -1, 257, -1, -1, -1, 261, -1, + -1, 333, -1, -1, 336, -1, 338, -1, -1, 272, + 342, -1, -1, -1, 277, -1, -1, -1, 281, -1, + -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, + 362, -1, -1, 296, 297, -1, 368, 369, 301, 302, + 261, -1, 263, -1, 307, -1, 309, 310, 311, 312, + 0, -1, -1, -1, 317, -1, -1, -1, 321, -1, + 323, -1, -1, 284, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 297, -1, -1, 342, + -1, 302, -1, 257, -1, -1, 307, 261, 309, 310, + 311, 312, -1, 0, 315, -1, 317, -1, 272, 362, + 321, -1, -1, 277, -1, 368, 369, 281, -1, -1, + 284, -1, 333, -1, -1, 336, -1, 338, -1, -1, + -1, -1, 296, 297, -1, -1, -1, 301, 302, -1, + -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, 362, -1, 317, -1, -1, 257, 321, -1, 323, + 261, -1, -1, -1, -1, -1, -1, -1, -1, 333, + -1, 272, 336, -1, 338, -1, 277, -1, 342, -1, + 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 296, 297, -1, 362, -1, + 301, 302, -1, 257, -1, 369, 307, 261, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, 272, -1, + 321, -1, 323, 277, -1, -1, -1, 281, -1, -1, + 284, -1, 333, -1, -1, 336, -1, 338, -1, -1, + -1, 342, 296, 297, -1, -1, -1, 301, 302, -1, + 257, -1, -1, 307, 261, 309, 310, 311, 312, -1, + -1, 362, -1, 317, -1, 272, -1, 321, -1, 323, + 277, -1, -1, -1, 281, -1, -1, 284, -1, 333, + -1, -1, 336, -1, 338, -1, -1, -1, 342, 296, + 297, -1, -1, -1, 301, 302, -1, -1, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, 362, -1, + 317, -1, -1, -1, 321, -1, 323, 257, -1, -1, + -1, 261, -1, -1, -1, -1, 333, -1, -1, 336, + -1, 338, 272, -1, -1, 342, -1, 277, -1, -1, + -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 362, 296, 297, -1, -1, + 257, 301, 302, -1, 261, -1, -1, 307, -1, 309, + 310, 311, 312, -1, -1, 272, -1, 317, -1, -1, + 277, 321, -1, 323, 281, -1, -1, 284, -1, -1, + -1, -1, -1, 333, -1, -1, 336, -1, 338, 296, + 297, -1, 342, -1, 301, 302, -1, -1, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, + 317, -1, 362, -1, 321, -1, 323, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 333, -1, 256, 336, + -1, 338, -1, -1, -1, 342, 264, 265, 266, 267, + -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, + 278, 279, -1, -1, -1, 362, -1, 285, -1, 287, + 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, + -1, 299, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, + 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, + -1, -1, 340, 341, -1, 256, 344, 345, -1, -1, + -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, + -1, -1, -1, 371, -1, -1, -1, -1, 376, 377, + 378, 379, 380, -1, -1, -1, 384, 298, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, 284, -1, 416, -1, 418, -1, 420, -1, - -1, 423, -1, -1, -1, 297, 298, 429, -1, -1, - 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, + -1, 256, -1, -1, -1, -1, -1, 262, -1, 417, + 418, 419, 420, -1, -1, -1, -1, -1, 339, -1, + -1, 429, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, -1, -1, -1, + -1, -1, 363, 298, -1, -1, -1, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, 256, -1, -1, 418, -1, 420, + 262, -1, 423, -1, -1, -1, -1, -1, 429, -1, + -1, -1, -1, 368, -1, -1, 371, -1, 373, 374, + -1, -1, -1, 378, 379, -1, -1, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 298, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 412, 413, -1, + -1, -1, -1, -1, -1, 420, -1, -1, 423, -1, + -1, -1, -1, -1, 429, -1, -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, 256, -1, - 362, 363, -1, -1, 262, 367, 368, -1, 370, 371, - 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, - -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, - 298, -1, -1, -1, -1, -1, 0, -1, -1, -1, - -1, 413, -1, -1, 416, -1, 418, -1, -1, -1, + 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 256, 378, 379, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, -1, 256, -1, -1, -1, -1, 420, 262, -1, -1, -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - -1, -1, -1, -1, -1, 363, 256, -1, -1, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, - 378, 379, -1, -1, 382, 383, 384, 385, 386, -1, - -1, 389, 390, -1, -1, 0, 394, 395, 396, 397, - 398, 399, 400, 401, 256, -1, -1, -1, -1, -1, - 262, -1, -1, -1, -1, 413, -1, -1, 416, -1, - 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, -1, -1, -1, 298, -1, -1, 339, - -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, - 370, 0, 372, -1, 374, 375, 376, 339, -1, -1, - -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, - -1, 363, -1, -1, -1, 367, 368, -1, 370, 371, - 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, - 382, 383, 384, 385, -1, -1, -1, 389, 390, 429, - -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, - -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, - -1, 413, 256, 257, 416, -1, 418, 261, -1, -1, - -1, 265, -1, 267, -1, -1, 270, 429, 272, 273, - -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, - 284, -1, -1, 287, 288, -1, -1, -1, 0, 293, - -1, 295, 296, 297, -1, -1, 300, 301, 302, -1, - 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, - -1, -1, -1, -1, -1, -1, 330, 331, -1, 333, - 334, 0, 336, 337, 338, -1, -1, -1, 342, -1, - -1, -1, 257, -1, -1, -1, 261, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, 362, -1, - -1, -1, 277, -1, 368, 369, 281, -1, -1, 284, - -1, -1, -1, 377, 0, -1, -1, -1, -1, -1, - -1, 296, 297, -1, -1, 257, 301, 302, -1, 261, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, - -1, -1, 284, -1, 418, -1, -1, 0, 333, -1, - 335, 336, -1, 338, 296, 297, -1, 342, 257, 301, - 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 272, -1, 317, -1, 362, 277, 321, - -1, 323, 281, -1, 369, 284, -1, -1, -1, -1, - 0, 333, -1, -1, 336, -1, 338, 296, 297, -1, - 342, -1, 301, 302, -1, -1, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, - 362, -1, 321, -1, 323, -1, 368, 369, -1, -1, - -1, -1, 257, -1, 333, -1, 261, 336, -1, 338, - -1, -1, -1, 342, -1, -1, -1, 272, -1, -1, - -1, -1, 277, -1, -1, -1, 281, -1, -1, 284, - -1, -1, -1, 362, -1, -1, -1, -1, -1, 368, - 369, 296, 297, -1, -1, 257, 301, 302, -1, 261, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, - -1, -1, 284, -1, -1, -1, -1, -1, 333, -1, - -1, 336, -1, 338, 296, 297, -1, 342, 257, 301, - 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 272, -1, 317, -1, 362, 277, 321, - -1, 323, 281, -1, 369, 284, -1, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, - 342, 257, 301, 302, -1, 261, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, - 362, 277, 321, -1, 323, 281, -1, -1, 284, -1, - -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 296, 297, -1, 342, 257, 301, 302, -1, 261, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, - -1, 317, -1, 362, 277, 321, -1, 323, 281, -1, - -1, 284, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 296, 297, -1, 342, 257, 301, 302, - -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, 272, -1, 317, -1, 362, 277, 321, -1, - 323, 281, -1, -1, 284, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 296, 297, -1, 342, - -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, 362, - -1, 321, -1, 323, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 333, -1, 256, 336, -1, 338, -1, - -1, -1, 342, 264, 265, 266, 267, -1, -1, 270, - 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, - -1, -1, 362, -1, 285, -1, 287, 288, 289, 290, - 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, - -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, - -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, - 341, -1, 256, 344, 345, -1, -1, -1, 262, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, - 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, - -1, -1, -1, 384, 298, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, -1, -1, 262, -1, 417, 418, 419, 420, - -1, -1, -1, -1, -1, 339, -1, -1, 429, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 298, -1, -1, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, + 262, 372, -1, 374, 375, 376, 339, -1, -1, -1, + -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 367, 368, 298, 370, 371, 372, + 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 429, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, -1, 256, -1, -1, -1, -1, 420, 262, -1, + 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, + -1, 363, -1, -1, -1, -1, -1, 369, -1, 371, + 372, 373, 374, -1, 376, -1, 378, 379, -1, 381, + 382, 383, 384, 385, 298, 387, 388, 389, 390, -1, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, -1, -1, -1, -1, 418, -1, 420, -1, + -1, 423, -1, -1, -1, 339, -1, 429, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, 363, - 298, -1, -1, -1, 368, 369, 370, 371, 372, 373, + 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - -1, 256, -1, -1, 418, -1, 420, 262, -1, 423, - -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, - 368, -1, -1, 371, -1, 373, 374, -1, -1, -1, - 378, 379, -1, -1, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 298, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 412, 413, -1, -1, -1, -1, - -1, -1, 420, -1, -1, 423, -1, -1, -1, -1, - -1, 429, -1, 285, 339, -1, -1, -1, -1, 344, + -1, 256, 256, -1, -1, -1, 420, 262, -1, 423, + -1, 265, -1, 267, -1, 429, 270, -1, -1, -1, + -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, + -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, 298, -1, -1, 300, -1, -1, -1, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, -1, -1, -1, 322, -1, + -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, + 334, -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 256, 378, 379, 327, 381, 382, 383, 384, + 355, 356, -1, -1, -1, -1, -1, -1, -1, 363, + -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 256, -1, -1, -1, -1, 420, 262, -1, -1, -1, - -1, -1, -1, -1, 429, 377, 378, 379, 380, -1, - 382, 383, 384, 385, 386, 387, 388, 389, -1, -1, - 392, 393, 394, 395, 396, 397, 398, 399, -1, -1, - -1, -1, 298, -1, -1, 339, -1, -1, -1, -1, - 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, -1, 368, -1, 370, 262, 372, -1, - 374, 375, 376, 339, -1, -1, -1, -1, 344, -1, + 256, 256, -1, -1, 418, 420, 262, -1, 423, -1, + 265, -1, 267, -1, 429, 270, -1, -1, -1, -1, + 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, + -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, 298, -1, -1, 300, -1, -1, -1, 304, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, + -1, -1, -1, -1, -1, 330, 331, -1, -1, 334, + -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 367, 368, 298, 370, 371, 372, 373, 374, 375, + -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 429, 392, 393, 394, 395, + 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 256, - -1, -1, -1, -1, 420, 262, -1, 423, -1, -1, - -1, -1, -1, 429, -1, -1, -1, -1, 363, -1, - -1, -1, -1, -1, 369, -1, 371, 372, 373, 374, - -1, 376, -1, 378, 379, -1, 381, 382, 383, 384, - 385, 298, 387, 388, 389, 390, -1, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, 418, -1, 420, -1, -1, 423, -1, - -1, -1, 339, -1, 429, -1, -1, 344, -1, 346, + 256, -1, -1, 418, 420, 262, -1, 423, -1, 265, + -1, 267, -1, 429, 270, -1, -1, -1, -1, 275, + -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, + -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, + -1, 298, -1, -1, 300, -1, -1, -1, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, -1, 318, -1, -1, -1, 322, -1, -1, -1, + -1, -1, -1, -1, 330, 331, -1, -1, 334, -1, + -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, - -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, + -1, 378, -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, -1, 256, 256, - -1, -1, -1, 420, 262, -1, 423, -1, 265, -1, - 267, -1, 429, 270, -1, -1, -1, -1, 275, -1, - -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, - -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, - 298, -1, -1, 300, -1, -1, -1, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, - -1, 318, -1, -1, -1, 322, -1, -1, -1, -1, - -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, - 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 407, 408, 409, 410, 411, 412, 413, -1, 256, -1, + 261, -1, 418, 420, 262, -1, 423, -1, -1, -1, + -1, -1, 429, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 284, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 297, -1, -1, -1, + 298, 302, -1, -1, 305, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, + 321, 256, -1, -1, 325, -1, -1, 262, -1, -1, + -1, 266, 333, -1, -1, 336, -1, 338, -1, -1, + -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, + -1, 362, -1, 298, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, 314, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, + 388, 389, 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, -1, 256, 256, -1, - -1, 418, 420, 262, -1, 423, -1, 265, -1, 267, - -1, 429, 270, -1, -1, -1, -1, 275, -1, -1, - -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, 298, - -1, -1, 300, -1, -1, -1, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, -1, -1, -1, 322, -1, -1, -1, -1, -1, - -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, - -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, + 408, 409, 410, 411, 256, 413, -1, 418, -1, -1, + 262, -1, 357, -1, -1, -1, -1, -1, 363, -1, + -1, 429, -1, -1, 369, 370, 371, 372, 373, 374, + 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 298, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, 418, -1, 420, -1, -1, 423, -1, + -1, -1, -1, -1, 429, -1, -1, 339, -1, -1, + -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, 256, -1, + -1, -1, -1, -1, 262, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, + 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 256, 429, -1, -1, + -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, + -1, 389, 390, -1, -1, -1, 394, 395, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + 256, 429, -1, -1, -1, -1, 262, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, + 400, 401, 298, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, 429, + -1, -1, -1, -1, 262, -1, -1, -1, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, -1, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 298, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, 394, 395, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, 394, 395, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, 394, 395, 396, 397, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, 396, 397, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + -1, -1, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + -1, -1, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, -1, -1, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, -1, 385, + -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, 385, -1, -1, -1, -1, + 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, -1, 385, -1, -1, -1, -1, 390, -1, + 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 390, -1, 256, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, 256, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, 262, -1, -1, -1, 266, -1, -1, + -1, -1, 390, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 401, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 413, -1, -1, -1, 298, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, 429, 374, 375, 376, 314, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 401, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, -1, -1, -1, -1, -1, -1, 357, -1, + -1, -1, -1, -1, 363, -1, -1, 429, -1, -1, + 369, -1, 371, -1, 373, -1, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, -1, 256, 256, -1, -1, - 418, 420, 262, -1, 423, -1, 265, -1, 267, -1, - 429, 270, -1, -1, -1, -1, 275, -1, -1, -1, - 279, -1, -1, -1, -1, -1, -1, -1, -1, 288, - -1, -1, -1, -1, -1, -1, 295, -1, 298, -1, - -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, - -1, -1, -1, 322, -1, -1, -1, -1, -1, -1, - -1, 330, 331, -1, -1, 334, -1, -1, 337, 339, - -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, - 370, 371, 372, 373, 374, 375, 376, -1, 378, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, -1, 256, -1, 261, -1, 418, - 420, 262, -1, 423, -1, -1, -1, -1, -1, 429, + 409, 410, 411, 412, 413, -1, -1, 256, -1, 418, + -1, 420, -1, -1, 423, 264, 265, 266, 267, -1, + 429, 270, 271, -1, 273, 274, 275, 276, 277, 278, + 279, -1, -1, -1, -1, -1, 285, -1, 287, 288, + 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, + 299, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, + 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, + -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 284, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 297, -1, -1, -1, 298, 302, -1, - -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, -1, 321, 256, -1, - -1, 325, -1, -1, 262, -1, -1, -1, 266, 333, - -1, -1, 336, -1, 338, -1, -1, -1, 339, -1, - -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, 362, -1, - 298, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, 314, 378, 379, -1, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 256, 413, -1, 418, -1, -1, 262, -1, 357, - -1, -1, -1, -1, -1, 363, -1, -1, 429, -1, - -1, 369, 370, 371, 372, 373, 374, 375, 376, -1, - 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 298, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, - 418, -1, 420, -1, -1, 423, -1, -1, -1, -1, - -1, 429, -1, -1, 339, -1, -1, -1, -1, 344, - -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, 256, -1, -1, -1, -1, - -1, 262, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, - 385, 386, 387, 388, 389, 390, -1, -1, -1, 394, - 395, 396, 397, 398, 399, 400, 401, 298, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 413, -1, + 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, + -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 256, 429, -1, -1, -1, -1, 262, - -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 298, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, 256, 429, -1, - -1, -1, -1, 262, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, - 383, 384, 385, -1, -1, -1, 389, 390, -1, -1, - -1, 394, 395, 396, 397, 398, 399, 400, 401, 298, + -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, + 419, 420, 264, 265, 266, 267, -1, -1, 270, 271, + -1, 273, 274, 275, 276, 277, 278, 279, -1, -1, + -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, + 292, -1, -1, 295, -1, -1, -1, 299, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, + 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, -1, 337, -1, -1, 340, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, + -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, 429, -1, -1, -1, - -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 298, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, - 379, -1, -1, 382, 383, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, - 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, 394, - 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, - -1, -1, 389, 390, -1, 256, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, -1, -1, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, - 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, -1, -1, 396, 397, 398, 399, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, - -1, 396, 397, 398, 399, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, - -1, -1, 389, 390, -1, 256, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, -1, -1, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, -1, -1, -1, -1, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, -1, -1, -1, -1, 398, 399, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, 385, -1, - -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, -1, -1, -1, - -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, 385, -1, -1, -1, -1, 390, - -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, 385, -1, -1, -1, -1, 390, -1, 256, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, 256, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 390, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 401, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 413, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, 429, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 262, 390, - -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 298, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - 314, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, + -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, + 265, 266, 267, -1, -1, 270, 271, -1, 273, 274, + 275, 276, 277, 278, 279, -1, -1, -1, -1, -1, + 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, + 295, -1, -1, -1, 299, 300, -1, 302, 303, 304, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, + -1, 316, -1, 318, 319, -1, -1, 322, -1, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, -1, 337, -1, -1, 340, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, + -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, + -1, -1, 417, 418, 419, 420, 264, 265, 266, 267, + -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, + 278, 279, -1, -1, -1, -1, -1, 285, -1, 287, + 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, + -1, 299, 300, -1, 302, 303, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, + 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, + -1, -1, 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 357, -1, -1, -1, -1, -1, 363, - -1, -1, -1, -1, -1, 369, 429, 371, -1, 373, - -1, 375, 376, -1, 378, 379, -1, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - -1, -1, 256, -1, 418, -1, 420, -1, -1, 423, - 264, 265, 266, 267, -1, 429, 270, 271, -1, 273, - 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, - -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, - -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, - -1, -1, 376, 377, 378, 379, 380, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, + -1, -1, -1, 371, -1, -1, -1, -1, 376, 377, + 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, + -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, + 418, 419, 420, 264, 265, 266, 267, -1, -1, 270, + 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, + -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, + 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, + -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, + 264, 265, -1, 267, -1, -1, 270, 271, -1, 256, + -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, + 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, + -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, + 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, + 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, + 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, 368, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, -1, -1, 417, 418, 419, 420, 264, 265, 266, - 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, - 277, 278, 279, -1, -1, -1, -1, -1, 285, -1, - 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, - -1, -1, 299, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, - -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, - 337, -1, -1, 340, 341, -1, -1, 344, 345, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, + 267, -1, -1, 270, 271, -1, 256, -1, 275, 276, + 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, + 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, + -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, + -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, + 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, + -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, + 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, 376, + 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, 418, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, 368, -1, -1, + 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, - 417, 418, 419, 420, 264, 265, 266, 267, -1, -1, - 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, - -1, -1, -1, -1, -1, 285, -1, 287, 288, 289, - 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, - -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, - 340, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + -1, -1, -1, -1, 256, -1, 417, 418, 419, 420, + -1, -1, 264, 265, -1, 267, -1, 428, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, + 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, + 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, + 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, 316, 300, 318, 319, 320, 304, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, + -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, + -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, 372, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, + 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, + 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, + 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, + -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, + 318, -1, 337, -1, 322, -1, 341, -1, -1, 344, + 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, 370, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + 418, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, + -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, + -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 256, -1, 417, 418, + 419, 420, -1, -1, 264, 265, -1, 267, -1, 428, + 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, + -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, + -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, + 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, + -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, + 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, + -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, + -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, - -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, + -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, - 420, 264, 265, 266, 267, -1, -1, 270, 271, -1, - 273, 274, 275, 276, 277, 278, 279, -1, -1, -1, - -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, - -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, - 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 314, -1, 316, -1, 318, 319, -1, -1, 322, - -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, -1, 337, -1, -1, 340, 341, -1, - -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, - -1, -1, -1, 376, 377, 378, 379, 380, -1, -1, + 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, 418, 279, -1, -1, 265, + -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, + -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, + 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, + -1, -1, -1, 316, 300, 318, 319, -1, 304, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, + -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, + -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, - 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, - 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, - -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, - -1, -1, -1, 299, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 316, -1, 318, 319, -1, -1, 322, -1, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - -1, 337, -1, -1, 340, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, + -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, + 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + 316, 300, 318, 319, -1, 304, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, + -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, + -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, - 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, + -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, - -1, 270, 271, -1, 256, -1, 275, 276, 277, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, @@ -11834,7 +11906,7 @@ void case_961() 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, + 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, @@ -11842,520 +11914,375 @@ void case_961() -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, -1, - 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, - 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, - 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, 316, 300, 318, 319, 320, 304, + -1, -1, -1, 285, -1, -1, 288, -1, -1, -1, + -1, -1, -1, 295, -1, 261, -1, 262, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 316, -1, 318, 319, 284, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, - -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, - -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, 372, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, 418, 300, -1, 302, 303, 304, -1, + 332, 297, 334, 298, -1, -1, 302, -1, -1, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, + -1, 317, -1, -1, -1, 321, -1, 359, 360, 361, + 362, -1, -1, -1, -1, -1, -1, 333, -1, 371, + 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + -1, -1, -1, -1, -1, -1, 362, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, + 375, -1, -1, 378, 379, 417, 418, 382, 383, 384, + 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, + 261, -1, 418, -1, 265, 420, 267, -1, 423, 270, + -1, 272, 273, -1, 275, -1, 277, -1, 279, -1, + 281, 282, 283, 284, -1, -1, 287, 288, -1, -1, + -1, -1, 293, -1, 295, 296, 297, -1, -1, 300, + -1, 302, -1, 304, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, 316, 317, 318, -1, -1, + 321, 322, 323, -1, -1, -1, -1, -1, -1, 330, + 331, -1, 333, 334, -1, 336, 337, 338, -1, -1, + -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, + -1, 362, -1, 265, -1, 267, -1, 368, 270, -1, + 272, 273, -1, 275, -1, 277, 377, 279, -1, 281, + 282, 283, 284, -1, -1, 287, 288, -1, -1, -1, + -1, 293, -1, 295, 296, 297, -1, -1, 300, -1, + 302, -1, 304, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, -1, 316, 317, 318, 418, -1, 321, + 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, + -1, 333, 334, -1, 336, 337, 338, -1, -1, -1, + 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, + 362, -1, 265, -1, 267, -1, 368, 270, -1, 272, + 273, -1, 275, -1, 277, 377, 279, -1, 281, 282, + 283, 284, -1, -1, 287, 288, -1, -1, -1, -1, + 293, -1, 295, 296, 297, -1, -1, 300, -1, 302, + -1, 304, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, 316, 317, 318, 418, -1, 321, 322, + 323, -1, -1, -1, -1, -1, -1, 330, 331, -1, + 333, 334, -1, 336, 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, 261, -1, -1, -1, 265, -1, 267, 362, + -1, 270, -1, 272, 273, 368, 275, -1, 277, -1, + 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, + -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, + -1, 300, -1, 302, 261, 304, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, 316, 317, 318, + -1, -1, 321, 322, 323, 418, -1, 284, -1, -1, + -1, 330, 331, -1, 333, 334, 261, 336, 337, 338, + 297, -1, -1, 342, -1, 302, -1, -1, 305, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, 284, + 317, -1, -1, 362, 321, -1, -1, -1, 325, 368, + -1, -1, 297, -1, 261, -1, 333, 302, -1, 336, + -1, 338, 307, -1, 309, 310, 311, 312, -1, -1, + 315, -1, 317, -1, -1, -1, 321, 284, -1, -1, + 357, -1, -1, -1, 261, 362, -1, -1, 333, -1, + 297, 336, 369, 338, 371, 302, 373, -1, 305, 418, + 307, -1, 309, 310, 311, 312, -1, 284, -1, 386, + 317, -1, -1, -1, 321, -1, -1, 362, 325, -1, + 297, -1, -1, 368, 369, 302, 333, -1, -1, 336, + 307, 338, 309, 310, 311, 312, -1, -1, -1, -1, + 317, 418, -1, -1, 321, -1, -1, -1, 325, -1, + -1, 264, 265, -1, 267, 362, 333, 270, 271, 336, + -1, 338, 275, 276, 277, -1, 279, -1, -1, -1, + -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, 362, -1, 300, -1, 302, + 303, 304, -1, 306, -1, -1, -1, -1, -1, -1, + 313, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, 418, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, 418, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, 371, 372, + -1, 374, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, + 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, + 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, -1, 300, -1, 302, 303, 304, -1, 306, + -1, -1, -1, -1, -1, -1, 313, -1, -1, 316, + -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, 417, 418, 419, 420, -1, -1, 264, 265, -1, - 267, -1, 428, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, - 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, - -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, - 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, - -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, - 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, 374, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - 370, -1, -1, -1, -1, 392, 393, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, - 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, - -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, - -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, - 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, - -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, 316, 334, 318, -1, 337, -1, 322, - -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, 418, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, + -1, 302, 303, 304, -1, 306, -1, -1, -1, -1, + -1, -1, 313, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, + 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, 417, 418, 419, 420, -1, -1, 264, - 265, -1, 267, -1, 428, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, - 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, - 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, 316, 300, 318, 319, -1, 304, 322, -1, -1, - 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, - 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, - 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, + -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, + -1, -1, 337, -1, -1, -1, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, + -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, - -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, - 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, - -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, - -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, - 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, - -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, - 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, + 359, 360, 361, 362, 363, -1, -1, -1, -1, 368, + -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, + 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, + 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, + 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, + -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, - 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, - 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, - -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, - -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, - -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, 316, 300, 318, 319, -1, - 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, - 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, - 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, - -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, + 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, - 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, - -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, - 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, - 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, - 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, - 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, + -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, + -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, + -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, + 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, + 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, 418, 279, -1, -1, -1, -1, -1, 285, -1, - -1, 288, -1, -1, -1, 261, -1, -1, 295, -1, - -1, -1, 262, 300, -1, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 284, 316, + 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, - 327, 297, 329, 330, 331, 332, 302, 334, 298, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, 315, - -1, 317, -1, -1, -1, 321, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, -1, 333, -1, -1, - 336, -1, 338, -1, 371, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 362, -1, -1, -1, - -1, -1, 368, 369, -1, -1, -1, -1, -1, -1, - -1, 371, 372, 373, 374, 375, -1, -1, 378, 379, - 417, 418, 382, 383, 384, 385, 386, 387, 388, 389, - 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, -1, 261, -1, -1, -1, 265, - 420, 267, -1, 423, 270, -1, 272, 273, -1, 275, - -1, 277, -1, 279, -1, 281, 282, 283, 284, -1, - -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, - 296, 297, -1, -1, 300, -1, 302, -1, 304, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - 316, 317, 318, -1, -1, 321, 322, 323, -1, -1, - -1, -1, -1, -1, 330, 331, -1, 333, 334, -1, - 336, 337, 338, -1, -1, -1, 342, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 261, -1, 362, -1, 265, -1, - 267, -1, 368, 270, -1, 272, 273, -1, 275, -1, - 277, 377, 279, -1, 281, 282, 283, 284, -1, -1, - 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, - 297, -1, -1, 300, -1, 302, -1, 304, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, 316, - 317, 318, 418, -1, 321, 322, 323, -1, -1, -1, - -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, - 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 261, -1, 362, -1, 265, -1, 267, - -1, 368, 270, -1, 272, 273, -1, 275, -1, 277, - 377, 279, -1, 281, 282, 283, 284, -1, -1, 287, - 288, -1, -1, -1, -1, 293, -1, 295, 296, 297, - -1, -1, 300, -1, 302, -1, 304, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, 316, 317, - 318, 418, -1, 321, 322, 323, -1, -1, -1, -1, - -1, -1, 330, 331, -1, 333, 334, -1, 336, 337, - 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, - -1, 265, -1, 267, 362, -1, 270, -1, 272, 273, - 368, 275, -1, 277, -1, 279, -1, 281, 282, 283, - 284, -1, -1, 287, 288, -1, -1, -1, -1, 293, - -1, 295, 296, 297, -1, -1, 300, -1, 302, 261, - 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, 316, 317, 318, -1, -1, 321, 322, 323, - 418, -1, 284, -1, -1, -1, 330, 331, -1, 333, - 334, -1, 336, 337, 338, 297, -1, -1, 342, -1, - 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, 362, 321, - -1, -1, -1, 325, 368, -1, -1, 261, -1, -1, - -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 284, -1, -1, -1, -1, 357, -1, -1, -1, -1, - 362, -1, -1, 297, -1, -1, -1, 369, 302, 371, - -1, 373, -1, 307, 418, 309, 310, 311, 312, -1, - -1, -1, -1, 317, 386, -1, -1, 321, -1, -1, - -1, 325, -1, -1, 264, 265, -1, 267, -1, 333, - 270, 271, 336, -1, 338, 275, 276, 277, -1, 279, - -1, -1, -1, -1, -1, 285, 418, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, 362, -1, - 300, -1, 302, 303, 304, -1, 306, -1, -1, -1, - -1, -1, -1, 313, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, 418, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, 372, -1, 374, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, 306, -1, -1, -1, -1, -1, -1, 313, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - 374, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, -1, 300, -1, 302, 303, 304, -1, 306, -1, - -1, -1, -1, -1, -1, 313, -1, -1, 316, -1, - 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, - -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, - -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, - 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, - -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, -1, 334, -1, -1, 337, -1, -1, -1, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, 368, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, - -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, - -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, - 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, - -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, -1, 334, -1, -1, -1, -1, -1, -1, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, 261, -1, 263, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, 284, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, 297, 334, -1, -1, -1, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, -1, 359, 360, + 361, 362, 363, -1, -1, -1, -1, -1, 333, -1, + 371, 336, -1, 338, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, 362, -1, -1, + -1, -1, -1, 368, 369, -1, -1, -1, -1, -1, + -1, 263, -1, 265, -1, 267, 417, 418, 270, 420, + 272, 273, -1, 275, -1, 277, -1, 279, -1, 281, + 282, 283, -1, -1, -1, 287, 288, -1, -1, -1, + -1, 293, -1, 295, 296, -1, -1, -1, 300, -1, + -1, -1, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 315, 316, -1, 318, -1, -1, -1, + 322, 323, -1, -1, -1, -1, -1, -1, 330, 331, + 264, 265, 334, 267, -1, 337, 270, 271, -1, -1, + 342, 275, 276, 277, -1, 279, -1, -1, -1, -1, + -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, 364, 365, -1, -1, 300, -1, 302, 303, + 304, -1, -1, -1, -1, 377, -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, 261, - -1, 263, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, 319, 284, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, 297, 334, -1, -1, -1, - 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, 333, -1, 371, 336, -1, 338, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - 362, -1, -1, -1, -1, -1, 368, 369, -1, -1, - -1, -1, -1, -1, 263, -1, 265, -1, 267, 417, - 418, 270, 420, 272, 273, -1, 275, -1, 277, -1, + 334, -1, -1, 337, -1, -1, -1, -1, -1, -1, + 265, -1, 267, -1, -1, 270, 418, -1, -1, -1, + 275, -1, -1, -1, 279, 359, 360, 361, 362, -1, + -1, -1, -1, 288, 265, -1, 267, 371, -1, 270, + 295, 272, 273, -1, 275, 300, 277, -1, 279, 304, + 281, 282, 283, -1, -1, -1, 287, 288, -1, -1, + -1, 316, 293, 318, 295, 296, -1, 322, -1, 300, + -1, -1, -1, 304, -1, 330, 331, -1, -1, 334, + -1, -1, 337, 417, 418, 316, -1, 318, -1, -1, + -1, 322, 323, -1, -1, -1, -1, -1, -1, 330, + 331, -1, 265, 334, 267, -1, 337, 270, 363, 272, + 273, 342, 275, -1, 277, -1, 279, -1, 281, 282, + 283, -1, -1, -1, 287, 288, -1, -1, -1, -1, + 293, -1, 295, 296, -1, -1, -1, 300, -1, -1, + -1, 304, -1, -1, -1, -1, 377, -1, -1, -1, + -1, -1, -1, 316, -1, 318, -1, -1, -1, 322, + 323, -1, -1, 418, -1, -1, -1, 330, 331, -1, + -1, 334, -1, -1, 337, -1, 265, -1, 267, 342, + -1, 270, -1, -1, 273, -1, 275, 418, 277, -1, 279, -1, 281, 282, 283, -1, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, -1, -1, - -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, - -1, -1, -1, 322, 323, -1, -1, -1, -1, -1, - -1, 330, 331, 264, 265, 334, 267, -1, 337, 270, - 271, -1, -1, 342, 275, 276, 277, -1, 279, -1, - -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, 364, 365, -1, -1, 300, - -1, 302, 303, 304, -1, -1, -1, -1, 377, -1, - -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, - -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, -1, 334, -1, -1, 337, -1, -1, -1, - -1, -1, -1, 265, -1, 267, -1, -1, 270, 418, - 272, -1, -1, 275, -1, -1, -1, 279, 359, 360, - 361, 362, -1, -1, -1, -1, 288, 265, -1, 267, - 371, -1, 270, 295, 272, 273, -1, 275, 300, 277, - 302, 279, 304, 281, 282, 283, -1, -1, -1, 287, - 288, -1, -1, -1, 316, 293, 318, 295, 296, -1, - 322, 323, 300, -1, -1, -1, 304, -1, 330, 331, - -1, -1, 334, -1, -1, 337, 417, 418, 316, -1, - 318, -1, -1, -1, 322, 323, -1, -1, -1, -1, - -1, -1, 330, 331, -1, 265, 334, 267, -1, 337, - 270, -1, 272, 273, 342, 275, -1, 277, -1, 279, - -1, 281, 282, 283, -1, -1, -1, 287, 288, -1, - -1, -1, -1, 293, -1, 295, 296, -1, -1, -1, - 300, -1, -1, -1, 304, -1, -1, -1, -1, 377, - -1, -1, -1, -1, -1, -1, 316, -1, 318, -1, - -1, -1, 322, 323, -1, -1, 418, -1, -1, -1, - 330, 331, -1, -1, 334, -1, -1, 337, -1, 265, - -1, 267, 342, -1, 270, -1, -1, 273, -1, 275, - 418, 277, -1, 279, -1, 281, 282, 283, -1, -1, - -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, - -1, 265, -1, 267, 300, -1, 270, -1, 304, 273, - -1, 275, -1, 277, -1, 279, -1, 281, 282, 283, - 316, -1, 318, 287, 288, -1, 322, -1, -1, 293, - -1, 295, -1, -1, 330, 331, 300, -1, 334, -1, - 304, 337, -1, -1, -1, 265, 342, 267, 418, -1, - 270, -1, 316, -1, 318, 275, -1, -1, 322, 279, - -1, -1, -1, -1, -1, -1, 330, 331, 288, -1, - 334, -1, -1, 337, -1, 295, -1, 265, 342, 267, - 300, 377, 270, -1, 304, -1, 306, 275, 308, -1, - -1, 279, -1, 313, -1, -1, 316, -1, 318, -1, - 288, -1, 322, -1, -1, 325, -1, 295, -1, -1, - 330, 331, 300, -1, 334, -1, 304, 337, 306, -1, - 308, 265, 418, 267, -1, 313, 270, -1, 316, -1, - 318, 275, -1, -1, 322, 279, -1, 325, -1, -1, - -1, -1, 330, 331, 288, -1, 334, -1, -1, 337, - -1, 295, 372, 265, 418, 267, 300, -1, 270, -1, - 304, -1, 306, 275, 308, -1, -1, 279, -1, 313, - -1, -1, 316, -1, 318, -1, 288, -1, 322, -1, - -1, 325, 370, 295, -1, -1, 330, 331, 300, -1, - 334, -1, 304, 337, 306, -1, -1, -1, 418, -1, - -1, 313, -1, -1, 316, -1, 318, -1, -1, -1, - 322, -1, -1, 325, -1, -1, -1, -1, 330, 331, - -1, -1, 334, -1, 265, 337, 267, -1, -1, 270, - 418, -1, -1, -1, 275, -1, -1, -1, 279, -1, - -1, -1, 283, 265, -1, 267, -1, 288, 270, -1, - -1, -1, 293, 275, 295, -1, -1, 279, -1, 300, - -1, -1, -1, 304, 305, -1, 288, -1, -1, -1, - -1, -1, -1, 295, 418, 316, -1, 318, 300, -1, - -1, 322, 304, -1, -1, -1, -1, -1, -1, 330, - 331, -1, -1, 334, 316, -1, 318, 265, -1, 267, - 322, -1, 270, -1, -1, -1, 418, 275, 330, 331, - -1, 279, 334, -1, 265, 337, 267, -1, -1, 270, - 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, - -1, -1, 300, -1, -1, -1, 304, 288, -1, -1, - -1, 363, -1, -1, 295, -1, -1, -1, 316, 300, - 318, -1, -1, 304, 322, -1, -1, -1, -1, -1, - -1, -1, 330, 331, -1, 316, 334, 318, 265, 337, - 267, 322, -1, 270, -1, -1, -1, 418, 275, 330, - 331, -1, 279, 334, -1, -1, 337, -1, -1, -1, - -1, 288, -1, -1, -1, -1, 418, -1, 295, -1, - -1, -1, -1, 300, -1, -1, 261, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 272, -1, 316, - -1, 318, 277, -1, -1, 322, 281, -1, -1, 284, - -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, - 337, 296, 297, -1, -1, -1, 301, 302, -1, -1, - 418, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, -1, -1, 321, 418, 323, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, - 335, 336, 261, 338, -1, -1, -1, 342, -1, -1, - -1, -1, -1, 272, -1, -1, -1, -1, 277, -1, - -1, -1, 281, -1, -1, 284, -1, 362, -1, -1, - -1, -1, -1, 368, 369, -1, -1, 296, 297, -1, - -1, 418, 301, 302, -1, 261, -1, -1, 307, -1, + -1, -1, -1, -1, 293, -1, 295, -1, 265, -1, + 267, 300, -1, 270, -1, 304, 273, -1, 275, -1, + 277, -1, 279, -1, 281, 282, 283, 316, -1, 318, + 287, 288, -1, 322, -1, -1, 293, -1, 295, -1, + -1, 330, 331, 300, -1, 334, -1, 304, 337, -1, + -1, -1, 265, 342, 267, 418, -1, 270, -1, 316, + -1, 318, 275, -1, -1, 322, 279, -1, -1, -1, + -1, -1, -1, 330, 331, 288, -1, 334, -1, -1, + 337, -1, 295, -1, 265, 342, 267, 300, 377, 270, + -1, 304, -1, 306, 275, 308, -1, -1, 279, -1, + 313, -1, -1, 316, -1, 318, -1, 288, -1, 322, + -1, -1, 325, -1, 295, -1, -1, 330, 331, 300, + -1, 334, -1, 304, 337, 306, -1, 308, 265, 418, + 267, -1, 313, 270, -1, 316, -1, 318, 275, -1, + -1, 322, 279, -1, 325, -1, -1, -1, -1, 330, + 331, 288, -1, 334, -1, -1, 337, -1, 295, 372, + 265, 418, 267, 300, -1, 270, -1, 304, -1, 306, + 275, 308, -1, -1, 279, -1, 313, -1, -1, 316, + -1, 318, -1, 288, -1, 322, -1, -1, 325, 370, + 295, -1, -1, 330, 331, 300, -1, 334, -1, 304, + 337, 306, -1, -1, -1, 418, -1, -1, 313, -1, + -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, + 325, -1, -1, -1, -1, 330, 331, -1, -1, 334, + -1, 265, 337, 267, -1, -1, 270, 418, -1, -1, + -1, 275, -1, -1, -1, 279, -1, -1, -1, 283, + 265, -1, 267, -1, 288, 270, -1, -1, -1, 293, + 275, 295, -1, -1, 279, -1, 300, -1, -1, -1, + 304, 305, -1, 288, -1, -1, -1, -1, -1, -1, + 295, 418, 316, -1, 318, 300, -1, -1, 322, 304, + -1, -1, -1, -1, -1, -1, 330, 331, -1, -1, + 334, 316, -1, 318, 265, -1, 267, 322, -1, 270, + -1, -1, -1, 418, 275, 330, 331, -1, 279, 334, + -1, 265, 337, 267, -1, -1, 270, 288, -1, -1, + -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, + -1, -1, -1, 304, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, 316, 300, 318, -1, -1, + 304, 322, -1, -1, -1, -1, -1, -1, -1, 330, + 331, -1, 316, 334, 318, 265, 337, 267, 322, -1, + 270, -1, -1, -1, 418, 275, 330, 331, -1, 279, + 334, -1, -1, 337, -1, -1, -1, -1, 288, -1, + -1, -1, -1, 418, -1, 295, -1, -1, -1, -1, + 300, -1, -1, 261, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 272, -1, 316, -1, 318, 277, + -1, -1, 322, 281, -1, -1, 284, -1, -1, -1, + 330, 331, -1, -1, 334, -1, -1, 337, 296, 297, + -1, -1, -1, 301, 302, -1, -1, 418, -1, 307, + -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, + -1, -1, -1, 321, 418, 323, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 333, -1, 335, 336, 261, + 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, + 272, -1, -1, -1, -1, 277, -1, -1, -1, 281, + -1, -1, 284, -1, 362, -1, -1, -1, -1, -1, + 368, 369, -1, -1, 296, 297, -1, -1, 418, 301, + 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, 272, -1, 317, -1, -1, 277, 321, + -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, + 342, -1, 301, 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, - -1, 277, 321, -1, 323, 281, -1, -1, 284, -1, + 362, 277, 321, -1, 323, 281, 368, 369, 284, -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 296, 297, -1, 342, -1, 301, 302, -1, 261, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, - -1, 317, -1, 362, 277, 321, -1, 323, 281, 368, - 369, 284, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 296, 297, -1, 342, -1, 301, 302, - 261, -1, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, -1, 317, -1, 362, -1, 321, -1, - 323, -1, 368, 284, -1, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 297, -1, 261, 342, - -1, 302, -1, -1, -1, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, -1, 317, -1, -1, 362, - 321, 284, -1, -1, -1, 368, -1, -1, -1, -1, - -1, -1, 333, -1, 297, 336, 261, 338, -1, 302, - -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, -1, -1, 317, -1, -1, -1, 321, 284, - -1, 362, -1, 364, 365, -1, -1, 368, -1, -1, - 333, -1, 297, 336, 261, 338, 263, 302, -1, -1, + 296, 297, -1, 342, -1, 301, 302, 261, -1, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, + -1, 317, -1, 362, -1, 321, -1, 323, -1, 368, + 284, -1, -1, -1, -1, -1, -1, 333, -1, -1, + 336, -1, 338, 297, -1, 261, 342, 263, 302, -1, + -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, 315, -1, 317, -1, -1, 362, 321, 284, -1, + -1, -1, 368, -1, -1, -1, -1, -1, -1, 333, + -1, 297, 336, 261, 338, -1, 302, -1, -1, -1, + -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, + -1, 317, -1, -1, -1, 321, 284, -1, 362, -1, + -1, -1, -1, 261, 368, -1, -1, 333, -1, 297, + 336, -1, 338, -1, 302, -1, -1, -1, -1, 307, + -1, 309, 310, 311, 312, -1, 284, -1, -1, 317, + -1, -1, -1, 321, -1, -1, 362, -1, -1, 297, + -1, -1, 368, 301, 302, 333, 261, -1, 336, 307, + 338, 309, 310, 311, 312, -1, -1, -1, -1, 317, + -1, -1, -1, 321, -1, -1, -1, -1, -1, 284, + -1, -1, -1, -1, 362, 333, 364, 365, 336, -1, + 338, -1, 297, -1, -1, -1, -1, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - 315, -1, 317, -1, -1, -1, 321, 284, -1, 362, - -1, 364, 365, -1, -1, 368, -1, -1, 333, -1, - 297, 336, 261, 338, -1, 302, -1, -1, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, - 317, -1, -1, -1, 321, 284, -1, 362, -1, -1, - -1, -1, 261, 368, 263, -1, 333, -1, 297, 336, - -1, 338, -1, 302, -1, -1, -1, -1, 307, -1, - 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, - -1, -1, 321, -1, -1, 362, -1, -1, 297, -1, - -1, 368, 261, 302, 333, -1, -1, 336, 307, 338, - 309, 310, 311, 312, -1, -1, 315, -1, 317, -1, - -1, -1, 321, -1, -1, 284, -1, -1, -1, -1, - -1, -1, 261, 362, 333, 364, 365, 336, 297, 338, - -1, -1, 301, 302, -1, -1, -1, -1, 307, -1, - 309, 310, 311, 312, -1, 284, -1, -1, 317, -1, - -1, -1, 321, 362, -1, -1, -1, -1, 297, -1, - -1, -1, -1, 302, 333, -1, -1, 336, 307, 338, - 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, - -1, -1, 321, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 362, 333, -1, -1, 336, -1, 338, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 317, -1, 362, -1, 321, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, + -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 362, + -1, -1, -1, -1, -1, -1, -1, 362, }; -#line 6476 "cs-parser.jay" +#line 6425 "cs-parser.jay" // // A class used to hold info about an operator declarator @@ -12681,12 +12608,12 @@ void start_anonymous (bool isLambda, ParametersCompiled parameters, bool isAsync if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (loc, "lambda expressions"); - current_anonymous_method = new LambdaExpression (loc); + current_anonymous_method = new LambdaExpression (isAsync, loc); } else { if (lang_version == LanguageVersion.ISO_1) FeatureIsNotAvailable (loc, "anonymous methods"); - current_anonymous_method = new AnonymousMethodExpression (loc); + current_anonymous_method = new AnonymousMethodExpression (isAsync, loc); } async_block = isAsync; @@ -12718,12 +12645,7 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block) void Error_SyntaxError (int token) { - Error_SyntaxError (0, token); -} - -void Error_SyntaxError (int error_code, int token) -{ - Error_SyntaxError (error_code, token, "Unexpected symbol"); + Error_SyntaxError (0, token, "Unexpected symbol"); } void Error_SyntaxError (int error_code, int token, string msg) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index 56d424c4f4..c8a844e2d5 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -428,26 +428,19 @@ extern_alias_directive { var lt = (Tokenizer.LocatedToken) $2; string s = lt.Value; - if (s != "alias") { + if (s != "alias"){ syntax_error (lt.Location, "`alias' expected"); + } else if (lang_version == LanguageVersion.ISO_1) { + FeatureIsNotAvailable (lt.Location, "external alias"); } else { - if (lang_version == LanguageVersion.ISO_1) - FeatureIsNotAvailable (lt.Location, "external alias"); - - lt = (Tokenizer.LocatedToken) $3; - if (lt.Value == QualifiedAliasMember.GlobalAlias) { - RootNamespace.Error_GlobalNamespaceRedefined (report, lt.Location); - } - - var na = new UsingExternAlias (new MemberName (lt.Value, lt.Location), GetLocation ($1)); - current_namespace.AddUsing (na); - - lbag.AddLocation (na, GetLocation ($2), GetLocation ($4)); + lt = (Tokenizer.LocatedToken) $3; + current_namespace.AddUsingExternalAlias (lt.Value, lt.Location, report); + ubag.AddExternAlias (GetLocation ($1), GetLocation ($2), lt, GetLocation ($4)); } } | EXTERN_ALIAS error { - Error_SyntaxError (yyToken); + syntax_error (GetLocation ($1), "`alias' expected"); // TODO: better } ; @@ -457,22 +450,20 @@ using_directives ; using_directive - : using_namespace + : using_alias_directive { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } - ; - -using_namespace - : USING namespace_name SEMICOLON + | using_namespace_directive { - var un = new UsingNamespace ((MemberName) $2, GetLocation ($1)); - current_namespace.AddUsing (un); - - lbag.AddLocation (un, GetLocation ($3)); + if (doc_support) + Lexer.doc_state = XmlCommentState.Allowed; } - | USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON + ; + +using_alias_directive + : USING IDENTIFIER ASSIGN namespace_or_type_name SEMICOLON { var lt = (Tokenizer.LocatedToken) $2; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -480,16 +471,22 @@ using_namespace "An alias named `global' will not be used when resolving `global::'. The global namespace will be used instead"); } - var un = new UsingAliasNamespace (new MemberName (lt.Value, lt.Location), (MemberName) $4, GetLocation ($1)); - current_namespace.AddUsing (un); - - lbag.AddLocation (un, GetLocation ($3), GetLocation ($5)); - } + current_namespace.AddUsingAlias (lt.Value, (MemberName) $4, GetLocation ($1)); + ubag.AddUsingAlias (GetLocation ($1), lt, GetLocation ($3), (MemberName) $4, GetLocation ($5)); + } | USING error { Error_SyntaxError (yyToken); $$ = null; - } + } + ; + +using_namespace_directive + : USING namespace_name SEMICOLON + { + current_namespace.AddUsing ((MemberName) $2, GetLocation ($1)); + ubag.AddUsing (GetLocation ($1), (MemberName) $2, GetLocation ($3)); + } ; // @@ -5106,7 +5103,7 @@ statement_expression ExpressionStatement s = $1 as ExpressionStatement; if (s == null) { Expression.Error_InvalidExpressionStatement (report, GetLocation ($1)); - $$ = new StatementErrorExpression ($1 as Expression); + $$ = new InvalidStatementExpression ($1 as Expression); } else { $$ = new StatementExpression (s); } @@ -5155,10 +5152,9 @@ if_statement if ($7 is EmptyStatement) Warning_EmptyStatement (GetLocation ($7)); } - | IF open_parens_any boolean_expression error - { - Error_SyntaxError (yyToken); - + | IF open_parens_any boolean_expression error { + var eloc = GetLocation ($3); + report.Error (1026, eloc, "Expected a ')'"); $$ = new If ((BooleanExpression) $3, null, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2)); } @@ -5175,13 +5171,6 @@ switch_statement end_block (GetLocation ($8)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4), GetLocation ($5), GetLocation ($8)); } - | SWITCH open_parens_any expression error - { - Error_SyntaxError (yyToken); - - $$ = new Switch ((Expression) $3, null, null, GetLocation ($1)); - lbag.AddStatement ($$, GetLocation ($2)); - } ; opt_switch_sections @@ -5210,7 +5199,7 @@ switch_sections } | error { - Error_SyntaxError (yyToken); + Error_SyntaxError (yyToken); $$ = new List (); } ; @@ -5271,30 +5260,24 @@ while_statement $$ = new While ((BooleanExpression) $3, (Statement) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); } - | WHILE open_parens_any boolean_expression error - { - Error_SyntaxError (yyToken); - - $$ = new While ((BooleanExpression) $3, null, GetLocation ($1)); - lbag.AddStatement ($$, GetLocation ($2)); - } ; do_statement - : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON + : DO embedded_statement + WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON { $$ = new Do ((Statement) $2, (BooleanExpression) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($3), GetLocation ($4), GetLocation ($6), GetLocation ($7)); } | DO embedded_statement error { - Error_SyntaxError (yyToken); - $$ = new Do ((Statement) $2, null, GetLocation ($1)); + var loc = GetLocation ($1); + report.Error (-100, loc, "Expected `while'"); + $$ = new Do ((Statement) $2, null, loc); } - | DO embedded_statement WHILE open_parens_any boolean_expression error + | DO embedded_statement + WHILE open_parens_any boolean_expression error { - Error_SyntaxError (yyToken); - $$ = new Do ((Statement) $2, (BooleanExpression) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($3), GetLocation ($4)); } @@ -5400,35 +5383,10 @@ statement_expression_list ; foreach_statement - : FOREACH open_parens_any type error + : FOREACH open_parens_any type IN expression CLOSE_PARENS { report.Error (230, GetLocation ($1), "Type and identifier are both required in a foreach statement"); - - start_block (GetLocation ($2)); - current_block.IsCompilerGenerated = true; - - Foreach f = new Foreach ((Expression) $3, null, null, null, GetLocation ($1)); - current_block.AddStatement (f); - - lbag.AddStatement (f, GetLocation ($2)); - $$ = end_block (GetLocation ($4)); - } - | FOREACH open_parens_any type identifier_inside_body error - { - Error_SyntaxError (yyToken); - - start_block (GetLocation ($2)); - current_block.IsCompilerGenerated = true; - - var lt = (Tokenizer.LocatedToken) $4; - var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.ForeachVariable | LocalVariable.Flags.Used, lt.Location); - current_block.AddLocalName (li); - - Foreach f = new Foreach ((Expression) $3, li, null, null, GetLocation ($1)); - current_block.AddStatement (f); - - lbag.AddStatement (f, GetLocation ($2)); - $$ = end_block (GetLocation ($5)); + $$ = null; } | FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS { @@ -5586,9 +5544,9 @@ try_statement $$ = new TryFinally (new TryCatch ((Block) $2, (List) $3, GetLocation ($1), true), (Block) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($4)); } - | TRY block error + | TRY block error { - Error_SyntaxError (1524, yyToken); + report.Error (1524, GetLocation ($1), "Expected catch or finally"); $$ = new TryCatch ((Block) $2, null, GetLocation ($1), false); } ; @@ -5606,11 +5564,15 @@ catch_clauses var l = (List) $1; Catch c = (Catch) $2; - if (l [l.Count - 1].IsGeneral) { + if (l [0].IsGeneral) { report.Error (1017, c.loc, "Try statement already has an empty catch block"); + } else { + if (c.IsGeneral) + l.Insert (0, c); + else + l.Add (c); } - l.Add (c); $$ = l; } ; @@ -5690,13 +5652,6 @@ lock_statement $$ = new Lock ((Expression) $3, (Statement) $5, GetLocation ($1)); lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); } - | LOCK open_parens_any expression error - { - Error_SyntaxError (yyToken); - - $$ = new Lock ((Expression) $3, null, GetLocation ($1)); - lbag.AddStatement ($$, GetLocation ($2)); - } ; fixed_statement @@ -5758,15 +5713,9 @@ using_statement if ($5 is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation ($5)); - $$ = new Using ((Expression) $3, (Statement) $5, GetLocation ($1)); - lbag.AddStatement ($$, GetLocation ($2), GetLocation ($4)); - } - | USING open_parens_any expression error - { - Error_SyntaxError (yyToken); - - $$ = new Using ((Expression) $3, null, GetLocation ($1)); - lbag.AddStatement ($$, GetLocation ($2)); + Using u = new Using ((Expression) $3, (Statement) $5, GetLocation ($1)); + lbag.AddStatement (u, GetLocation ($2), GetLocation ($4)); + $$ = u; } ; @@ -6010,7 +5959,7 @@ let_clause var sn = new Linq.RangeVariable (lt.Value, lt.Location); $$ = new Linq.Let ((Linq.QueryBlock) current_block, sn, (Expression)$5, GetLocation ($1)); lbag.AddLocation ($$, GetLocation ($3)); - + current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -6798,12 +6747,12 @@ void start_anonymous (bool isLambda, ParametersCompiled parameters, bool isAsync if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (loc, "lambda expressions"); - current_anonymous_method = new LambdaExpression (loc); + current_anonymous_method = new LambdaExpression (isAsync, loc); } else { if (lang_version == LanguageVersion.ISO_1) FeatureIsNotAvailable (loc, "anonymous methods"); - current_anonymous_method = new AnonymousMethodExpression (loc); + current_anonymous_method = new AnonymousMethodExpression (isAsync, loc); } async_block = isAsync; @@ -6835,12 +6784,7 @@ AnonymousMethodExpression end_anonymous (ParametersBlock anon_block) void Error_SyntaxError (int token) { - Error_SyntaxError (0, token); -} - -void Error_SyntaxError (int error_code, int token) -{ - Error_SyntaxError (error_code, token, "Unexpected symbol"); + Error_SyntaxError (0, token, "Unexpected symbol"); } void Error_SyntaxError (int error_code, int token, string msg) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs index ef00985889..69b5e04302 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs @@ -47,6 +47,7 @@ namespace Mono.CSharp { bool is_double_colon; + public bool IsDoubleColon { get { return is_double_colon; } } #if FULL_AST public Location DotLocation { @@ -123,12 +124,6 @@ namespace Mono.CSharp { } } - public bool IsDoubleColon { - get { - return is_double_colon; - } - } - public bool IsGeneric { get { if (TypeArguments != null) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs index 4150add5b4..b7efb87219 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs @@ -81,13 +81,6 @@ namespace Mono.CSharp { return parameters; } } - - public FullNamedExpression TypExpression { - get { - return ReturnType; - } - } - #endregion public override void Accept (StructuralVisitor visitor) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs index bc09888f7b..bdd059d9a6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs @@ -300,7 +300,7 @@ namespace Mono.CSharp tr.Start (TimeReporter.TimerType.UsingResolve); foreach (var source_file in ctx.SourceFiles) { - source_file.NamespaceContainer.Define (); + source_file.NamespaceContainer.Resolve (); } tr.Stop (TimeReporter.TimerType.UsingResolve); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs index 0d375367a5..410dd4da0b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs @@ -4418,10 +4418,7 @@ namespace Mono.CSharp { var ac_p = p as ArrayContainer; if (ac_p != null) { - var ac_q = q as ArrayContainer; - if (ac_q == null) - return null; - + var ac_q = ((ArrayContainer) q); TypeSpec specific = MoreSpecific (ac_p.Element, ac_q.Element); if (specific == ac_p.Element) return p; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs index ca2e34ff82..c996bc5e2a 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs @@ -373,7 +373,6 @@ namespace Mono.CSharp // Need to setup MemberCache parser_result.CreateType (); - parser_result.NamespaceEntry.Define (); var method = parser_result.Methods[0] as Method; BlockContext bc = new BlockContext (method, method.Block, ctx.BuiltinTypes.Void); @@ -769,17 +768,12 @@ namespace Mono.CSharp return sb.ToString (); } - internal List GetUsingList () + internal ICollection GetUsingList () { var res = new List (); - foreach (var ue in source_file.NamespaceContainer.Usings) { - if (ue.Alias != null) - continue; - - res.Add (ue.NamespaceName.Name); - } - + foreach (var ue in source_file.NamespaceContainer.Usings) + res.Add (ue.Name); return res; } @@ -820,7 +814,7 @@ namespace Mono.CSharp public void LoadAssembly (string file) { var loader = new DynamicLoader (importer, ctx); - var assembly = loader.LoadAssemblyFile (file, false); + var assembly = loader.LoadAssemblyFile (file); if (assembly == null) return; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index 5c6602b7db..b5928273d9 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -801,17 +801,17 @@ namespace Mono.CSharp LocalTemporary temporary; bool prepared; - public Indirection (Expression expr, Location l) - { - this.expr = expr; - loc = l; - } - public Expression Expr { get { return expr; } } + + public Indirection (Expression expr, Location l) + { + this.expr = expr; + loc = l; + } public bool IsFixed { get { return true; } @@ -1017,13 +1017,6 @@ namespace Mono.CSharp // Holds the real operation Expression operation; - public UnaryMutator (Mode m, Expression e, Location loc) - { - mode = m; - this.loc = loc; - expr = e; - } - public Mode UnaryMutatorMode { get { return mode; @@ -1036,6 +1029,13 @@ namespace Mono.CSharp } } + public UnaryMutator (Mode m, Expression e, Location loc) + { + mode = m; + this.loc = loc; + expr = e; + } + public override bool ContainsEmitWithAwait () { return expr.ContainsEmitWithAwait (); @@ -1283,7 +1283,6 @@ namespace Mono.CSharp target.expr = expr.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1372,10 +1371,6 @@ namespace Mono.CSharp { } - protected override string OperatorName { - get { return "is"; } - } - public override Expression CreateExpressionTree (ResolveContext ec) { Arguments args = Arguments.CreateForExpressionTree (ec, null, @@ -1550,6 +1545,10 @@ namespace Mono.CSharp return this; } + protected override string OperatorName { + get { return "is"; } + } + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1567,10 +1566,6 @@ namespace Mono.CSharp { } - protected override string OperatorName { - get { return "as"; } - } - public override Expression CreateExpressionTree (ResolveContext ec) { Arguments args = Arguments.CreateForExpressionTree (ec, null, @@ -1649,10 +1644,14 @@ namespace Mono.CSharp return null; } + protected override string OperatorName { + get { return "as"; } + } public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); } + } // @@ -1754,6 +1753,13 @@ namespace Mono.CSharp public class DefaultValueExpression : Expression { Expression expr; + + + public Expression Expr { + get { + return this.expr; + } + } public DefaultValueExpression (Expression expr, Location loc) { @@ -1761,12 +1767,6 @@ namespace Mono.CSharp this.loc = loc; } - public Expression Expr { - get { - return this.expr; - } - } - public override bool IsSideEffectFree { get { return true; @@ -2225,15 +2225,11 @@ namespace Mono.CSharp } public Expression Left { - get { - return this.left; - } + get { return this.left; } } public Expression Right { - get { - return this.right; - } + get { return this.right; } } #endregion @@ -5239,7 +5235,7 @@ namespace Mono.CSharp } } - public Expression Exp { + public Expression Expression { get { return expr; } @@ -5494,7 +5490,6 @@ namespace Mono.CSharp return SLE.Expression.Call (instance_expr, (MethodInfo) mi.GetMetaInfo (), Arguments.MakeExpression (args, ctx)); #endif } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -5546,12 +5541,6 @@ namespace Mono.CSharp } } - public Expression TypeExpression { - get { - return RequestedType; - } - } - #endregion /// @@ -5944,12 +5933,6 @@ namespace Mono.CSharp get { return elements.Count; } } - public List Elements { - get { - return elements; - } - } - public Expression this [int index] { get { return elements [index]; @@ -5964,6 +5947,12 @@ namespace Mono.CSharp variable = value; } } + + public List Elements { + get { + return this.elements; + } + } #endregion public void Add (Expression expr) @@ -6055,16 +6044,24 @@ namespace Mono.CSharp // The number of constants in array initializers int const_initializers_count; - bool only_constant_initializers; +// bool only_constant_initializers; public List Arguments { get { return this.arguments; } } + public ComposedTypeSpecifier Rank { + get { return this.rank; } + } + public FullNamedExpression NewType { get { return this.requested_base_type; } } + public ArrayInitializer Initializers { + get { return this.initializers; } + } + public ArrayCreation (FullNamedExpression requested_base_type, List exprs, ComposedTypeSpecifier rank, ArrayInitializer initializers, Location l) : this (requested_base_type, rank, initializers, l) { @@ -6102,24 +6099,6 @@ namespace Mono.CSharp { } - public ComposedTypeSpecifier Rank { - get { - return this.rank; - } - } - - public FullNamedExpression TypeExpression { - get { - return this.requested_base_type; - } - } - - public ArrayInitializer Initializers { - get { - return this.initializers; - } - } - bool CheckIndices (ResolveContext ec, ArrayInitializer probe, int idx, bool specified_dims, int child_bounds) { if (initializers != null && bounds == null) { @@ -6200,7 +6179,7 @@ namespace Mono.CSharp ++const_initializers_count; } } else { - only_constant_initializers = false; +// only_constant_initializers = false; } array_data.Add (element); @@ -6305,7 +6284,7 @@ namespace Mono.CSharp protected bool ResolveInitializers (ResolveContext ec) { - only_constant_initializers = true; +// only_constant_initializers = true; if (arguments != null) { bool res = true; @@ -7145,8 +7124,8 @@ namespace Mono.CSharp /// public class Arglist : Expression { - Arguments arguments; - + public Arguments Arguments { get; private set; } + public Arglist (Location loc) : this (null, loc) { @@ -7154,24 +7133,18 @@ namespace Mono.CSharp public Arglist (Arguments args, Location l) { - arguments = args; + Arguments = args; loc = l; } - public Arguments Arguments { - get { - return arguments; - } - } - public MetaType[] ArgumentTypes { get { - if (arguments == null) + if (Arguments == null) return MetaType.EmptyTypes; - var retval = new MetaType[arguments.Count]; - for (int i = 0; i < retval.Length; i++) - retval[i] = arguments[i].Expr.Type.GetMetaInfo (); + var retval = new MetaType[Arguments.Count]; + for (int i = 0; i < retval.Length; i++) + retval[i] = Arguments[i].Expr.Type.GetMetaInfo (); return retval; } @@ -7192,9 +7165,9 @@ namespace Mono.CSharp { eclass = ExprClass.Variable; type = InternalType.Arglist; - if (arguments != null) { + if (Arguments != null) { bool dynamic; // Can be ignored as there is always only 1 overload - arguments.Resolve (ec, out dynamic); + Arguments.Resolve (ec, out dynamic); } return this; @@ -7202,18 +7175,17 @@ namespace Mono.CSharp public override void Emit (EmitContext ec) { - if (arguments != null) - arguments.Emit (ec); + if (Arguments != null) + Arguments.Emit (ec); } protected override void CloneTo (CloneContext clonectx, Expression t) { Arglist target = (Arglist) t; - if (arguments != null) - target.arguments = arguments.Clone (clonectx); + if (Arguments != null) + target.Arguments = Arguments.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -7235,12 +7207,6 @@ namespace Mono.CSharp this.loc = loc; } - public FullNamedExpression TypeExpression { - get { - return texpr; - } - } - public override bool ContainsEmitWithAwait () { return false; @@ -7631,12 +7597,12 @@ namespace Mono.CSharp /// Implements the sizeof expression /// public class SizeOf : Expression { - readonly Expression texpr; + public readonly Expression QueriedType; TypeSpec type_queried; public SizeOf (Expression queried_type, Location l) { - this.texpr = queried_type; + this.QueriedType = queried_type; loc = l; } @@ -7646,12 +7612,6 @@ namespace Mono.CSharp } } - public Expression TypeExpression { - get { - return texpr; - } - } - public override bool ContainsEmitWithAwait () { return false; @@ -7665,7 +7625,7 @@ namespace Mono.CSharp protected override Expression DoResolve (ResolveContext ec) { - type_queried = texpr.ResolveAsType (ec); + type_queried = QueriedType.ResolveAsType (ec); if (type_queried == null) return null; @@ -7733,12 +7693,6 @@ namespace Mono.CSharp this.alias = alias; } - public string Alias { - get { - return alias; - } - } - public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext ec) { if (alias == GlobalAlias) { @@ -7753,8 +7707,19 @@ namespace Mono.CSharp ec.Module.Compiler.Report.Error (432, loc, "Alias `{0}' not found", alias); return null; } - - return base.ResolveAsTypeOrNamespace (ec); + + FullNamedExpression fne = base.ResolveAsTypeOrNamespace (ec); + if (fne == null) + return null; + + if (expr.eclass == ExprClass.Type) { + ec.Module.Compiler.Report.Error (431, loc, + "Alias `{0}' cannot be used with '::' since it denotes a type. Consider replacing '::' with '.'", alias); + + return null; + } + + return fne; } protected override Expression DoResolve (ResolveContext ec) @@ -7762,6 +7727,13 @@ namespace Mono.CSharp return ResolveAsTypeOrNamespace (ec); } + protected override void Error_IdentifierNotFound (IMemberContext rc, TypeSpec expr_type, string identifier) + { + rc.Module.Compiler.Report.Error (687, loc, + "A namespace alias qualifier `{0}' did not resolve to a namespace or a type", + GetSignatureForError ()); + } + public override string GetSignatureForError () { string name = Name; @@ -7774,14 +7746,6 @@ namespace Mono.CSharp public override Expression LookupNameExpression (ResolveContext rc, MemberLookupRestrictions restrictions) { - if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) { - rc.Module.Compiler.Report.Error (687, loc, - "The namespace alias qualifier `::' cannot be used to invoke a method. Consider using `.' instead", - GetSignatureForError ()); - - return null; - } - return DoResolve (rc); } @@ -8141,14 +8105,6 @@ namespace Mono.CSharp return null; } - var qam = this as QualifiedAliasMember; - if (qam != null) { - rc.Module.Compiler.Report.Error (431, loc, - "Alias `{0}' cannot be used with `::' since it denotes a type. Consider replacing `::' with `.'", - qam.Alias); - - } - TypeSpec nested = null; while (expr_type != null) { nested = MemberCache.FindNestedType (expr_type, Name, Arity); @@ -8309,7 +8265,6 @@ namespace Mono.CSharp target.Expr = Expr.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -8374,7 +8329,6 @@ namespace Mono.CSharp target.Expr = Expr.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -9585,7 +9539,15 @@ namespace Mono.CSharp TypeSpec otype; Expression t; Expression count; + + public Expression TypeExpression { + get { return this.t; } + } + public Expression CountExpression { + get { return this.count; } + } + public StackAlloc (Expression type, Expression count, Location l) { t = type; @@ -9593,18 +9555,6 @@ namespace Mono.CSharp loc = l; } - public Expression TypeExpression { - get { - return this.t; - } - } - - public Expression CountExpression { - get { - return this.count; - } - } - public override bool ContainsEmitWithAwait () { return false; @@ -10083,18 +10033,18 @@ namespace Mono.CSharp CollectionOrObjectInitializers initializers; IMemoryLocation instance; - public NewInitialize (FullNamedExpression requested_type, Arguments arguments, CollectionOrObjectInitializers initializers, Location l) - : base (requested_type, arguments, l) - { - this.initializers = initializers; - } - public CollectionOrObjectInitializers Initializers { get { return initializers; } } + public NewInitialize (FullNamedExpression requested_type, Arguments arguments, CollectionOrObjectInitializers initializers, Location l) + : base (requested_type, arguments, l) + { + this.initializers = initializers; + } + protected override void CloneTo (CloneContext clonectx, Expression t) { base.CloneTo (clonectx, t); @@ -10205,6 +10155,10 @@ namespace Mono.CSharp readonly TypeContainer parent; AnonymousTypeClass anonymous_type; + public List Parameters { + get { return this.parameters; } + } + public NewAnonymousType (List parameters, TypeContainer parent, Location loc) : base (null, null, loc) { @@ -10212,12 +10166,6 @@ namespace Mono.CSharp this.parent = parent; } - public List Parameters { - get { - return this.parameters; - } - } - protected override void CloneTo (CloneContext clonectx, Expression target) { if (parameters == null) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs index 34ac89f8b3..44001051fd 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs @@ -94,12 +94,6 @@ namespace Mono.CSharp { #region Properties - public List TypeExpressions { - get { - return constraints; - } - } - public Location Location { get { return loc; @@ -391,12 +385,6 @@ namespace Mono.CSharp { } } - public Constraints Constraints { - get { - return constraints; - } - } - public IAssemblyDefinition DeclaringAssembly { get { return Module.DeclaringAssembly; @@ -452,6 +440,12 @@ namespace Mono.CSharp { } } + public Constraints Constraints { + get { + return this.constraints; + } + } + #endregion // @@ -1917,12 +1911,6 @@ namespace Mono.CSharp { } } - public List TypeExpressions { - get { - return this.args; - } - } - public string GetSignatureForError() { StringBuilder sb = new StringBuilder (); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs index df73d2466f..b60e5b53f9 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/iterators.cs @@ -33,16 +33,16 @@ namespace Mono.CSharp protected T machine_initializer; int resume_pc; + public Expression Expr { + get { return this.expr; } + } + protected YieldStatement (Expression expr, Location l) { this.expr = expr; loc = l; } - public Expression Expr { - get { return this.expr; } - } - protected override void CloneTo (CloneContext clonectx, Statement t) { var target = (YieldStatement) t; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs index f1cc07b195..d7d8a5932d 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs @@ -24,8 +24,13 @@ namespace Mono.CSharp { // A list of Parameters (explicitly typed parameters) // An ImplicitLambdaParameter // + public LambdaExpression (bool isAsync, Location loc) + : base (isAsync, loc) + { + } + public LambdaExpression (Location loc) - : base (loc) + : this (false, loc) { } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs index 60310f02c4..998f340a98 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs @@ -287,12 +287,6 @@ namespace Mono.CSharp.Linq this.identifier = identifier; } - public RangeVariable Identifier { - get { - return identifier; - } - } - public FullNamedExpression IdentifierType { get; set; } protected Invocation CreateCastExpression (Expression lSide) @@ -482,12 +476,6 @@ namespace Mono.CSharp.Linq } } - public Expression SelectorExpression { - get { - return element_selector; - } - } - protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args) { base.CreateArguments (ec, parameter, ref args); @@ -531,13 +519,6 @@ namespace Mono.CSharp.Linq get { return this.GetIntoVariable (); } } - public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc) - : base (block, lt, inner, loc) - { - this.outer_selector = outerSelector; - this.inner_selector = innerSelector; - } - public QueryBlock InnerSelector { get { return inner_selector; @@ -549,6 +530,13 @@ namespace Mono.CSharp.Linq return outer_selector; } } + + public Join (QueryBlock block, RangeVariable lt, Expression inner, QueryBlock outerSelector, QueryBlock innerSelector, Location loc) + : base (block, lt, inner, loc) + { + this.outer_selector = outerSelector; + this.inner_selector = innerSelector; + } protected override void CreateArguments (ResolveContext ec, Parameter parameter, ref Arguments args) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs index bb0370914b..95be95d40b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs @@ -95,13 +95,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class CharLiteral : CharConstant, ILiteralConstant @@ -116,13 +111,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class IntLiteral : IntConstant, ILiteralConstant @@ -153,13 +143,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class UIntLiteral : UIntConstant, ILiteralConstant @@ -174,13 +159,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class LongLiteral : LongConstant, ILiteralConstant @@ -195,13 +175,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class ULongLiteral : ULongConstant, ILiteralConstant @@ -216,13 +191,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class FloatLiteral : FloatConstant, ILiteralConstant @@ -237,13 +207,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class DoubleLiteral : DoubleConstant, ILiteralConstant @@ -280,13 +245,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class DecimalLiteral : DecimalConstant, ILiteralConstant @@ -301,13 +261,8 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } public class StringLiteral : StringConstant, ILiteralConstant @@ -322,12 +277,7 @@ namespace Mono.CSharp } #if FULL_AST - public char[] ParsedValue { get; set; } + char[] ILiteralConstant.ParsedValue { get; set; } #endif - - public override object Accept (StructuralVisitor visitor) - { - return visitor.Visit (this); - } } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs index 4550e2042c..b545ce9051 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs @@ -899,11 +899,6 @@ namespace Mono.CSharp { #endregion - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public static Method Create (DeclSpace parent, GenericMethod generic, FullNamedExpression returnType, Modifiers mod, MemberName name, ParametersCompiled parameters, Attributes attrs, bool hasConstraints) { @@ -1180,6 +1175,11 @@ namespace Mono.CSharp { return true; } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + // // Creates the type // @@ -1569,11 +1569,6 @@ namespace Mono.CSharp { (Initializer.Arguments == null); } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.IsValidSecurityAttribute ()) { @@ -1619,6 +1614,11 @@ namespace Mono.CSharp { return true; } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + // // Creates the ConstructorBuilder // @@ -2155,11 +2155,6 @@ namespace Mono.CSharp { ModFlags |= Modifiers.PROTECTED | Modifiers.OVERRIDE; } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.Conditional) { @@ -2169,6 +2164,10 @@ namespace Mono.CSharp { base.ApplyAttributeBuilder (a, ctor, cdata, pa); } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } protected override bool CheckBase () { @@ -2515,11 +2514,6 @@ namespace Mono.CSharp { Block = block; } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.Conditional) { @@ -2530,6 +2524,11 @@ namespace Mono.CSharp { base.ApplyAttributeBuilder (a, ctor, cdata, pa); } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override bool Define () { const Modifiers RequiredModifiers = Modifiers.PUBLIC | Modifiers.STATIC; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs index f5865f2495..3cdac0f082 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs @@ -35,11 +35,6 @@ namespace Mono.CSharp { } } - public static void Error_GlobalNamespaceRedefined (Report report, Location loc) - { - report.Error (1681, loc, "The global extern alias cannot be redefined"); - } - public void RegisterNamespace (Namespace child) { if (child != this) @@ -583,9 +578,6 @@ namespace Mono.CSharp { // public class NamespaceContainer : IMemberContext, ITypesContainer { - static readonly Namespace[] empty_namespaces = new Namespace[0]; - static readonly string[] empty_using_list = new string[0]; - Namespace ns; readonly ModuleContainer module; @@ -596,18 +588,20 @@ namespace Mono.CSharp { NamespaceContainer implicit_parent; int symfile_id; - List clauses; - - // Used by parsed to check for parser errors + // Namespace using import block + List using_aliases; + List using_clauses; public bool DeclarationFound; + // End bool resolved; public readonly bool IsImplicit; public readonly TypeContainer SlaveDeclSpace; + static readonly Namespace [] empty_namespaces = new Namespace [0]; + static readonly string[] empty_using_list = new string[0]; - Namespace[] namespace_using_table; - Dictionary aliases; + Namespace [] namespace_using_table; public NamespaceContainer (MemberName name, ModuleContainer module, NamespaceContainer parent, CompilationSourceFile sourceFile) { @@ -650,30 +644,89 @@ namespace Mono.CSharp { } } - public NamespaceContainer Parent { - get { - return parent; - } - } - public CompilationSourceFile SourceFile { get { return file; } } - public List Usings { + public List Usings { get { - return clauses; + return using_clauses; } } #endregion + // + // Extracts the using alises and using clauses into a couple of + // arrays that might already have the same information; Used by the + // C# Eval mode. + // + public void Extract (List out_using_aliases, List out_using_clauses) + { + if (using_aliases != null){ + foreach (NamespaceUsingAlias uae in using_aliases){ + bool replaced = false; + + for (int i = 0; i < out_using_aliases.Count; i++){ + NamespaceUsingAlias out_uea = (NamespaceUsingAlias) out_using_aliases [i]; + + if (out_uea.Alias == uae.Alias){ + out_using_aliases [i] = uae; + replaced = true; + break; + } + } + if (!replaced) + out_using_aliases.Add (uae); + } + } + + if (using_clauses != null){ + foreach (NamespaceUsing ue in using_clauses){ + bool found = false; + + foreach (NamespaceUsing out_ue in out_using_clauses) + if (out_ue.Name == ue.Name){ + found = true; + break; + } + if (!found) + out_using_clauses.Add (ue); + } + } + } + + // + // According to section 16.3.1 (using-alias-directive), the namespace-or-type-name is + // resolved as if the immediately containing namespace body has no using-directives. + // + // Section 16.3.2 says that the same rule is applied when resolving the namespace-name + // in the using-namespace-directive. + // + // To implement these rules, the expressions in the using directives are resolved using + // the "doppelganger" (ghostly bodiless duplicate). + // + NamespaceContainer doppelganger; + NamespaceContainer Doppelganger { + get { + if (!IsImplicit && doppelganger == null) { + doppelganger = new NamespaceContainer (module, ImplicitParent, file, ns, true); + doppelganger.using_aliases = using_aliases; + } + return doppelganger; + } + } + public Namespace NS { get { return ns; } } + public NamespaceContainer Parent { + get { return parent; } + } + public NamespaceContainer ImplicitParent { get { if (parent == null) @@ -687,47 +740,78 @@ namespace Mono.CSharp { } } - public void AddUsing (UsingNamespace un) + /// + /// Records a new namespace for resolving name references + /// + public void AddUsing (MemberName name, Location loc) { if (DeclarationFound){ - Compiler.Report.Error (1529, un.Location, "A using clause must precede all other namespace elements except extern alias declarations"); + Compiler.Report.Error (1529, loc, "A using clause must precede all other namespace elements except extern alias declarations"); } - if (clauses == null) - clauses = new List (); - - clauses.Add (un); + if (using_clauses == null) { + using_clauses = new List (); + } else { + foreach (NamespaceUsing old_entry in using_clauses) { + if (name.Equals (old_entry.MemberName)) { + Compiler.Report.SymbolRelatedToPreviousError (old_entry.Location, old_entry.GetSignatureForError ()); + Compiler.Report.Warning (105, 3, loc, "The using directive for `{0}' appeared previously in this namespace", name.GetSignatureForError ()); + return; + } + } + } - resolved = false; + using_clauses.Add (new NamespaceUsing (name)); } - public void AddUsing (UsingAliasNamespace un) + public void AddUsingAlias (string alias, MemberName name, Location loc) { if (DeclarationFound){ - Compiler.Report.Error (1529, un.Location, "A using clause must precede all other namespace elements except extern alias declarations"); + Compiler.Report.Error (1529, loc, "A using clause must precede all other namespace elements except extern alias declarations"); } - AddAlias (un); + AddUsingAlias (new LocalUsingAliasEntry (alias, name, loc)); } - void AddAlias (UsingAliasNamespace un) + public void AddUsingExternalAlias (string alias, Location loc, Report Report) { - if (clauses == null) { - clauses = new List (); - } else { - foreach (var entry in clauses) { - var a = entry as UsingAliasNamespace; - if (a != null && a.Alias.Equals (un.Alias)) { - Compiler.Report.SymbolRelatedToPreviousError (a.Location, ""); - Compiler.Report.Error (1537, un.Location, - "The using alias `{0}' appeared previously in this namespace", un.Alias.GetSignatureForError ()); + bool not_first = using_clauses != null || DeclarationFound; + if (using_aliases != null && !not_first) { + foreach (NamespaceUsingAlias uae in using_aliases) { + if (uae is LocalUsingAliasEntry) { + not_first = true; + break; } } } - clauses.Add (un); + if (not_first) + Report.Error (439, loc, "An extern alias declaration must precede all other elements"); + + if (alias == "global") { + Error_GlobalNamespaceRedefined (loc, Report); + return; + } + + AddUsingAlias (new NamespaceUsingAlias (alias, loc)); + } + + void AddUsingAlias (NamespaceUsingAlias uae) + { + if (using_aliases == null) { + using_aliases = new List (); + } else { + foreach (NamespaceUsingAlias entry in using_aliases) { + if (uae.Alias == entry.Alias) { + Compiler.Report.SymbolRelatedToPreviousError (uae.Location, uae.Alias); + Compiler.Report.Error (1537, entry.Location, "The using alias `{0}' appeared previously in this namespace", + entry.Alias); + return; + } + } + } - resolved = false; + using_aliases.Add (uae); } // @@ -737,7 +821,7 @@ namespace Mono.CSharp { public ExtensionMethodCandidates LookupExtensionMethod (TypeSpec extensionType, string name, int arity) { List candidates = null; - foreach (Namespace n in namespace_using_table) { + foreach (Namespace n in GetUsingTable ()) { var a = n.LookupExtensionMethod (this, extensionType, name, arity); if (a == null) continue; @@ -782,7 +866,7 @@ namespace Mono.CSharp { IEnumerable all = Enumerable.Empty (); for (NamespaceContainer curr_ns = this; curr_ns != null; curr_ns = curr_ns.ImplicitParent){ - foreach (Namespace using_ns in namespace_using_table){ + foreach (Namespace using_ns in GetUsingTable ()){ if (prefix.StartsWith (using_ns.Name)){ int ld = prefix.LastIndexOf ('.'); if (ld != -1){ @@ -797,35 +881,18 @@ namespace Mono.CSharp { return all.Distinct ().ToList (); } - - - // - // Looks-up a alias named @name in this and surrounding namespace declarations - // - public FullNamedExpression LookupExternAlias (string name) - { - if (aliases == null) - return null; - - UsingAliasNamespace uan; - if (aliases.TryGetValue (name, out uan) && uan is UsingExternAlias) - return uan.ResolvedExpression; - - return null; - } - // // Looks-up a alias named @name in this and surrounding namespace declarations - // public FullNamedExpression LookupNamespaceAlias (string name) { for (NamespaceContainer n = this; n != null; n = n.ImplicitParent) { - if (n.aliases == null) + if (n.using_aliases == null) continue; - UsingAliasNamespace uan; - if (n.aliases.TryGetValue (name, out uan)) - return uan.ResolvedExpression; + foreach (NamespaceUsingAlias ue in n.using_aliases) { + if (ue.Alias == name) + return ue.Resolve (Doppelganger ?? this, Doppelganger == null); + } } return null; @@ -841,19 +908,26 @@ namespace Mono.CSharp { // // Check aliases. // - if (aliases != null && arity == 0) { - UsingAliasNamespace uan; - if (aliases.TryGetValue (name, out uan)) { - if (fne != null) { - // TODO: Namespace has broken location - //Report.SymbolRelatedToPreviousError (fne.Location, null); - Compiler.Report.SymbolRelatedToPreviousError (uan.Location, null); - Compiler.Report.Error (576, loc, - "Namespace `{0}' contains a definition with same name as alias `{1}'", - GetSignatureForError (), name); - } + if (using_aliases != null && arity == 0) { + foreach (NamespaceUsingAlias ue in using_aliases) { + if (ue.Alias == name) { + if (fne != null) { + if (Doppelganger != null) { + if (mode == LookupMode.Normal) { + // TODO: Namespace has broken location + //Report.SymbolRelatedToPreviousError (fne.Location, null); + Compiler.Report.SymbolRelatedToPreviousError (ue.Location, null); + Compiler.Report.Error (576, loc, + "Namespace `{0}' contains a definition with same name as alias `{1}'", + GetSignatureForError (), name); + } + } else { + return fne; + } + } - return uan.ResolvedExpression; + return ue.Resolve (Doppelganger ?? this, Doppelganger == null); + } } } @@ -867,11 +941,9 @@ namespace Mono.CSharp { // Check using entries. // FullNamedExpression match = null; - foreach (Namespace using_ns in namespace_using_table) { - // + foreach (Namespace using_ns in GetUsingTable ()) { // A using directive imports only types contained in the namespace, it // does not import any nested namespaces - // fne = using_ns.LookupType (this, name, arity, mode, loc); if (fne == null) continue; @@ -911,20 +983,41 @@ namespace Mono.CSharp { return match; } + Namespace [] GetUsingTable () + { + if (namespace_using_table != null) + return namespace_using_table; + + if (using_clauses == null) + return empty_namespaces; + + var list = new List (using_clauses.Count); + + foreach (NamespaceUsing ue in using_clauses) { + Namespace using_ns = ue.Resolve (Doppelganger); + if (using_ns == null) + continue; + + list.Add (using_ns); + } + + if (Compiler.Settings.StatementMode) + return list.ToArray (); + + namespace_using_table = list.ToArray (); + return namespace_using_table; + } + public int SymbolFileID { get { if (symfile_id == 0 && file.SourceFileEntry != null) { int parent_id = parent == null ? 0 : parent.SymbolFileID; string [] using_list = empty_using_list; - if (clauses != null) { - // TODO: Why is it needed, what to do with aliases - var ul = new List (); - foreach (var c in clauses) { - ul.Add (c.NamespaceName.GetName ()); - } - - using_list = ul.ToArray (); + if (using_clauses != null) { + using_list = new string [using_clauses.Count]; + for (int i = 0; i < using_clauses.Count; i++) + using_list [i] = ((NamespaceUsing) using_clauses [i]).MemberName.GetName (); } symfile_id = SymbolWriter.DefineNamespace (ns.Name, file.CompileUnitEntry, using_list, parent_id); @@ -943,6 +1036,11 @@ namespace Mono.CSharp { Console.WriteLine (" Try using -pkg:" + s); } + public static void Error_GlobalNamespaceRedefined (Location loc, Report Report) + { + Report.Error (1681, loc, "The global extern alias cannot be redefined"); + } + public static void Error_NamespaceNotFound (Location loc, string name, Report Report) { Report.Error (246, loc, "The type or namespace name `{0}' could not be found. Are you missing a using directive or an assembly reference?", @@ -971,76 +1069,29 @@ namespace Mono.CSharp { } } - public void Define () + /// + /// Used to validate that all the using clauses are correct + /// after we are finished parsing all the files. + /// + public void Resolve () { if (resolved) return; - // FIXME: Because we call Define from bottom not top - if (parent != null) - parent.Define (); - - namespace_using_table = empty_namespaces; resolved = true; - if (clauses != null) { - var list = new List (clauses.Count); - bool post_process_using_aliases = false; - - for (int i = 0; i < clauses.Count; ++i) { - var entry = clauses[i]; - - if (entry.Alias != null) { - if (aliases == null) - aliases = new Dictionary (); - - // - // Aliases are not available when resolving using section - // except extern aliases - // - if (entry is UsingExternAlias) { - entry.Define (this); - if (entry.ResolvedExpression != null) - aliases.Add (entry.Alias.Name, (UsingExternAlias) entry); - - clauses.RemoveAt (i--); - } else { - post_process_using_aliases = true; - } - - continue; - } - - entry.Define (this); - - Namespace using_ns = entry.ResolvedExpression as Namespace; - if (using_ns == null) - continue; - - if (list.Contains (using_ns)) { - Compiler.Report.Warning (105, 3, entry.Location, - "The using directive for `{0}' appeared previously in this namespace", using_ns.GetSignatureForError ()); - } else { - list.Add (using_ns); - } - } - - namespace_using_table = list.ToArray (); - - if (post_process_using_aliases) { - for (int i = 0; i < clauses.Count; ++i) { - var entry = clauses[i]; - if (entry.Alias != null) { - entry.Define (this); - if (entry.ResolvedExpression != null) { - aliases.Add (entry.Alias.Name, (UsingAliasNamespace) entry); - } + if (using_aliases != null) { + foreach (NamespaceUsingAlias ue in using_aliases) + ue.Resolve (Doppelganger, Doppelganger == null); + } - clauses.RemoveAt (i--); - } - } - } + if (using_clauses != null) { + foreach (NamespaceUsing ue in using_clauses) + ue.Resolve (Doppelganger); } + + if (parent != null) + parent.Resolve (); } public string GetSignatureForError () @@ -1067,7 +1118,7 @@ namespace Mono.CSharp { } public bool IsObsolete { - get { return false; } + get { return SlaveDeclSpace.IsObsolete; } } public bool IsUnsafe { @@ -1085,199 +1136,106 @@ namespace Mono.CSharp { #endregion } - public class UsingNamespace + public class NamespaceUsing { readonly MemberName name; - readonly Location loc; - protected FullNamedExpression resolved; + Namespace resolved; - public UsingNamespace (MemberName name, Location loc) + public NamespaceUsing (MemberName name) { this.name = name; - this.loc = loc; } - #region Properties - - public virtual MemberName Alias { - get { - return null; - } - } - - public Location Location { - get { - return loc; - } + public string GetSignatureForError () + { + return name.GetSignatureForError (); } - public MemberName NamespaceName { - get { - return name; - } + public Location Location + { + get { return name.Location; } } - public FullNamedExpression ResolvedExpression { - get { - return resolved; - } + public MemberName MemberName + { + get { return name; } } - #endregion - - public string GetSignatureForError () + public string Name { - return name.GetSignatureForError (); + get { return GetSignatureForError (); } } - public virtual void Define (NamespaceContainer ctx) + public Namespace Resolve (IMemberContext rc) { - resolved = name.GetTypeExpression ().ResolveAsTypeOrNamespace (ctx); - var ns = resolved as Namespace; - if (ns == null) { - if (resolved != null) { - ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (resolved.Type); - ctx.Module.Compiler.Report.Error (138, Location, - "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", - GetSignatureForError ()); - } + if (resolved != null) + return resolved; + + FullNamedExpression fne = name.GetTypeExpression ().ResolveAsTypeOrNamespace (rc); + if (fne == null) + return null; + + resolved = fne as Namespace; + if (resolved == null) { + rc.Module.Compiler.Report.SymbolRelatedToPreviousError (fne.Type); + rc.Module.Compiler.Report.Error (138, Location, + "`{0}' is a type not a namespace. A using namespace directive can only be applied to namespaces", + GetSignatureForError ()); } + return resolved; } } - public class UsingExternAlias : UsingAliasNamespace + public class NamespaceUsingAlias { - public UsingExternAlias (MemberName alias, Location loc) - : base (alias, null, loc) + public readonly string Alias; + public Location Location; + + public NamespaceUsingAlias (string alias, Location loc) { + this.Alias = alias; + this.Location = loc; } - public override void Define (NamespaceContainer ctx) + public virtual FullNamedExpression Resolve (IMemberContext rc, bool local) { - resolved = ctx.Module.GetRootNamespace (Alias.Name); - if (resolved == null) { - ctx.Module.Compiler.Report.Error (430, Location, + FullNamedExpression fne = rc.Module.GetRootNamespace (Alias); + if (fne == null) { + rc.Module.Compiler.Report.Error (430, Location, "The extern alias `{0}' was not specified in -reference option", - Alias.Name); + Alias); } + + return fne; } } - public class UsingAliasNamespace : UsingNamespace + class LocalUsingAliasEntry : NamespaceUsingAlias { - readonly MemberName alias; + FullNamedExpression resolved; + MemberName value; - struct AliasContext : IMemberContext + public LocalUsingAliasEntry (string alias, MemberName name, Location loc) + : base (alias, loc) { - readonly NamespaceContainer ns; - - public AliasContext (NamespaceContainer ns) - { - this.ns = ns; - } - - public TypeSpec CurrentType { - get { - return null; - } - } - - public TypeParameter[] CurrentTypeParameters { - get { - return null; - } - } - - public MemberCore CurrentMemberDefinition { - get { - return null; - } - } - - public bool IsObsolete { - get { - return false; - } - } - - public bool IsUnsafe { - get { - throw new NotImplementedException (); - } - } - - public bool IsStatic { - get { - throw new NotImplementedException (); - } - } - - public ModuleContainer Module { - get { - return ns.Module; - } - } + this.value = name; + } - public string GetSignatureForError () - { - throw new NotImplementedException (); - } + public override FullNamedExpression Resolve (IMemberContext rc, bool local) + { + if (resolved != null || value == null) + return resolved; - public ExtensionMethodCandidates LookupExtensionMethod (TypeSpec extensionType, string name, int arity) - { + if (local) return null; - } - - public FullNamedExpression LookupNamespaceOrType (string name, int arity, LookupMode mode, Location loc) - { - var fne = ns.NS.LookupTypeOrNamespace (ns, name, arity, mode, loc); - if (fne != null) - return fne; - - // - // Only extern aliases are allowed in this context - // - fne = ns.LookupExternAlias (name); - if (fne != null) - return fne; - - if (ns.ImplicitParent != null) - return ns.ImplicitParent.LookupNamespaceOrType (name, arity, mode, loc); + resolved = value.GetTypeExpression ().ResolveAsTypeOrNamespace (rc); + if (resolved == null) { + value = null; return null; } - public FullNamedExpression LookupNamespaceAlias (string name) - { - return ns.LookupNamespaceAlias (name); - } - } - - public UsingAliasNamespace (MemberName alias, MemberName ns, Location loc) - : base (ns, loc) - { - this.alias = alias; - } - - public override MemberName Alias { - get { - return alias; - } - } - - public override void Define (NamespaceContainer ctx) - { - // - // The namespace-or-type-name of a using-alias-directive is resolved as if - // the immediately containing compilation unit or namespace body had no - // using-directives. A using-alias-directive may however be affected - // by extern-alias-directives in the immediately containing compilation - // unit or namespace body - // - // We achieve that by introducing alias-context which redirect any local - // namespace or type resolve calls to parent namespace - // - resolved = NamespaceName.GetTypeExpression ().ResolveAsTypeOrNamespace (new AliasContext (ctx)); + return resolved; } } } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs index e451167dc5..b173304cb2 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs @@ -1001,24 +1001,20 @@ namespace Mono.CSharp.Nullable Expression left, right; Unwrap unwrap; + public Expression Left { + get { return this.left; } + } + + public Expression Right { + get { return this.right; } + } + public NullCoalescingOperator (Expression left, Expression right, Location loc) { this.left = left; this.right = right; this.loc = loc; } - - public Expression LeftExpression { - get { - return left; - } - } - - public Expression Right { - get { - return right; - } - } public override Expression CreateExpressionTree (ResolveContext ec) { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs index 0a5590703e..9fb4a57ffe 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs @@ -234,7 +234,10 @@ namespace Mono.CSharp { TemporaryVariableReference expr_tree_variable; HoistedVariable hoisted_variant; - + + public Modifier ParameterModifier { get { return modFlags; }} + public Expression DefaultExpression { get { return default_expr; }} + public Parameter (FullNamedExpression type, string name, Modifier mod, Attributes attrs, Location loc) { this.name = name; @@ -248,12 +251,6 @@ namespace Mono.CSharp { #region Properties - public Expression DefaultExpression { - get { - return default_expr; - } - } - public DefaultParameterValueExpression DefaultValue { get { return default_expr as DefaultParameterValueExpression; @@ -282,12 +279,6 @@ namespace Mono.CSharp { } } - public Modifier ParameterModifier { - get { - return modFlags; - } - } - public TypeSpec Type { get { return parameter_type; @@ -1221,7 +1212,7 @@ namespace Mono.CSharp { // // Default parameter value expression. We need this wrapper to handle - // default parameter values of folded constants (e.g. indexer parameters). + // default parameter values of folded constants when for indexer parameters // The expression is resolved only once but applied to two methods which // both share reference to this expression and we ensure that resolving // this expression always returns same instance diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs index 6f415517b4..7c8f069b17 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs @@ -733,12 +733,6 @@ namespace Mono.CSharp { } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - - void CreateAutomaticProperty () { // Create backing field @@ -763,6 +757,11 @@ namespace Mono.CSharp Set.Block.AddStatement (new StatementExpression (a)); } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override bool Define () { if (!base.Define ()) @@ -858,11 +857,6 @@ namespace Mono.CSharp { } - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override bool Define() { if (!base.Define ()) @@ -877,6 +871,12 @@ namespace Mono.CSharp return attribute_targets; } } + + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + } /// @@ -999,12 +999,6 @@ namespace Mono.CSharp #region Properties - public List Declarators { - get { - return this.declarators; - } - } - bool HasBackingField { get { return !IsInterface && (ModFlags & Modifiers.ABSTRACT) == 0; @@ -1026,14 +1020,14 @@ namespace Mono.CSharp } } - #endregion - - - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); + public List Declarators { + get { + return this.declarators; + } } + #endregion + public void AddDeclarator (FieldDeclarator declarator) { if (declarators == null) @@ -1111,6 +1105,11 @@ namespace Mono.CSharp return true; } + + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } } public abstract class Event : PropertyBasedMember @@ -1514,12 +1513,6 @@ namespace Mono.CSharp #endregion - - public override void Accept (StructuralVisitor visitor) - { - visitor.Visit (this); - } - public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa) { if (a.Type == pa.IndexerName) { @@ -1541,6 +1534,11 @@ namespace Mono.CSharp return Parent.MemberCache.CheckExistingMembersOverloads (this, parameters); } + public override void Accept (StructuralVisitor visitor) + { + visitor.Visit (this); + } + public override bool Define () { if (!base.Define ()) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs index 5181e3f325..6f2f183a83 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/reflection.cs @@ -442,7 +442,12 @@ namespace Mono.CSharp return assembly.GetType (compiler.BuiltinTypes.Object.FullName) != null; } - public override Assembly LoadAssemblyFile (string assembly, bool isImplicitReference) + public override Assembly LoadAssemblyFile (string fileName) + { + return LoadAssemblyFile (fileName, false); + } + + Assembly LoadAssemblyFile (string assembly, bool soft) { Assembly a = null; @@ -459,7 +464,7 @@ namespace Mono.CSharp a = Assembly.Load (ass); } } catch (FileNotFoundException) { - bool err = !isImplicitReference; + bool err = !soft; foreach (string dir in paths) { string full_path = Path.Combine (dir, assembly); if (!assembly.EndsWith (".dll") && !assembly.EndsWith (".exe")) @@ -485,6 +490,11 @@ namespace Mono.CSharp return a; } + public override Assembly LoadAssemblyDefault (string fileName) + { + return LoadAssemblyFile (fileName, true); + } + Module LoadModuleFile (AssemblyDefinitionDynamic assembly, string module) { string total_log = ""; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs index 48f2b266b3..962937befc 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs @@ -367,7 +367,7 @@ namespace Mono.CSharp public RootNamespace CreateRootNamespace (string alias) { if (alias == global_ns.Alias) { - RootNamespace.Error_GlobalNamespaceRedefined (Report, Location.Null); + NamespaceContainer.Error_GlobalNamespaceRedefined (Location.Null, Report); return global_ns; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs index 104e15371f..2e9d9731f7 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs @@ -154,11 +154,9 @@ namespace Mono.CSharp { FalseStatement = false_statement; loc = l; } - + public Expression Expr { - get { - return this.expr; - } + get { return this.expr; } } public override bool Resolve (BlockContext ec) @@ -641,11 +639,9 @@ namespace Mono.CSharp { this.expr = expr; loc = expr.Location; } - + public ExpressionStatement Expr { - get { - return this.expr; - } + get { return this.expr; } } protected override void CloneTo (CloneContext clonectx, Statement t) @@ -680,7 +676,7 @@ namespace Mono.CSharp { this.expr = expr; } - public Expression Expr { + public Expression Expression { get { return expr; } @@ -783,30 +779,25 @@ namespace Mono.CSharp { /// public class Return : ExitStatement { - Expression expr; + public Expression Expr { get; protected set; } public Return (Expression expr, Location l) { - this.expr = expr; + Expr = expr; loc = l; } #region Properties - - public Expression Expr { + public Expression Expression { get { - return expr; - } - protected set { - expr = value; + return Expr; } } - #endregion protected override bool DoResolve (BlockContext ec) { - if (expr == null) { + if (Expr == null) { if (ec.ReturnType.Kind == MemberKind.Void) return true; @@ -820,7 +811,7 @@ namespace Mono.CSharp { // // Extra trick not to emit ret/leave inside awaiter body // - expr = EmptyExpression.Null; + Expr = EmptyExpression.Null; return true; } } @@ -836,7 +827,7 @@ namespace Mono.CSharp { return false; } - expr = expr.Resolve (ec); + Expr = Expr.Resolve (ec); TypeSpec block_return_type = ec.ReturnType; AnonymousExpression am = ec.CurrentAnonymousMethod; @@ -854,12 +845,12 @@ namespace Mono.CSharp { var async_block = am as AsyncInitializer; if (async_block != null) { - if (expr != null) { + if (Expr != null) { var storey = (AsyncTaskStorey) am.Storey; var async_type = storey.ReturnType; if (async_type == null && async_block.ReturnTypeInference != null) { - async_block.ReturnTypeInference.AddCommonTypeBound (expr.Type); + async_block.ReturnTypeInference.AddCommonTypeBound (Expr.Type); return true; } @@ -880,20 +871,20 @@ namespace Mono.CSharp { } } else { var l = am as AnonymousMethodBody; - if (l != null && l.ReturnTypeInference != null && expr != null) { - l.ReturnTypeInference.AddCommonTypeBound (expr.Type); + if (l != null && l.ReturnTypeInference != null && Expr != null) { + l.ReturnTypeInference.AddCommonTypeBound (Expr.Type); return true; } } } - if (expr == null) + if (Expr == null) return false; - if (expr.Type != block_return_type) { - expr = Convert.ImplicitConversionRequired (ec, expr, block_return_type, loc); + if (Expr.Type != block_return_type) { + Expr = Convert.ImplicitConversionRequired (ec, Expr, block_return_type, loc); - if (expr == null) { + if (Expr == null) { if (am != null && block_return_type == ec.ReturnType) { ec.Report.Error (1662, loc, "Cannot convert `{0}' to delegate type `{1}' because some of the return types in the block are not implicitly convertible to the delegate return type", @@ -908,8 +899,8 @@ namespace Mono.CSharp { protected override void DoEmit (EmitContext ec) { - if (expr != null) { - expr.Emit (ec); + if (Expr != null) { + Expr.Emit (ec); var async_body = ec.CurrentAnonymousMethod as AsyncInitializer; if (async_body != null) { @@ -945,10 +936,9 @@ namespace Mono.CSharp { { Return target = (Return) t; // It's null for simple return; - if (expr != null) - target.expr = expr.Clone (clonectx); + if (Expr != null) + target.Expr = Expr.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1145,11 +1135,9 @@ namespace Mono.CSharp { expr = e; loc = l; } - + public Expression Expr { - get { - return this.expr; - } + get { return this.expr; } } public override bool Resolve (BlockContext ec) @@ -1219,13 +1207,11 @@ namespace Mono.CSharp { this.expr = expr; loc = l; } - + public Expression Expr { - get { - return this.expr; - } + get { return this.expr; } } - + public override bool Resolve (BlockContext ec) { if (expr == null) { @@ -1886,7 +1872,6 @@ namespace Mono.CSharp { public static string GetCompilerGeneratedName (Block block) { - // HACK: Debugger depends on the name semantics return "$locvar" + block.ParametersBlock.TemporaryLocalsCount++.ToString ("X"); } @@ -2003,7 +1988,7 @@ namespace Mono.CSharp { int? resolving_init_idx; - Block original; + protected Block original; #if DEBUG static int id; @@ -2050,9 +2035,6 @@ namespace Mono.CSharp { get { return original; } - protected set { - original = value; - } } public bool IsCompilerGenerated { @@ -2069,11 +2051,10 @@ namespace Mono.CSharp { get { return (flags & Flags.Unsafe) != 0; } set { flags |= Flags.Unsafe; } } - + public List Statements { - get { return statements; } + get { return this.statements; } } - #endregion public Block CreateSwitchBlock (Location start) @@ -2347,7 +2328,6 @@ namespace Mono.CSharp { foreach (Statement s in statements) target.statements.Add (s.Clone (clonectx)); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -2712,7 +2692,7 @@ namespace Mono.CSharp { // Overwrite original for comparison purposes when linking cross references // between anonymous methods // - Original = source; + original = source; } #region Properties @@ -2926,7 +2906,7 @@ namespace Mono.CSharp { ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation); pb.EndLocation = EndLocation; pb.statements = statements; - pb.Original = this; + pb.original = this; var iterator = new Iterator (pb, method, host, iterator_type, is_enumerable); am_storey = new IteratorStorey (iterator); @@ -2941,7 +2921,7 @@ namespace Mono.CSharp { ParametersBlock pb = new ParametersBlock (this, ParametersCompiled.EmptyReadOnlyParameters, StartLocation); pb.EndLocation = EndLocation; pb.statements = statements; - pb.Original = this; + pb.original = this; var block_type = host.Module.Compiler.BuiltinTypes.Void; var initializer = new AsyncInitializer (pb, host, block_type); @@ -4488,13 +4468,11 @@ namespace Mono.CSharp { { this.expr = expr; } - + public Expression Expr { - get { - return this.expr; - } + get { return this.expr; } } - + public override bool Resolve (BlockContext ec) { expr = expr.Resolve (ec); @@ -5173,12 +5151,6 @@ namespace Mono.CSharp { this.fini = fini; } - public Block Finallyblock { - get { - return fini; - } - } - public override bool Resolve (BlockContext ec) { bool ok = true; @@ -5230,20 +5202,23 @@ namespace Mono.CSharp { public class TryCatch : ExceptionStatement { public Block Block; - List clauses; + public List Specific; + public Catch General; readonly bool inside_try_finally; public TryCatch (Block block, List catch_clauses, Location l, bool inside_try_finally) : base (l) { this.Block = block; - this.clauses = catch_clauses; + this.Specific = catch_clauses; this.inside_try_finally = inside_try_finally; - } - - public List Clauses { - get { - return clauses; + + if (catch_clauses != null) { + Catch c = catch_clauses [0]; + if (c.IsGeneral) { + this.General = c; + catch_clauses.RemoveAt (0); + } } } @@ -5262,8 +5237,9 @@ namespace Mono.CSharp { if (!Block.Resolve (ec)) ok = false; - for (int i = 0; i < clauses.Count; ++i) { - var c = clauses[i]; + TypeSpec[] prev_catches = new TypeSpec [Specific.Count]; + int last_index = 0; + foreach (Catch c in Specific){ ec.CurrentBranching.CreateSibling (c.Block, FlowBranching.SiblingType.Catch); if (!c.Resolve (ec)) { @@ -5272,40 +5248,37 @@ namespace Mono.CSharp { } TypeSpec resolved_type = c.CatchType; - for (int ii = 0; ii < clauses.Count; ++ii) { - if (ii == i) - continue; - - if (clauses[ii].IsGeneral) { - if (resolved_type.BuiltinType != BuiltinTypeSpec.Type.Exception) - continue; - - if (!ec.Module.DeclaringAssembly.WrapNonExceptionThrows) - continue; - - if (!ec.Module.PredefinedAttributes.RuntimeCompatibility.IsDefined) - continue; + for (int ii = 0; ii < last_index; ++ii) { + if (resolved_type == prev_catches[ii] || TypeSpec.IsBaseClass (resolved_type, prev_catches[ii], true)) { + ec.Report.Error (160, c.loc, + "A previous catch clause already catches all exceptions of this or a super type `{0}'", + TypeManager.CSharpName (prev_catches [ii])); + ok = false; + } + } - ec.Report.Warning (1058, 1, c.loc, - "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'"); + prev_catches [last_index++] = resolved_type; + } + if (General != null) { + foreach (Catch c in Specific) { + if (c.CatchType.BuiltinType != BuiltinTypeSpec.Type.Exception) continue; - } - if (ii >= i) + if (!ec.Module.DeclaringAssembly.WrapNonExceptionThrows) continue; - var ct = clauses[ii].CatchType; - if (ct == null) + if (!ec.Module.PredefinedAttributes.RuntimeCompatibility.IsDefined) continue; - if (resolved_type == ct || TypeSpec.IsBaseClass (resolved_type, ct, true)) { - ec.Report.Error (160, c.loc, - "A previous catch clause already catches all exceptions of this or a super type `{0}'", - ct.GetSignatureForError ()); - ok = false; - } + ec.Report.Warning (1058, 1, c.loc, + "A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a `System.Runtime.CompilerServices.RuntimeWrappedException'"); } + + ec.CurrentBranching.CreateSibling (General.Block, FlowBranching.SiblingType.Catch); + + if (!General.Resolve (ec)) + ok = false; } ec.EndFlowBranching (); @@ -5320,9 +5293,12 @@ namespace Mono.CSharp { Block.Emit (ec); - foreach (Catch c in clauses) + foreach (Catch c in Specific) c.Emit (ec); + if (General != null) + General.Emit (ec); + if (!inside_try_finally) ec.EndExceptionBlock (); } @@ -5332,13 +5308,14 @@ namespace Mono.CSharp { TryCatch target = (TryCatch) t; target.Block = clonectx.LookupBlock (Block); - if (clauses != null){ - target.clauses = new List (); - foreach (Catch c in clauses) - target.clauses.Add ((Catch) c.Clone (clonectx)); + if (General != null) + target.General = (Catch) General.Clone (clonectx); + if (Specific != null){ + target.Specific = new List (); + foreach (Catch c in Specific) + target.Specific.Add ((Catch) c.Clone (clonectx)); } } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -5491,7 +5468,7 @@ namespace Mono.CSharp { declarators = null; return stmt; - } + } public override object Accept (StructuralVisitor visitor) { @@ -5515,7 +5492,7 @@ namespace Mono.CSharp { #region Properties - public Expression Expr { + public Expression Expression { get { return decl.Variable == null ? decl.Initializer : null; } @@ -5594,7 +5571,6 @@ namespace Mono.CSharp { target.decl = (VariableDeclaration) decl.Clone (clonectx); target.stmt = stmt.Clone (clonectx); } - public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -6138,6 +6114,14 @@ namespace Mono.CSharp { LocalVariable variable; Expression expr; Statement statement; + + public Expression TypeExpr { + get { return this.type; } + } + + public LocalVariable Variable { + get { return this.variable; } + } public Foreach (Expression type, LocalVariable var, Expression expr, Statement stmt, Location l) { @@ -6148,23 +6132,14 @@ namespace Mono.CSharp { loc = l; } - public Expression Expr { - get { return expr; } - } - public Statement Statement { get { return statement; } } - public Expression TypeExpression { - get { return type; } - } - - public LocalVariable Variable { - get { return variable; } + public Expression Expr { + get { return this.expr; } } - public override bool Resolve (BlockContext ec) { expr = expr.Resolve (ec); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs index 3a518a4fed..d1025a2176 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs @@ -37,7 +37,7 @@ namespace Mono.CSharp { return System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode (obj); } } -#if !NET_4_0 + public class Tuple : IEquatable> { public Tuple (T1 item1, T2 item2) @@ -107,7 +107,6 @@ namespace Mono.CSharp { return new Tuple (item1, item2, item3); } } -#endif static class ArrayComparer {