From 761871ab36ef5e5502409c184c3ea110dc9e1f9d Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Mon, 13 Mar 2017 10:18:23 -0700 Subject: [PATCH 01/20] Removed function already available in Declaration class --- .../Symbols/DeclarationFinder.cs | 45 ++----------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs index edc1232712..2779623e9a 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs @@ -821,13 +821,9 @@ public IEnumerable GetAccessibleDeclarations(Declaration target) { if (target == null) { return Enumerable.Empty(); } - var declarations = GetAllDeclarations(); - - //declarations based on Accessibility - var projectDeclaration = RetrieveDeclarationType(target, DeclarationType.Project); - var moduleDeclaration = GetModuleDeclaration(target); - return declarations - .Where(callee => AccessibilityCheck.IsAccessible(projectDeclaration, moduleDeclaration, target.ParentDeclaration, callee)).ToList(); + return GetAllDeclarations() + .Where(callee => AccessibilityCheck.IsAccessible(Declaration.GetProjectParent(target) + , Declaration.GetModuleParent(target), target.ParentDeclaration, callee)).ToList(); } public IEnumerable GetDeclarationsWithIdentifiersToAvoid(Declaration target) @@ -874,7 +870,7 @@ private IEnumerable GetAllDeclarations() private bool IsInProceduralModule(Declaration candidateDeclaration) { - var candidateModuleDeclaration = GetModuleDeclaration(candidateDeclaration); + var candidateModuleDeclaration = Declaration.GetModuleParent(candidateDeclaration); if (null == candidateModuleDeclaration) { return false; } return (candidateModuleDeclaration.DeclarationType == DeclarationType.ProceduralModule); @@ -916,38 +912,5 @@ private bool IsMethodOrProperty(Declaration declaration) || (declaration.DeclarationType == DeclarationType.Procedure) || (declaration.DeclarationType == DeclarationType.Function); } - - private Declaration GetModuleDeclaration(Declaration declaration) - { - var classDeclaration = RetrieveDeclarationType(declaration, DeclarationType.ClassModule); - if (null != classDeclaration) - { - return classDeclaration; - } - var moduleDeclaration = RetrieveDeclarationType(declaration, DeclarationType.ProceduralModule); - if (null != moduleDeclaration) - { - return moduleDeclaration; - } - return null; - } - - private Declaration RetrieveDeclarationType(Declaration start, DeclarationType goalType) - { - if (start.DeclarationType == goalType) { return start; } - - var next = start.ParentDeclaration; - for (var idx = 0; idx < 10; idx++) - { - if (next == null) { return null; } - - if (next.DeclarationType == goalType) - { - return next; - } - next = next.ParentDeclaration; - } - return null; - } } } From 2d80a08693cec3c6df39a47681001ef529444b0e Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Tue, 14 Mar 2017 02:36:53 -0700 Subject: [PATCH 02/20] Reworked to simplify tests --- .../Symbols/DeclarationFinderTests.cs | 572 +++++++++++------- 1 file changed, 341 insertions(+), 231 deletions(-) diff --git a/RubberduckTests/Symbols/DeclarationFinderTests.cs b/RubberduckTests/Symbols/DeclarationFinderTests.cs index c391ca6b8a..928f18d9b8 100644 --- a/RubberduckTests/Symbols/DeclarationFinderTests.cs +++ b/RubberduckTests/Symbols/DeclarationFinderTests.cs @@ -11,186 +11,238 @@ using System.Threading; using Rubberduck.VBEditor; using Antlr4.Runtime; -using Rubberduck.Inspections; +using Rubberduck.Common; namespace RubberduckTests.Symbols { + [TestClass] public class DeclarationFinderTests { - private AccessibilityTestsDataObject _tdo; [TestMethod] [TestCategory("Resolver")] - public void DeclarationFinder_FindsAccessibleDeclarations_InProcedure() + public void DeclarationFinder_InProcedure_MethodDeclaration() { - SetupSUT("TestProject"); - var scopeName = "ProcedureScope"; - var names = new List(); - _tdo.AccessibleNames.TryGetValue(scopeName, out names); - TestAccessibleDeclarations(names, scopeName, true, false); + var expectedResults = new string[] + { + "Option Explicit", + "member1", + "adder", + "Foo" + }; + + string moduleContent1 = GetInProcedure_MethodDeclaration_moduleContent1(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "CFirstClass", "Foo", "Function Foo() As Long"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.ClassModule); + + TestAccessibleDeclarations(tdo, expectedResults); } [TestMethod] [TestCategory("Resolver")] - public void DeclarationFinder_FindsAccessibleDeclarations_ModuleScope() + public void DeclarationFinder_InProcedure_LocalVariableReference() { - SetupSUT("TestProject"); - var scopeName = "ModuleScope"; - var names = new List(); - _tdo.AccessibleNames.TryGetValue(scopeName, out names); - TestAccessibleDeclarations(names, scopeName, true, false); + var expectedResults = new string[] + { + "Option Explicit", + "member1", + "Foo" + }; + + string moduleContent1 = GetInProcedure_LocalVariableReference_moduleContent1(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modTest", "adder", "member1 + adder"); + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + + TestAccessibleDeclarations(tdo, expectedResults); } [TestMethod] [TestCategory("Resolver")] - public void DeclarationFinder_FindsAccessibleDeclarations_GlobalScope() + public void DeclarationFinder_InProcedure_MemberDeclaration() { - SetupSUT("TestProject"); - var scopeName = "GlobalScope"; - var names = new List(); - _tdo.AccessibleNames.TryGetValue(scopeName, out names); - TestAccessibleDeclarations(names, scopeName, true, true); + var expectedResults = new string[] + { + "Option Explicit", + "Foo" + }; + + string moduleContent1 = GetInProcedure_MemberDeclaration_moduleContent1(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "CFirstClass", "member1", "member1 + adder"); + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.ClassModule); + + TestAccessibleDeclarations(tdo, expectedResults); } [TestMethod] - [TestCategory("Resolver")] - public void DeclarationFinder_FindsAccessibleDeclarations_Inaccessible() + public void DeclarationFinder_ModuleScope() { - SetupSUT("TestProject"); - string[] inaccessible = {"result", "mySecondEggo","localVar" , "FooFighters" , "filename", "implicitVar"}; - - TestAccessibleDeclarations(inaccessible.ToList(), "GlobalScope", false, false); + var expectedResults = new string[] + { + "Option Explicit", + "Foo", + "member2", + "Foo2" + }; + + string moduleContent1 = GetModuleScope_moduleContent1(); + string moduleContent2 = GetModuleScope_moduleContent2(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "CFirstClass", "member1", "member1 + adder"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.ClassModule); + AddTestComponent(tdo, "modOne", moduleContent2, ComponentType.StandardModule); + + TestAccessibleDeclarations(tdo, expectedResults); } [TestMethod] [TestCategory("Resolver")] - public void DeclarationFinder_FindsAccessibleDeclarations_All() - { - //Tests that the DeclarationFinder does not return any unexpected declarations - //excluding Reserved Identifiers - SetupSUT("TestProject"); - var allNamesUsedInTests = new List(); - List names; - foreach( var Key in _tdo.AccessibleNames.Keys) + public void DeclarationFinder_Module_To_ClassScope() + { + var expectedResults = new string[] { - _tdo.AccessibleNames.TryGetValue(Key, out names); - allNamesUsedInTests.AddRange(names); - } - allNamesUsedInTests.AddRange(_tdo.Components.Select(n => n.Name)); + "Option Explicit", + "Foo2", + "Bar", + "member11", + "Foo" + }; - var target = GetTargetForAccessibilityTests(); + string modOneContent1 = GetModule_To_ClassScope_moduleContent1(); + string moduleContent2 = GetModule_To_ClassScope_moduleContent2(); - var accessibleNames = - _tdo.Parser.State.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(target) - .Select( dec => dec.IdentifierName); + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modOne", "member2", "member2 * 4"); - Assert.IsTrue(accessibleNames.Count() > 0); + AddTestComponent(tdo, tdo.SelectionModuleName, modOneContent1, ComponentType.ClassModule); + AddTestComponent(tdo, "CFirstClass", moduleContent2, ComponentType.StandardModule); - var unexpectedDeclarations = accessibleNames.Except(allNamesUsedInTests).ToList().Where(n => !VariableNameValidator.IsReservedIdentifier(n)); + TestAccessibleDeclarations(tdo, expectedResults); + } - string failureMessage = string.Empty; - if( unexpectedDeclarations.Count() > 0) + [TestMethod, Ignore] + [TestCategory("Resolver")] + public void DeclarationFinder_PrivateSub_RespectPublicSubInOtherModule() + { + var expectedResults = new string[] { - failureMessage = unexpectedDeclarations.Count().ToString() + " unexpected declaration(s) found:"; - foreach(string identifier in unexpectedDeclarations) - { - failureMessage = failureMessage + " '" + identifier + "', "; - } - failureMessage = failureMessage.Substring(0, failureMessage.Length - 2); - } + "Option Explicit", + "DoThis", + "filename", + "member1" + }; + + string moduleContent1 = GetPrivateSub_RespectPublicSubInOtherModule_moduleContent1(); + string moduleContent2 = GetPrivateSub_RespectPublicSubInOtherModule_moduleContent2(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modOne", "SetFilename", "SetFilename filename"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + AddTestComponent(tdo, "modTwo", moduleContent2, ComponentType.StandardModule); - Assert.AreEqual(0, unexpectedDeclarations.Count(), failureMessage); + TestAccessibleDeclarations(tdo, expectedResults); } - private void TestAccessibleDeclarations(IEnumerable namesToTest, string scope, bool containsIdentifiers, bool includeModuleNames) + private void TestAccessibleDeclarations(AccessibilityTestsDataObject tdo, string[] testSpecificExpectedResults) { - var allIdentifiersToCheck = namesToTest.ToList(); - if (includeModuleNames) - { - allIdentifiersToCheck.AddRange(_tdo.Components.Select(n => n.Name)); - } + SetExpectedResults(tdo, testSpecificExpectedResults); - var target = GetTargetForAccessibilityTests(); + PrepareScenarioData(tdo); var declarationFinderResults = - _tdo.Parser.State.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(target); + tdo.Parser.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(tdo.Target); var accessibleNames = declarationFinderResults.Select(d => d.IdentifierName); - var messagePreface = "Test failed for " + scope + " identifier: "; - foreach (var identifier in allIdentifiersToCheck) - { - if (containsIdentifiers) - { - Assert.IsTrue(accessibleNames.Contains(identifier), messagePreface + identifier); - } - else - { - Assert.IsFalse(accessibleNames.Contains(identifier), messagePreface + identifier); - } - } - } + Assert.IsTrue(accessibleNames.Count() > 0, "No accessible names detected. 'Target' may be null"); - private Declaration GetTargetForAccessibilityTests() - { - var targets = _tdo.Parser.State.AllUserDeclarations.Where(dec => dec.IdentifierName == _tdo.TargetIdentifier); - if (targets.Count() > 1) - { - Assert.Inconclusive("Multiple targets found with identifier: " + _tdo.TargetIdentifier + ". Test requires a unique identifierName"); - } - return targets.FirstOrDefault(); + //Found names not identified for the test + var additionalNamesFound = accessibleNames.Except(tdo.ExpectedResults).ToList(); + Assert.IsFalse(additionalNamesFound.Any(), "Unexpected identifiers found: " + BuildIdentifierListToDisplay(additionalNamesFound)); + + //GetDeclarationsWithIdentifiersToAvoid(...) did not return all possible conflict identifiers + var missedNames = tdo.ExpectedResults.Except(accessibleNames); + Assert.IsFalse(missedNames.Any(), "Missed identifiers: " + BuildIdentifierListToDisplay(missedNames)); } - private void SetupSUT(string projectName) + private void SetExpectedResults(AccessibilityTestsDataObject tdo, string[] testSpecificExpectedResults) { - if (_tdo != null) { return; } + tdo.ExpectedResults = new List(); + tdo.ExpectedResults.AddRange(testSpecificExpectedResults); - string[] accessibleWithinParentProcedure = { "arg1", "FooBar1", "targetAccessibilityTests", "theSecondArg" }; - string[] accessibleModuleScope = { "memberString", "memberLong", "myEggo", "Foo", "FooBar1", "GoMyEggo", "FooFight" }; - string[] accessibleGlobalScope = { "CantTouchThis", "BigNumber", "DoSomething", "SetFilename", "ShortStory","THE_FILENAME", "TestProject"}; + //Add module name(s) and project name + tdo.ExpectedResults.Add(tdo.SelectionTarget); + tdo.Components.ForEach(c => tdo.ExpectedResults.Add(c.Name)); + tdo.ExpectedResults.Add(tdo.ProjectName); + } - var firstClassBody = FindsAccessibleDeclarations_FirstClassBody(); - var secondClassBody = FindsAccessibleDeclarations_SecondClassBody(); - var firstModuleBody = FindsAccessibleDeclarations_FirstModuleBody(); - var secondModuleBody = FindsAccessibleDeclarations_SecondModuleBody(); + private void PrepareScenarioData(AccessibilityTestsDataObject tdo) + { + tdo.VBE = BuildProject(tdo.ProjectName, tdo.Components); + tdo.Parser = MockParser.CreateAndParse(tdo.VBE); - _tdo = new AccessibilityTestsDataObject(); - _tdo.TargetIdentifier = "targetAccessibilityTests"; - AddAccessibleNames("ProcedureScope", accessibleWithinParentProcedure); - AddAccessibleNames("ModuleScope", accessibleModuleScope); - AddAccessibleNames("GlobalScope", accessibleGlobalScope); + CreateQualifiedSelectionForTestCase(tdo); - AddTestComponent("CFirstClass", firstClassBody, ComponentType.ClassModule); - AddTestComponent("CSecondClass", secondClassBody, ComponentType.ClassModule); - AddTestComponent("modFirst", firstModuleBody, ComponentType.StandardModule); - AddTestComponent("modSecond", secondModuleBody, ComponentType.StandardModule); + IList declarationFinderResults = tdo.Parser.AllUserDeclarations.ToList(); + tdo.Target = declarationFinderResults.FindTarget(tdo.QualifiedSelection); + } - _tdo.VBE = BuildProject("TestProject", _tdo.Components); + private string BuildIdentifierListToDisplay(IEnumerable identifiers) + { + if (!identifiers.Any()) { return ""; } - _tdo.Parser = MockParser.Create(_tdo.VBE, new RubberduckParserState(_tdo.VBE)); - _tdo.Parser.Parse(new CancellationTokenSource()); - if (_tdo.Parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + string result = string.Empty; + string postPend = "', "; + foreach (var identifier in identifiers) + { + result = result + "'" + identifier + postPend; + } + return result.Remove(result.Length - postPend.Length + 1); } - private void AddAccessibleNames( string scope, string[] accessibleNames) + private void CreateQualifiedSelectionForTestCase(AccessibilityTestsDataObject tdo) { - if(null == _tdo.AccessibleNames) + var component = RetrieveComponent(tdo, tdo.SelectionModuleName); + var moduleContent = component.CodeModule.GetLines(1, component.CodeModule.CountOfLines); + + var splitToken = new string[] { "\r\n" }; + + var lines = moduleContent.Split(splitToken, System.StringSplitOptions.None); + int lineNumber = 0; + for (int idx = 0; idx < lines.Count() && lineNumber < 1; idx++) { - _tdo.AccessibleNames = new Dictionary>(); + if (lines[idx].Contains(tdo.SelectionLineIdentifier)) + { + lineNumber = idx + 1; + } } - _tdo.AccessibleNames.Add(scope, accessibleNames.ToList()); + Assert.IsTrue(lineNumber > 0, "Unable to find target '" + tdo.SelectionTarget + "' in " + tdo.SelectionModuleName + " content."); + var column = lines[lineNumber - 1].IndexOf(tdo.SelectionLineIdentifier); + column = column + tdo.SelectionLineIdentifier.IndexOf(tdo.SelectionTarget) + 1; + + var moduleParent = component.CodeModule.Parent; + tdo.QualifiedSelection = new QualifiedSelection(new QualifiedModuleName(moduleParent), new Selection(lineNumber, column, lineNumber, column)); } - private void AddTestComponent( string moduleIdentifier, string moduleContent, ComponentType componentType) + private void AddTestComponent(AccessibilityTestsDataObject tdo, string moduleIdentifier, string moduleContent, ComponentType componentType) { - if( null ==_tdo.Components) + if (null == tdo.Components) { - _tdo.Components = new List(); + tdo.Components = new List(); } - _tdo.Components.Add(new TestComponentSpecification(moduleIdentifier, moduleContent, componentType)); + tdo.Components.Add(new TestComponentSpecification(moduleIdentifier, moduleContent, componentType)); } private IVBE BuildProject(string projectName, List testComponents) @@ -204,6 +256,19 @@ private IVBE BuildProject(string projectName, List t return builder.Build().Object; } + private IVBComponent RetrieveComponent(AccessibilityTestsDataObject tdo, string componentName) + { + var vbProject = tdo.VBE.VBProjects.Where(item => item.Name == tdo.ProjectName).SingleOrDefault(); + return vbProject.VBComponents.Where(item => item.Name == componentName).SingleOrDefault(); + } + + private void AddTestSelectionCriteria(AccessibilityTestsDataObject tdo, string moduleName, string selectionTarget, string selectionLineIdentifier) + { + tdo.SelectionModuleName = moduleName; + tdo.SelectionTarget = selectionTarget; + tdo.SelectionLineIdentifier = selectionLineIdentifier; + } + internal class TestComponentSpecification { private string _name; @@ -221,130 +286,25 @@ public TestComponentSpecification(string componentName, string componentContent, public ComponentType ModuleType { get { return _componentType; } } } + internal class AccessibilityTestsDataObject { + public AccessibilityTestsDataObject() + { + ProjectName = "TestProject"; + } public IVBE VBE { get; set; } - public ParseCoordinator Parser { get; set; } + public RubberduckParserState Parser { get; set; } public List Components { get; set; } - public Dictionary> AccessibleNames { get; set; } - public string TargetIdentifier { get; set; } + public string ProjectName { get; set; } + public string SelectionModuleName { get; set; } + public string SelectionTarget { get; set; } + public string SelectionLineIdentifier { get; set; } + public List ExpectedResults { get; set; } + public QualifiedSelection QualifiedSelection { get; set; } + public Declaration Target { get; set; } } - #region AccessibilityTestsModuleContent - private string FindsAccessibleDeclarations_FirstClassBody() - { - return -@" -Private memberString As String -Private memberLong As Long -Private myEggo As String - -Public Sub Foo(ByVal arg1 As String) - Dim localVar as Long - localVar = 7 - Let arg1 = ""test"" - memberString = arg1 & ""Foo"" -End Sub - -Public Function FooBar1(ByRef arg1 As String, theSecondArg As Long) As String - Let arg1 = ""test"" - Dim targetAccessibilityTests As String - targetAccessibilityTests = arg1 & CStr(theSecondArg) - FooBar1 = targetAccessibilityTests -End Function - -Property Let GoMyEggo(newValue As String) - myEggo = newValue -End Property - -Property Get GoMyEggo() - GoMyEggo = myEggo -End Property - -Private Sub FooFight(ByRef arg1 As String) - xArg1 = 6 - Let arg1 = ""test"" -End Sub -"; - } - - private string FindsAccessibleDeclarations_SecondClassBody() - { - return -@" -Private memberString As String -Private memberLong As Long -Public mySecondEggo As String - - -Public Sub Foo2( arg1 As String, theSecondArg As Long) - Let arg1 = ""test"" - memberString = arg1 & ""Foo"" -End Sub - -Public Function FooBar(ByRef arg1 As String, theSecondArg As Long) As Long - Let arg1 = ""test"" - Dim result As String - result = Clg(arg1) + theSecondArg - FooBar = result -End Function - -Property Let GoMyOtherEggo(newValue As String) - mySecondEggo = newValue -End Property - -Property Get GoMyOtherEggo() - GoMyOtherEggo = mySecondEggo -End Property - -Private Sub FooFighters(ByRef arg1 As String) - xArg1 = 6 - Let arg1 = ""test"" -End Sub - -Sub Bar() - Dim st As String - st = ""Test"" - Dim v As Long - v = 5 - result = FooBar(st, v) -End Sub -"; - } - - private string FindsAccessibleDeclarations_FirstModuleBody() - { - return -@" -Option Explicit - - -Public Const CantTouchThis As String = ""Can't Touch this"" -Public THE_FILENAME As String - -Sub SetFilename(filename As String) - implicitVar = 7 - THE_FILENAME = filename -End Sub -"; - } - - private string FindsAccessibleDeclarations_SecondModuleBody() - { - return -@" -Option Explicit - - -Public BigNumber as Long -Public ShortStory As String - -Public Sub DoSomething(filename As String) - ShortStory = filename -End Sub -"; - } - #endregion [TestMethod] [Ignore] // ref. https://github.com/rubberduck-vba/Rubberduck/issues/2330 @@ -455,5 +415,155 @@ private static void AddReference(Declaration toDeclaration, Declaration fromModu { toDeclaration.AddReference(toDeclaration.QualifiedName.QualifiedModuleName, fromModuleDeclaration, fromModuleDeclaration, context, toDeclaration.IdentifierName, toDeclaration, Selection.Home, new List()); } + + #region AccessibilityTests_HardcodedModuleContent + private string GetInProcedure_MethodDeclaration_moduleContent1() + { + return + @" +Option Explicit + +Private member1 As Long + +Public Function Foo() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo = member1 +End Function +"; + } + private string GetInProcedure_LocalVariableReference_moduleContent1() + { + return + @" +Option Explicit + +Private member1 As Long + +Public Function Foo() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo = member1 +End Function +"; + } + private string GetInProcedure_MemberDeclaration_moduleContent1() + { + return + @" +Option Explicit + +Private member1 As Long + +Public Function Foo() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo = member1 +End Function +"; + } + private string GetModuleScope_moduleContent1() + { + return + @" +Option Explicit + +Private member1 As Long + +Public Function Foo() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo = member1 +End Function +"; + } + private string GetModuleScope_moduleContent2() + { + return + @" +Option Explicit + +Private member11 As Long +Public member2 As Long + +Public Function Foo2() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo2 = member1 +End Function + +Private Sub Bar() + member2 = member2 * 4 +End Sub +"; + } + private string GetModule_To_ClassScope_moduleContent1() + { + return + @" +Option Explicit + +Private member11 As Long +Public member2 As Long + +Public Function Foo2() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo2 = member1 +End Function + +Private Sub Bar() + member2 = member2 * 4 'Select either member2 reference from this line +End Sub +"; + } + private string GetModule_To_ClassScope_moduleContent2() + { + return + @" +Option Explicit + +Private member1 As Long + +Public Function Foo() As Long + Dim adder as Long + adder = 10 + member1 = member1 + adder + Foo = member1 +End Function +"; + } + private string GetPrivateSub_RespectPublicSubInOtherModule_moduleContent1() + { + return +@" +Option Explicit + + +Private Sub DoThis(filename As String) + SetFilename filename +End Sub +"; + } + private string GetPrivateSub_RespectPublicSubInOtherModule_moduleContent2() + { + return + @" +Option Explicit + +Private member1 As String + +Public Sub SetFilename(filename As String) + member1 = filename +End Sub +"; + } + #endregion } } \ No newline at end of file From a6986fa00db083a0c54aa561cd924f537f5ddedc Mon Sep 17 00:00:00 2001 From: comintern Date: Tue, 14 Mar 2017 19:41:21 -0500 Subject: [PATCH 03/20] Fix ByVal RaiseEvent arguments. Closes #2870 --- Rubberduck.Parsing/Grammar/VBALexer.cs | 2427 +++++----- Rubberduck.Parsing/Grammar/VBALexer.g4 | 2 - Rubberduck.Parsing/Grammar/VBAParser.cs | 4102 ++++++++--------- Rubberduck.Parsing/Grammar/VBAParser.g4 | 6 +- .../VBAConditionalCompilationParser.cs | 404 +- ...onditionalCompilationParserBaseListener.cs | 14 +- ...ConditionalCompilationParserBaseVisitor.cs | 15 +- ...VBAConditionalCompilationParserListener.cs | 13 +- .../VBAConditionalCompilationParserVisitor.cs | 14 +- .../VBAPreprocessorVisitorTests.cs | 1 + 10 files changed, 3491 insertions(+), 3507 deletions(-) diff --git a/Rubberduck.Parsing/Grammar/VBALexer.cs b/Rubberduck.Parsing/Grammar/VBALexer.cs index e862ef3a2a..9a1abf7050 100644 --- a/Rubberduck.Parsing/Grammar/VBALexer.cs +++ b/Rubberduck.Parsing/Grammar/VBALexer.cs @@ -31,39 +31,39 @@ public const int CDBL=10, CDEC=11, CINT=12, CIRCLE=13, CLNG=14, CLNGLNG=15, CLNGPTR=16, CSNG=17, CSTR=18, CURRENCY=19, CVAR=20, CVERR=21, DEBUG=22, DOEVENTS=23, EXIT=24, FIX=25, INPUTB=26, INT=27, LBOUND=28, LEN=29, LENB=30, LONGLONG=31, - LONGPTR=32, MIDB=33, MIDBTYPESUFFIX=34, MIDTYPESUFFIX=35, OPTION=36, PSET=37, - SCALE=38, SGN=39, UBOUND=40, COMMA=41, COLON=42, SEMICOLON=43, EXCLAMATIONPOINT=44, - DOT=45, HASH=46, AT=47, PERCENT=48, DOLLAR=49, AMPERSAND=50, ACCESS=51, - ADDRESSOF=52, ALIAS=53, AND=54, ATTRIBUTE=55, APPEND=56, AS=57, BEGIN=58, - BINARY=59, BOOLEAN=60, BYVAL=61, BYREF=62, BYTE=63, CALL=64, CASE=65, - CLASS=66, CLOSE=67, CONST=68, DATABASE=69, DATE=70, DECLARE=71, DEFBOOL=72, - DEFBYTE=73, DEFDATE=74, DEFDBL=75, DEFCUR=76, DEFINT=77, DEFLNG=78, DEFLNGLNG=79, - DEFLNGPTR=80, DEFOBJ=81, DEFSNG=82, DEFSTR=83, DEFVAR=84, DIM=85, DO=86, - DOUBLE=87, EACH=88, ELSE=89, ELSEIF=90, EMPTY=91, END_ENUM=92, END_FUNCTION=93, - END_IF=94, END_PROPERTY=95, END_SELECT=96, END_SUB=97, END_TYPE=98, END_WITH=99, - END=100, ENUM=101, EQV=102, ERASE=103, ERROR=104, EVENT=105, EXIT_DO=106, - EXIT_FOR=107, EXIT_FUNCTION=108, EXIT_PROPERTY=109, EXIT_SUB=110, FALSE=111, - FRIEND=112, FOR=113, FUNCTION=114, GET=115, GLOBAL=116, GOSUB=117, GOTO=118, - IF=119, IMP=120, IMPLEMENTS=121, IN=122, INPUT=123, IS=124, INTEGER=125, - LOCK=126, LONG=127, LOOP=128, LET=129, LIB=130, LIKE=131, LINE_INPUT=132, - LOCK_READ=133, LOCK_WRITE=134, LOCK_READ_WRITE=135, LSET=136, ME=137, - MID=138, MOD=139, NAME=140, NEXT=141, NEW=142, NOT=143, NOTHING=144, NULL=145, - OBJECT=146, ON=147, ON_ERROR=148, ON_LOCAL_ERROR=149, OPEN=150, OPTIONAL=151, - OPTION_BASE=152, OPTION_EXPLICIT=153, OPTION_COMPARE=154, OPTION_PRIVATE_MODULE=155, - OR=156, OUTPUT=157, PARAMARRAY=158, PRESERVE=159, PRINT=160, PRIVATE=161, - PROPERTY_GET=162, PROPERTY_LET=163, PROPERTY_SET=164, PTRSAFE=165, PUBLIC=166, - PUT=167, RANDOM=168, RAISEEVENT=169, READ=170, READ_WRITE=171, REDIM=172, - REM=173, RESET=174, RESUME=175, RETURN=176, RSET=177, SEEK=178, SELECT=179, - SET=180, SHARED=181, SINGLE=182, SPC=183, STATIC=184, STEP=185, STOP=186, - STRING=187, SUB=188, TAB=189, TEXT=190, THEN=191, TO=192, TRUE=193, TYPE=194, - TYPEOF=195, UNLOCK=196, UNTIL=197, VARIANT=198, VERSION=199, WEND=200, - WHILE=201, WIDTH=202, WITH=203, WITHEVENTS=204, WRITE=205, XOR=206, ASSIGN=207, - DIV=208, INTDIV=209, EQ=210, GEQ=211, GT=212, LEQ=213, LPAREN=214, LT=215, - MINUS=216, MULT=217, NEQ=218, PLUS=219, POW=220, RPAREN=221, L_SQUARE_BRACKET=222, - R_SQUARE_BRACKET=223, STRINGLITERAL=224, OCTLITERAL=225, HEXLITERAL=226, - FLOATLITERAL=227, INTEGERLITERAL=228, DATELITERAL=229, NEWLINE=230, SINGLEQUOTE=231, - UNDERSCORE=232, WS=233, GUIDLITERAL=234, IDENTIFIER=235, LINE_CONTINUATION=236, - ERRORCHAR=237; + LONGPTR=32, MIDB=33, OPTION=34, PSET=35, SCALE=36, SGN=37, UBOUND=38, + COMMA=39, COLON=40, SEMICOLON=41, EXCLAMATIONPOINT=42, DOT=43, HASH=44, + AT=45, PERCENT=46, DOLLAR=47, AMPERSAND=48, ACCESS=49, ADDRESSOF=50, ALIAS=51, + AND=52, ATTRIBUTE=53, APPEND=54, AS=55, BEGIN=56, BINARY=57, BOOLEAN=58, + BYVAL=59, BYREF=60, BYTE=61, CALL=62, CASE=63, CLASS=64, CLOSE=65, CONST=66, + DATABASE=67, DATE=68, DECLARE=69, DEFBOOL=70, DEFBYTE=71, DEFDATE=72, + DEFDBL=73, DEFCUR=74, DEFINT=75, DEFLNG=76, DEFLNGLNG=77, DEFLNGPTR=78, + DEFOBJ=79, DEFSNG=80, DEFSTR=81, DEFVAR=82, DIM=83, DO=84, DOUBLE=85, + EACH=86, ELSE=87, ELSEIF=88, EMPTY=89, END_ENUM=90, END_FUNCTION=91, END_IF=92, + END_PROPERTY=93, END_SELECT=94, END_SUB=95, END_TYPE=96, END_WITH=97, + END=98, ENUM=99, EQV=100, ERASE=101, ERROR=102, EVENT=103, EXIT_DO=104, + EXIT_FOR=105, EXIT_FUNCTION=106, EXIT_PROPERTY=107, EXIT_SUB=108, FALSE=109, + FRIEND=110, FOR=111, FUNCTION=112, GET=113, GLOBAL=114, GOSUB=115, GOTO=116, + IF=117, IMP=118, IMPLEMENTS=119, IN=120, INPUT=121, IS=122, INTEGER=123, + LOCK=124, LONG=125, LOOP=126, LET=127, LIB=128, LIKE=129, LINE_INPUT=130, + LOCK_READ=131, LOCK_WRITE=132, LOCK_READ_WRITE=133, LSET=134, ME=135, + MID=136, MOD=137, NAME=138, NEXT=139, NEW=140, NOT=141, NOTHING=142, NULL=143, + OBJECT=144, ON=145, ON_ERROR=146, ON_LOCAL_ERROR=147, OPEN=148, OPTIONAL=149, + OPTION_BASE=150, OPTION_EXPLICIT=151, OPTION_COMPARE=152, OPTION_PRIVATE_MODULE=153, + OR=154, OUTPUT=155, PARAMARRAY=156, PRESERVE=157, PRINT=158, PRIVATE=159, + PROPERTY_GET=160, PROPERTY_LET=161, PROPERTY_SET=162, PTRSAFE=163, PUBLIC=164, + PUT=165, RANDOM=166, RAISEEVENT=167, READ=168, READ_WRITE=169, REDIM=170, + REM=171, RESET=172, RESUME=173, RETURN=174, RSET=175, SEEK=176, SELECT=177, + SET=178, SHARED=179, SINGLE=180, SPC=181, STATIC=182, STEP=183, STOP=184, + STRING=185, SUB=186, TAB=187, TEXT=188, THEN=189, TO=190, TRUE=191, TYPE=192, + TYPEOF=193, UNLOCK=194, UNTIL=195, VARIANT=196, VERSION=197, WEND=198, + WHILE=199, WIDTH=200, WITH=201, WITHEVENTS=202, WRITE=203, XOR=204, ASSIGN=205, + DIV=206, INTDIV=207, EQ=208, GEQ=209, GT=210, LEQ=211, LPAREN=212, LT=213, + MINUS=214, MULT=215, NEQ=216, PLUS=217, POW=218, RPAREN=219, L_SQUARE_BRACKET=220, + R_SQUARE_BRACKET=221, STRINGLITERAL=222, OCTLITERAL=223, HEXLITERAL=224, + FLOATLITERAL=225, INTEGERLITERAL=226, DATELITERAL=227, NEWLINE=228, SINGLEQUOTE=229, + UNDERSCORE=230, WS=231, GUIDLITERAL=232, IDENTIFIER=233, LINE_CONTINUATION=234, + ERRORCHAR=235; public static string[] modeNames = { "DEFAULT_MODE" }; @@ -101,51 +101,50 @@ public const int "'\\u00D5'", "'\\u00D6'", "'\\u00D7'", "'\\u00D8'", "'\\u00D9'", "'\\u00DA'", "'\\u00DB'", "'\\u00DC'", "'\\u00DD'", "'\\u00DE'", "'\\u00DF'", "'\\u00E0'", "'\\u00E1'", "'\\u00E2'", "'\\u00E3'", "'\\u00E4'", "'\\u00E5'", "'\\u00E6'", - "'\\u00E7'", "'\\u00E8'", "'\\u00E9'", "'\\u00EA'", "'\\u00EB'", "'\\u00EC'", - "'\\u00ED'" + "'\\u00E7'", "'\\u00E8'", "'\\u00E9'", "'\\u00EA'", "'\\u00EB'" }; public static readonly string[] ruleNames = { "ABS", "ANY", "ARRAY", "B_CHAR", "BF", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", "CSTR", "CURRENCY", "CVAR", "CVERR", "DEBUG", "DOEVENTS", "EXIT", "FIX", "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", "MIDB", - "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", - "COMMA", "COLON", "SEMICOLON", "EXCLAMATIONPOINT", "DOT", "HASH", "AT", - "PERCENT", "DOLLAR", "AMPERSAND", "ACCESS", "ADDRESSOF", "ALIAS", "AND", - "ATTRIBUTE", "APPEND", "AS", "BEGIN", "BINARY", "BOOLEAN", "BYVAL", "BYREF", - "BYTE", "CALL", "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", "DATE", - "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", - "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", - "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", - "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", - "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", - "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", - "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", - "IN", "INPUT", "IS", "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", - "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", - "ME", "MID", "MOD", "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "OBJECT", - "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", - "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", - "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", - "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", - "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", - "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", - "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", - "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", - "WITHEVENTS", "WRITE", "XOR", "ASSIGN", "DIV", "INTDIV", "EQ", "GEQ", - "GT", "LEQ", "LPAREN", "LT", "MINUS", "MULT", "NEQ", "PLUS", "POW", "RPAREN", - "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", "STRINGLITERAL", "OCTLITERAL", - "HEXLITERAL", "FLOATLITERAL", "FLOATINGPOINTLITERAL", "INTEGERLITERAL", - "INTEGERTYPESUFFIX", "FLOATINGPOINTTYPESUFFIX", "EXPONENT", "EXPONENTLETTER", - "EXPONENTSIGN", "DECIMALLITERAL", "DATELITERAL", "DATEORTIME", "DATEVALUE", - "DATEVALUEPART", "DATESEPARATOR", "MONTHNAME", "ENGLISHMONTHNAME", "ENGLISHMONTHABBREVIATION", - "TIMEVALUE", "TIMESEPARATOR", "AMPM", "JANUARY", "FEBRUARY", "MARCH", - "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", - "DECEMBER", "JAN", "FEB", "MAR", "APR", "JUN", "JUL", "AUG", "SEP", "OCT", - "NOV", "DEC", "NEWLINE", "SINGLEQUOTE", "UNDERSCORE", "WS", "GUIDLITERAL", - "IDENTIFIER", "LINE_CONTINUATION", "LETTER", "DIGIT", "LETTERORDIGIT", - "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", - "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "ERRORCHAR" + "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "COMMA", "COLON", "SEMICOLON", + "EXCLAMATIONPOINT", "DOT", "HASH", "AT", "PERCENT", "DOLLAR", "AMPERSAND", + "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", + "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", + "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", + "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", + "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", + "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", "END_PROPERTY", + "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", "ENUM", "EQV", + "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", + "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", + "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", "INTEGER", "LOCK", + "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", + "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", "NAME", "NEXT", "NEW", + "NOT", "NOTHING", "NULL", "OBJECT", "ON", "ON_ERROR", "ON_LOCAL_ERROR", + "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", "OPTION_COMPARE", + "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", "PRESERVE", "PRINT", + "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", "PTRSAFE", + "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", "READ_WRITE", "REDIM", + "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", "SELECT", "SET", "SHARED", + "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", "SUB", "TAB", "TEXT", + "THEN", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOCK", "UNTIL", "VARIANT", + "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", "WRITE", "XOR", + "ASSIGN", "DIV", "INTDIV", "EQ", "GEQ", "GT", "LEQ", "LPAREN", "LT", "MINUS", + "MULT", "NEQ", "PLUS", "POW", "RPAREN", "L_SQUARE_BRACKET", "R_SQUARE_BRACKET", + "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "FLOATINGPOINTLITERAL", + "INTEGERLITERAL", "INTEGERTYPESUFFIX", "FLOATINGPOINTTYPESUFFIX", "EXPONENT", + "EXPONENTLETTER", "EXPONENTSIGN", "DECIMALLITERAL", "DATELITERAL", "DATEORTIME", + "DATEVALUE", "DATEVALUEPART", "DATESEPARATOR", "MONTHNAME", "ENGLISHMONTHNAME", + "ENGLISHMONTHABBREVIATION", "TIMEVALUE", "TIMESEPARATOR", "AMPM", "JANUARY", + "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", + "OCTOBER", "NOVEMBER", "DECEMBER", "JAN", "FEB", "MAR", "APR", "JUN", + "JUL", "AUG", "SEP", "OCT", "NOV", "DEC", "NEWLINE", "SINGLEQUOTE", "UNDERSCORE", + "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", "LETTER", "DIGIT", + "LETTERORDIGIT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", + "Z", "ERRORCHAR" }; @@ -166,7 +165,7 @@ public VBALexer(ICharStream input) public override string SerializedAtn { get { return _serializedATN; } } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\xEF\xA45\b\x1\x4"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x2\xED\xA36\b\x1\x4"+ "\x2\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b"+ "\x4\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4"+ "\x10\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15"+ @@ -217,1154 +216,1146 @@ public VBALexer(ICharStream input) "\x121\x4\x122\t\x122\x4\x123\t\x123\x4\x124\t\x124\x4\x125\t\x125\x4\x126"+ "\t\x126\x4\x127\t\x127\x4\x128\t\x128\x4\x129\t\x129\x4\x12A\t\x12A\x4"+ "\x12B\t\x12B\x4\x12C\t\x12C\x4\x12D\t\x12D\x4\x12E\t\x12E\x4\x12F\t\x12F"+ - "\x4\x130\t\x130\x4\x131\t\x131\x4\x132\t\x132\x4\x133\t\x133\x3\x2\x3"+ - "\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3\x3\x3\x3\x3\x4\x3\x4\x3\x4\x3\x4\x3\x4"+ - "\x3\x4\x3\x5\x3\x5\x3\x6\x3\x6\x3\x6\x3\a\x3\a\x3\a\x3\a\x3\a\x3\a\x3"+ - "\b\x3\b\x3\b\x3\b\x3\b\x3\b\x3\t\x3\t\x3\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3"+ - "\n\x3\n\x3\n\x3\v\x3\v\x3\v\x3\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x3\r\x3"+ - "\r\x3\r\x3\r\x3\r\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xF\x3\xF"+ - "\x3\xF\x3\xF\x3\xF\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3"+ - "\x10\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x12\x3"+ - "\x12\x3\x12\x3\x12\x3\x12\x3\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x14\x3"+ - "\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3"+ - "\x15\x3\x15\x3\x15\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x17\x3"+ - "\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3"+ - "\x18\x3\x18\x3\x18\x3\x18\x3\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x1A\x3"+ - "\x1A\x3\x1A\x3\x1A\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3"+ - "\x1C\x3\x1C\x3\x1C\x3\x1C\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3"+ - "\x1D\x3\x1E\x3\x1E\x3\x1E\x3\x1E\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3"+ - " \x3 \x3 \x3 \x3 \x3 \x3 \x3 \x3 \x3!\x3!\x3!\x3!\x3!\x3!\x3!\x3!\x3\""+ - "\x3\"\x3\"\x3\"\x3\"\x3#\x3#\x3#\x3#\x3#\x3#\x3$\x3$\x3$\x3$\x3$\x3%\x3"+ - "%\x3%\x3%\x3%\x3%\x3%\x3&\x3&\x3&\x3&\x3&\x3\'\x3\'\x3\'\x3\'\x3\'\x3"+ - "\'\x3(\x3(\x3(\x3(\x3)\x3)\x3)\x3)\x3)\x3)\x3)\x3*\x3*\x3+\x3+\x3,\x3"+ - ",\x3-\x3-\x3.\x3.\x3/\x3/\x3\x30\x3\x30\x3\x31\x3\x31\x3\x32\x3\x32\x3"+ - "\x33\x3\x33\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x34\x3\x35\x3"+ - "\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x35\x3\x36\x3"+ - "\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x37\x3\x37\x3\x37\x3\x37\x3\x38\x3"+ - "\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x38\x3\x39\x3"+ - "\x39\x3\x39\x3\x39\x3\x39\x3\x39\x3\x39\x3:\x3:\x3:\x3;\x3;\x3;\x3;\x3"+ - ";\x3;\x3<\x3<\x3<\x3<\x3<\x3<\x3<\x3=\x3=\x3=\x3=\x3=\x3=\x3=\x3=\x3>"+ - "\x3>\x3>\x3>\x3>\x3>\x3?\x3?\x3?\x3?\x3?\x3?\x3@\x3@\x3@\x3@\x3@\x3\x41"+ - "\x3\x41\x3\x41\x3\x41\x3\x41\x3\x42\x3\x42\x3\x42\x3\x42\x3\x42\x3\x43"+ + "\x4\x130\t\x130\x4\x131\t\x131\x3\x2\x3\x2\x3\x2\x3\x2\x3\x3\x3\x3\x3"+ + "\x3\x3\x3\x3\x4\x3\x4\x3\x4\x3\x4\x3\x4\x3\x4\x3\x5\x3\x5\x3\x6\x3\x6"+ + "\x3\x6\x3\a\x3\a\x3\a\x3\a\x3\a\x3\a\x3\b\x3\b\x3\b\x3\b\x3\b\x3\b\x3"+ + "\t\x3\t\x3\t\x3\t\x3\t\x3\n\x3\n\x3\n\x3\n\x3\n\x3\n\x3\v\x3\v\x3\v\x3"+ + "\v\x3\v\x3\f\x3\f\x3\f\x3\f\x3\f\x3\r\x3\r\x3\r\x3\r\x3\r\x3\xE\x3\xE"+ + "\x3\xE\x3\xE\x3\xE\x3\xE\x3\xE\x3\xF\x3\xF\x3\xF\x3\xF\x3\xF\x3\x10\x3"+ + "\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x10\x3\x11\x3\x11\x3\x11\x3"+ + "\x11\x3\x11\x3\x11\x3\x11\x3\x11\x3\x12\x3\x12\x3\x12\x3\x12\x3\x12\x3"+ + "\x13\x3\x13\x3\x13\x3\x13\x3\x13\x3\x14\x3\x14\x3\x14\x3\x14\x3\x14\x3"+ + "\x14\x3\x14\x3\x14\x3\x14\x3\x15\x3\x15\x3\x15\x3\x15\x3\x15\x3\x16\x3"+ + "\x16\x3\x16\x3\x16\x3\x16\x3\x16\x3\x17\x3\x17\x3\x17\x3\x17\x3\x17\x3"+ + "\x17\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3\x18\x3"+ + "\x19\x3\x19\x3\x19\x3\x19\x3\x19\x3\x1A\x3\x1A\x3\x1A\x3\x1A\x3\x1B\x3"+ + "\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1B\x3\x1C\x3\x1C\x3\x1C\x3\x1C\x3"+ + "\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1D\x3\x1E\x3\x1E\x3\x1E\x3"+ + "\x1E\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3\x1F\x3 \x3 \x3 \x3 \x3 \x3 \x3 \x3"+ + " \x3 \x3!\x3!\x3!\x3!\x3!\x3!\x3!\x3!\x3\"\x3\"\x3\"\x3\"\x3\"\x3#\x3"+ + "#\x3#\x3#\x3#\x3#\x3#\x3$\x3$\x3$\x3$\x3$\x3%\x3%\x3%\x3%\x3%\x3%\x3&"+ + "\x3&\x3&\x3&\x3\'\x3\'\x3\'\x3\'\x3\'\x3\'\x3\'\x3(\x3(\x3)\x3)\x3*\x3"+ + "*\x3+\x3+\x3,\x3,\x3-\x3-\x3.\x3.\x3/\x3/\x3\x30\x3\x30\x3\x31\x3\x31"+ + "\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x32\x3\x33\x3\x33\x3\x33"+ + "\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x33\x3\x34\x3\x34\x3\x34"+ + "\x3\x34\x3\x34\x3\x34\x3\x35\x3\x35\x3\x35\x3\x35\x3\x36\x3\x36\x3\x36"+ + "\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x36\x3\x37\x3\x37\x3\x37"+ + "\x3\x37\x3\x37\x3\x37\x3\x37\x3\x38\x3\x38\x3\x38\x3\x39\x3\x39\x3\x39"+ + "\x3\x39\x3\x39\x3\x39\x3:\x3:\x3:\x3:\x3:\x3:\x3:\x3;\x3;\x3;\x3;\x3;"+ + "\x3;\x3;\x3;\x3<\x3<\x3<\x3<\x3<\x3<\x3=\x3=\x3=\x3=\x3=\x3=\x3>\x3>\x3"+ + ">\x3>\x3>\x3?\x3?\x3?\x3?\x3?\x3@\x3@\x3@\x3@\x3@\x3\x41\x3\x41\x3\x41"+ + "\x3\x41\x3\x41\x3\x41\x3\x42\x3\x42\x3\x42\x3\x42\x3\x42\x3\x42\x3\x43"+ "\x3\x43\x3\x43\x3\x43\x3\x43\x3\x43\x3\x44\x3\x44\x3\x44\x3\x44\x3\x44"+ - "\x3\x44\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x46\x3\x46\x3\x46"+ - "\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3G\x3G\x3G\x3G\x3G\x3H\x3"+ - "H\x3H\x3H\x3H\x3H\x3H\x3H\x3I\x3I\x3I\x3I\x3I\x3I\x3I\x3I\x3J\x3J\x3J"+ - "\x3J\x3J\x3J\x3J\x3J\x3K\x3K\x3K\x3K\x3K\x3K\x3K\x3K\x3L\x3L\x3L\x3L\x3"+ - "L\x3L\x3L\x3M\x3M\x3M\x3M\x3M\x3M\x3M\x3N\x3N\x3N\x3N\x3N\x3N\x3N\x3O"+ - "\x3O\x3O\x3O\x3O\x3O\x3O\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3P\x3Q\x3"+ - "Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3R\x3R\x3R\x3R\x3R\x3R\x3R\x3S\x3S"+ - "\x3S\x3S\x3S\x3S\x3S\x3T\x3T\x3T\x3T\x3T\x3T\x3T\x3U\x3U\x3U\x3U\x3U\x3"+ - "U\x3U\x3V\x3V\x3V\x3V\x3W\x3W\x3W\x3X\x3X\x3X\x3X\x3X\x3X\x3X\x3Y\x3Y"+ - "\x3Y\x3Y\x3Y\x3Z\x3Z\x3Z\x3Z\x3Z\x3[\x3[\x3[\x3[\x3[\x3[\x3[\x3\\\x3\\"+ - "\x3\\\x3\\\x3\\\x3\\\x3]\x3]\x3]\x3]\x6]\x474\n]\r]\xE]\x475\x3]\x3]\x3"+ - "]\x3]\x3]\x3^\x3^\x3^\x3^\x3^\x6^\x482\n^\r^\xE^\x483\x3^\x3^\x3^\x3^"+ - "\x3^\x3^\x3^\x3^\x3^\x3_\x3_\x3_\x3_\x3_\a_\x494\n_\f_\xE_\x497\v_\x3"+ - "_\x3_\x3_\x3`\x3`\x3`\x3`\x3`\x6`\x4A1\n`\r`\xE`\x4A2\x3`\x3`\x3`\x3`"+ - "\x3`\x3`\x3`\x3`\x3`\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x6\x61\x4B3\n"+ - "\x61\r\x61\xE\x61\x4B4\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61"+ - "\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62\x6\x62\x4C3\n\x62\r\x62\xE\x62\x4C4"+ - "\x3\x62\x3\x62\x3\x62\x3\x62\x3\x63\x3\x63\x3\x63\x3\x63\x6\x63\x4CF\n"+ - "\x63\r\x63\xE\x63\x4D0\x3\x63\x3\x63\x3\x63\x3\x63\x3\x63\x3\x64\x3\x64"+ - "\x3\x64\x3\x64\x3\x64\x6\x64\x4DD\n\x64\r\x64\xE\x64\x4DE\x3\x64\x3\x64"+ - "\x3\x64\x3\x64\x3\x64\x3\x65\x3\x65\x3\x65\x3\x65\x3\x66\x3\x66\x3\x66"+ - "\x3\x66\x3\x66\x3g\x3g\x3g\x3g\x3h\x3h\x3h\x3h\x3h\x3h\x3i\x3i\x3i\x3"+ - "i\x3i\x3i\x3j\x3j\x3j\x3j\x3j\x3j\x3k\x3k\x3k\x3k\x3k\x3k\x6k\x50B\nk"+ - "\rk\xEk\x50C\x3k\x3k\x3k\x3l\x3l\x3l\x3l\x3l\x3l\x6l\x518\nl\rl\xEl\x519"+ - "\x3l\x3l\x3l\x3l\x3m\x3m\x3m\x3m\x3m\x3m\x6m\x526\nm\rm\xEm\x527\x3m\x3"+ - "m\x3m\x3m\x3m\x3m\x3m\x3m\x3m\x3n\x3n\x3n\x3n\x3n\x3n\x6n\x539\nn\rn\xE"+ - "n\x53A\x3n\x3n\x3n\x3n\x3n\x3n\x3n\x3n\x3n\x3o\x3o\x3o\x3o\x3o\x3o\x6"+ - "o\x54C\no\ro\xEo\x54D\x3o\x3o\x3o\x3o\x3p\x3p\x3p\x3p\x3p\x3p\x3q\x3q"+ - "\x3q\x3q\x3q\x3q\x3q\x3r\x3r\x3r\x3r\x3s\x3s\x3s\x3s\x3s\x3s\x3s\x3s\x3"+ - "s\x3t\x3t\x3t\x3t\x3u\x3u\x3u\x3u\x3u\x3u\x3u\x3v\x3v\x3v\x3v\x3v\x3v"+ - "\x3w\x3w\x3w\x3w\x3w\x3x\x3x\x3x\x3y\x3y\x3y\x3y\x3z\x3z\x3z\x3z\x3z\x3"+ - "z\x3z\x3z\x3z\x3z\x3z\x3{\x3{\x3{\x3|\x3|\x3|\x3|\x3|\x3|\x3}\x3}\x3}"+ - "\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3~\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3"+ - "\x80\x3\x80\x3\x80\x3\x80\x3\x80\x3\x81\x3\x81\x3\x81\x3\x81\x3\x81\x3"+ - "\x82\x3\x82\x3\x82\x3\x82\x3\x83\x3\x83\x3\x83\x3\x83\x3\x84\x3\x84\x3"+ - "\x84\x3\x84\x3\x84\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x6\x85\x5CC"+ - "\n\x85\r\x85\xE\x85\x5CD\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3"+ - "\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x6\x86\x5DC\n\x86\r\x86\xE\x86"+ - "\x5DD\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3\x87\x3\x87\x3\x87\x3\x87\x3"+ - "\x87\x3\x87\x6\x87\x5EB\n\x87\r\x87\xE\x87\x5EC\x3\x87\x3\x87\x3\x87\x3"+ - "\x87\x3\x87\x3\x87\x3\x88\x3\x88\x3\x88\x3\x88\x3\x88\x3\x88\x6\x88\x5FB"+ - "\n\x88\r\x88\xE\x88\x5FC\x3\x88\x3\x88\x3\x88\x3\x88\x3\x88\x3\x88\x6"+ - "\x88\x605\n\x88\r\x88\xE\x88\x606\x3\x88\x3\x88\x3\x88\x3\x88\x3\x88\x3"+ - "\x88\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x8A\x3\x8A\x3\x8A\x3\x8B\x3"+ - "\x8B\x3\x8B\x3\x8B\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8D\x3\x8D\x3\x8D\x3"+ - "\x8D\x3\x8D\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8F\x3\x8F\x3\x8F\x3"+ - "\x8F\x3\x90\x3\x90\x3\x90\x3\x90\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3"+ - "\x91\x3\x91\x3\x91\x3\x92\x3\x92\x3\x92\x3\x92\x3\x92\x3\x93\x3\x93\x3"+ - "\x93\x3\x93\x3\x93\x3\x93\x3\x93\x3\x94\x3\x94\x3\x94\x3\x95\x3\x95\x3"+ - "\x95\x3\x95\x6\x95\x64C\n\x95\r\x95\xE\x95\x64D\x3\x95\x3\x95\x3\x95\x3"+ - "\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3\x96\x3\x96\x6\x96\x65A\n\x96\r\x96"+ - "\xE\x96\x65B\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x6\x96\x665"+ - "\n\x96\r\x96\xE\x96\x666\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3"+ - "\x97\x3\x97\x3\x97\x3\x97\x3\x97\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3"+ - "\x98\x3\x98\x3\x98\x3\x98\x3\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3"+ - "\x99\x3\x99\x6\x99\x685\n\x99\r\x99\xE\x99\x686\x3\x99\x3\x99\x3\x99\x3"+ - "\x99\x3\x99\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x6"+ - "\x9A\x696\n\x9A\r\x9A\xE\x9A\x697\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3"+ - "\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3"+ - "\x9B\x3\x9B\x6\x9B\x6AB\n\x9B\r\x9B\xE\x9B\x6AC\x3\x9B\x3\x9B\x3\x9B\x3"+ - "\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9B\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3"+ - "\x9C\x3\x9C\x3\x9C\x6\x9C\x6BF\n\x9C\r\x9C\xE\x9C\x6C0\x3\x9C\x3\x9C\x3"+ - "\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x6\x9C\x6CC\n\x9C\r\x9C"+ - "\xE\x9C\x6CD\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9D\x3"+ - "\x9D\x3\x9D\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9F\x3"+ - "\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3"+ - "\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA1\x3"+ - "\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3"+ + "\x3\x44\x3\x44\x3\x44\x3\x44\x3\x45\x3\x45\x3\x45\x3\x45\x3\x45\x3\x46"+ + "\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3\x46\x3G\x3G\x3G\x3G\x3G"+ + "\x3G\x3G\x3G\x3H\x3H\x3H\x3H\x3H\x3H\x3H\x3H\x3I\x3I\x3I\x3I\x3I\x3I\x3"+ + "I\x3I\x3J\x3J\x3J\x3J\x3J\x3J\x3J\x3K\x3K\x3K\x3K\x3K\x3K\x3K\x3L\x3L"+ + "\x3L\x3L\x3L\x3L\x3L\x3M\x3M\x3M\x3M\x3M\x3M\x3M\x3N\x3N\x3N\x3N\x3N\x3"+ + "N\x3N\x3N\x3N\x3N\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3O\x3P\x3P\x3P"+ + "\x3P\x3P\x3P\x3P\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3Q\x3R\x3R\x3R\x3R\x3R\x3R\x3"+ + "R\x3S\x3S\x3S\x3S\x3S\x3S\x3S\x3T\x3T\x3T\x3T\x3U\x3U\x3U\x3V\x3V\x3V"+ + "\x3V\x3V\x3V\x3V\x3W\x3W\x3W\x3W\x3W\x3X\x3X\x3X\x3X\x3X\x3Y\x3Y\x3Y\x3"+ + "Y\x3Y\x3Y\x3Y\x3Z\x3Z\x3Z\x3Z\x3Z\x3Z\x3[\x3[\x3[\x3[\x6[\x465\n[\r[\xE"+ + "[\x466\x3[\x3[\x3[\x3[\x3[\x3\\\x3\\\x3\\\x3\\\x3\\\x6\\\x473\n\\\r\\"+ + "\xE\\\x474\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3\\\x3]\x3]\x3]\x3"+ + "]\x3]\a]\x485\n]\f]\xE]\x488\v]\x3]\x3]\x3]\x3^\x3^\x3^\x3^\x3^\x6^\x492"+ + "\n^\r^\xE^\x493\x3^\x3^\x3^\x3^\x3^\x3^\x3^\x3^\x3^\x3_\x3_\x3_\x3_\x3"+ + "_\x6_\x4A4\n_\r_\xE_\x4A5\x3_\x3_\x3_\x3_\x3_\x3_\x3_\x3`\x3`\x3`\x3`"+ + "\x3`\x6`\x4B4\n`\r`\xE`\x4B5\x3`\x3`\x3`\x3`\x3\x61\x3\x61\x3\x61\x3\x61"+ + "\x6\x61\x4C0\n\x61\r\x61\xE\x61\x4C1\x3\x61\x3\x61\x3\x61\x3\x61\x3\x61"+ + "\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62\x6\x62\x4CE\n\x62\r\x62\xE\x62\x4CF"+ + "\x3\x62\x3\x62\x3\x62\x3\x62\x3\x62\x3\x63\x3\x63\x3\x63\x3\x63\x3\x64"+ + "\x3\x64\x3\x64\x3\x64\x3\x64\x3\x65\x3\x65\x3\x65\x3\x65\x3\x66\x3\x66"+ + "\x3\x66\x3\x66\x3\x66\x3\x66\x3g\x3g\x3g\x3g\x3g\x3g\x3h\x3h\x3h\x3h\x3"+ + "h\x3h\x3i\x3i\x3i\x3i\x3i\x3i\x6i\x4FC\ni\ri\xEi\x4FD\x3i\x3i\x3i\x3j"+ + "\x3j\x3j\x3j\x3j\x3j\x6j\x509\nj\rj\xEj\x50A\x3j\x3j\x3j\x3j\x3k\x3k\x3"+ + "k\x3k\x3k\x3k\x6k\x517\nk\rk\xEk\x518\x3k\x3k\x3k\x3k\x3k\x3k\x3k\x3k"+ + "\x3k\x3l\x3l\x3l\x3l\x3l\x3l\x6l\x52A\nl\rl\xEl\x52B\x3l\x3l\x3l\x3l\x3"+ + "l\x3l\x3l\x3l\x3l\x3m\x3m\x3m\x3m\x3m\x3m\x6m\x53D\nm\rm\xEm\x53E\x3m"+ + "\x3m\x3m\x3m\x3n\x3n\x3n\x3n\x3n\x3n\x3o\x3o\x3o\x3o\x3o\x3o\x3o\x3p\x3"+ + "p\x3p\x3p\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3q\x3r\x3r\x3r\x3r\x3s\x3s"+ + "\x3s\x3s\x3s\x3s\x3s\x3t\x3t\x3t\x3t\x3t\x3t\x3u\x3u\x3u\x3u\x3u\x3v\x3"+ + "v\x3v\x3w\x3w\x3w\x3w\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3x\x3y"+ + "\x3y\x3y\x3z\x3z\x3z\x3z\x3z\x3z\x3{\x3{\x3{\x3|\x3|\x3|\x3|\x3|\x3|\x3"+ + "|\x3|\x3}\x3}\x3}\x3}\x3}\x3~\x3~\x3~\x3~\x3~\x3\x7F\x3\x7F\x3\x7F\x3"+ + "\x7F\x3\x7F\x3\x80\x3\x80\x3\x80\x3\x80\x3\x81\x3\x81\x3\x81\x3\x81\x3"+ + "\x82\x3\x82\x3\x82\x3\x82\x3\x82\x3\x83\x3\x83\x3\x83\x3\x83\x3\x83\x3"+ + "\x83\x6\x83\x5BD\n\x83\r\x83\xE\x83\x5BE\x3\x83\x3\x83\x3\x83\x3\x83\x3"+ + "\x83\x3\x83\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x6\x84\x5CD\n\x84"+ + "\r\x84\xE\x84\x5CE\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x85\x3\x85\x3"+ + "\x85\x3\x85\x3\x85\x3\x85\x6\x85\x5DC\n\x85\r\x85\xE\x85\x5DD\x3\x85\x3"+ + "\x85\x3\x85\x3\x85\x3\x85\x3\x85\x3\x86\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ + "\x86\x6\x86\x5EC\n\x86\r\x86\xE\x86\x5ED\x3\x86\x3\x86\x3\x86\x3\x86\x3"+ + "\x86\x3\x86\x6\x86\x5F6\n\x86\r\x86\xE\x86\x5F7\x3\x86\x3\x86\x3\x86\x3"+ + "\x86\x3\x86\x3\x86\x3\x87\x3\x87\x3\x87\x3\x87\x3\x87\x3\x88\x3\x88\x3"+ + "\x88\x3\x89\x3\x89\x3\x89\x3\x89\x3\x8A\x3\x8A\x3\x8A\x3\x8A\x3\x8B\x3"+ + "\x8B\x3\x8B\x3\x8B\x3\x8B\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x3\x8D\x3"+ + "\x8D\x3\x8D\x3\x8D\x3\x8E\x3\x8E\x3\x8E\x3\x8E\x3\x8F\x3\x8F\x3\x8F\x3"+ + "\x8F\x3\x8F\x3\x8F\x3\x8F\x3\x8F\x3\x90\x3\x90\x3\x90\x3\x90\x3\x90\x3"+ + "\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x92\x3\x92\x3\x92\x3"+ + "\x93\x3\x93\x3\x93\x3\x93\x6\x93\x63D\n\x93\r\x93\xE\x93\x63E\x3\x93\x3"+ + "\x93\x3\x93\x3\x93\x3\x93\x3\x93\x3\x94\x3\x94\x3\x94\x3\x94\x6\x94\x64B"+ + "\n\x94\r\x94\xE\x94\x64C\x3\x94\x3\x94\x3\x94\x3\x94\x3\x94\x3\x94\x3"+ + "\x94\x6\x94\x656\n\x94\r\x94\xE\x94\x657\x3\x94\x3\x94\x3\x94\x3\x94\x3"+ + "\x94\x3\x94\x3\x95\x3\x95\x3\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3\x96\x3"+ + "\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x96\x3\x97\x3\x97\x3\x97\x3\x97\x3"+ + "\x97\x3\x97\x3\x97\x3\x97\x6\x97\x676\n\x97\r\x97\xE\x97\x677\x3\x97\x3"+ + "\x97\x3\x97\x3\x97\x3\x97\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3"+ + "\x98\x3\x98\x6\x98\x687\n\x98\r\x98\xE\x98\x688\x3\x98\x3\x98\x3\x98\x3"+ + "\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x98\x3\x99\x3\x99\x3\x99\x3\x99\x3"+ + "\x99\x3\x99\x3\x99\x3\x99\x6\x99\x69C\n\x99\r\x99\xE\x99\x69D\x3\x99\x3"+ + "\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3\x99\x3\x9A\x3\x9A\x3\x9A\x3"+ + "\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x6\x9A\x6B0\n\x9A\r\x9A\xE\x9A\x6B1\x3"+ + "\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x6\x9A\x6BD"+ + "\n\x9A\r\x9A\xE\x9A\x6BE\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3\x9A\x3"+ + "\x9A\x3\x9B\x3\x9B\x3\x9B\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3\x9C\x3"+ + "\x9C\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3\x9D\x3"+ + "\x9D\x3\x9D\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3\x9E\x3"+ + "\x9E\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\x9F\x3\xA0\x3\xA0\x3\xA0\x3"+ + "\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3"+ + "\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x6\xA1\x6FE\n\xA1\r\xA1\xE\xA1\x6FF\x3"+ + "\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x3"+ + "\xA2\x3\xA2\x3\xA2\x3\xA2\x6\xA2\x710\n\xA2\r\xA2\xE\xA2\x711\x3\xA2\x3"+ "\xA2\x3\xA2\x3\xA2\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3\x3"+ - "\xA3\x3\xA3\x3\xA3\x6\xA3\x70D\n\xA3\r\xA3\xE\xA3\x70E\x3\xA3\x3\xA3\x3"+ + "\xA3\x3\xA3\x3\xA3\x6\xA3\x722\n\xA3\r\xA3\xE\xA3\x723\x3\xA3\x3\xA3\x3"+ "\xA3\x3\xA3\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x3"+ - "\xA4\x3\xA4\x6\xA4\x71F\n\xA4\r\xA4\xE\xA4\x720\x3\xA4\x3\xA4\x3\xA4\x3"+ - "\xA4\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3"+ - "\xA5\x6\xA5\x731\n\xA5\r\xA5\xE\xA5\x732\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3"+ - "\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA6\x3\xA7\x3\xA7\x3"+ - "\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA9\x3"+ - "\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3"+ - "\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAB\x3\xAB\x3\xAB\x3"+ - "\xAB\x3\xAB\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x6\xAC\x769\n\xAC"+ - "\r\xAC\xE\xAC\x76A\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAC\x3\xAD\x3"+ - "\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAE\x3\xAE\x3\xAE\x3\xAE\x3\xAF\x3"+ - "\xAF\x3\xAF\x3\xAF\x3\xAF\x3\xAF\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3"+ - "\xB0\x3\xB0\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3\xB2\x3"+ - "\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB4\x3"+ - "\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3"+ - "\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3\xB7\x3\xB7\x3\xB7\x3"+ - "\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB8\x3\xB8\x3\xB8\x3\xB8\x3\xB9\x3\xB9\x3"+ - "\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xBA\x3\xBA\x3\xBA\x3\xBA\x3\xBA\x3"+ - "\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3"+ - "\xBC\x3\xBC\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x3\xBE\x3\xBE\x3\xBE\x3\xBE\x3"+ - "\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xBF\x3\xC0\x3\xC0\x3\xC0\x3\xC0\x3\xC0\x3"+ - "\xC1\x3\xC1\x3\xC1\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC3\x3\xC3\x3"+ - "\xC3\x3\xC3\x3\xC3\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3"+ - "\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC6\x3\xC6\x3\xC6\x3"+ - "\xC6\x3\xC6\x3\xC6\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3"+ - "\xC7\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3\xC9\x3"+ - "\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xCA\x3\xCA\x3\xCA\x3\xCA\x3\xCA\x3\xCA\x3"+ - "\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3"+ - "\xCC\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCD\x3"+ - "\xCD\x3\xCD\x3\xCE\x3\xCE\x3\xCE\x3\xCE\x3\xCE\x3\xCE\x3\xCF\x3\xCF\x3"+ - "\xCF\x3\xCF\x3\xD0\x3\xD0\x3\xD0\x3\xD1\x3\xD1\x3\xD2\x3\xD2\x3\xD3\x3"+ - "\xD3\x3\xD4\x3\xD4\x3\xD4\x3\xD4\x5\xD4\x84B\n\xD4\x3\xD5\x3\xD5\x3\xD6"+ - "\x3\xD6\x3\xD6\x3\xD6\x5\xD6\x853\n\xD6\x3\xD7\x3\xD7\x3\xD8\x3\xD8\x3"+ - "\xD9\x3\xD9\x3\xDA\x3\xDA\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x5\xDB\x861\n\xDB"+ - "\x3\xDC\x3\xDC\x3\xDD\x3\xDD\x3\xDE\x3\xDE\x3\xDF\x3\xDF\x3\xE0\x3\xE0"+ - "\x3\xE1\x3\xE1\x3\xE1\x3\xE1\a\xE1\x871\n\xE1\f\xE1\xE\xE1\x874\v\xE1"+ - "\x3\xE1\x3\xE1\x3\xE2\x3\xE2\x3\xE2\x3\xE2\x6\xE2\x87C\n\xE2\r\xE2\xE"+ - "\xE2\x87D\x3\xE2\x5\xE2\x881\n\xE2\x3\xE3\x3\xE3\x3\xE3\x3\xE3\x6\xE3"+ - "\x887\n\xE3\r\xE3\xE\xE3\x888\x3\xE3\x5\xE3\x88C\n\xE3\x3\xE4\x3\xE4\x5"+ - "\xE4\x890\n\xE4\x3\xE4\x3\xE4\x3\xE4\x5\xE4\x895\n\xE4\x3\xE5\x3\xE5\x3"+ - "\xE5\x3\xE5\x3\xE5\x3\xE5\x5\xE5\x89D\n\xE5\x3\xE5\x5\xE5\x8A0\n\xE5\x3"+ - "\xE5\x3\xE5\x3\xE5\x5\xE5\x8A5\n\xE5\x5\xE5\x8A7\n\xE5\x3\xE6\x3\xE6\x5"+ - "\xE6\x8AB\n\xE6\x3\xE7\x3\xE7\x3\xE8\x3\xE8\x3\xE9\x3\xE9\x5\xE9\x8B3"+ - "\n\xE9\x3\xE9\x6\xE9\x8B6\n\xE9\r\xE9\xE\xE9\x8B7\x3\xEA\x3\xEA\x3\xEB"+ - "\x3\xEB\x3\xEC\x6\xEC\x8BF\n\xEC\r\xEC\xE\xEC\x8C0\x3\xED\x3\xED\x3\xED"+ - "\x6\xED\x8C6\n\xED\r\xED\xE\xED\x8C7\x5\xED\x8CA\n\xED\x3\xED\x3\xED\x3"+ - "\xED\x3\xEE\x3\xEE\x5\xEE\x8D1\n\xEE\x3\xEE\x3\xEE\x3\xEE\x3\xEE\x5\xEE"+ - "\x8D7\n\xEE\x3\xEF\x3\xEF\x3\xEF\x3\xEF\x3\xEF\x3\xEF\x5\xEF\x8DF\n\xEF"+ - "\x3\xF0\x6\xF0\x8E2\n\xF0\r\xF0\xE\xF0\x8E3\x3\xF0\x5\xF0\x8E7\n\xF0\x3"+ - "\xF1\x5\xF1\x8EA\n\xF1\x3\xF1\x5\xF1\x8ED\n\xF1\x3\xF1\x5\xF1\x8F0\n\xF1"+ - "\x3\xF2\x3\xF2\x5\xF2\x8F4\n\xF2\x3\xF3\x3\xF3\x3\xF3\x3\xF3\x3\xF3\x3"+ - "\xF3\x3\xF3\x3\xF3\x3\xF3\x3\xF3\x3\xF3\x3\xF3\x5\xF3\x902\n\xF3\x3\xF4"+ - "\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4\x3\xF4"+ - "\x5\xF4\x90F\n\xF4\x3\xF5\x6\xF5\x912\n\xF5\r\xF5\xE\xF5\x913\x3\xF5\x3"+ - "\xF5\x3\xF5\x6\xF5\x919\n\xF5\r\xF5\xE\xF5\x91A\x3\xF5\x3\xF5\x6\xF5\x91F"+ - "\n\xF5\r\xF5\xE\xF5\x920\x3\xF5\x3\xF5\x6\xF5\x925\n\xF5\r\xF5\xE\xF5"+ - "\x926\x5\xF5\x929\n\xF5\x3\xF5\x5\xF5\x92C\n\xF5\x5\xF5\x92E\n\xF5\x3"+ - "\xF6\x5\xF6\x931\n\xF6\x3\xF6\x3\xF6\x5\xF6\x935\n\xF6\x3\xF7\x5\xF7\x938"+ - "\n\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x5\xF7"+ - "\x942\n\xF7\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3"+ - "\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3\xFA\x3"+ - "\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3"+ - "\xFB\x3\xFC\x3\xFC\x3\xFC\x3\xFC\x3\xFD\x3\xFD\x3\xFD\x3\xFD\x3\xFD\x3"+ - "\xFE\x3\xFE\x3\xFE\x3\xFE\x3\xFE\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3"+ - "\xFF\x3\xFF\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3"+ - "\x100\x3\x100\x3\x100\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101"+ - "\x3\x101\x3\x101\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102\x3\x102"+ - "\x3\x102\x3\x102\x3\x103\x3\x103\x3\x103\x3\x103\x3\x103\x3\x103\x3\x103"+ - "\x3\x103\x3\x103\x3\x104\x3\x104\x3\x104\x3\x104\x3\x105\x3\x105\x3\x105"+ - "\x3\x105\x3\x106\x3\x106\x3\x106\x3\x106\x3\x107\x3\x107\x3\x107\x3\x107"+ - "\x3\x108\x3\x108\x3\x108\x3\x108\x3\x109\x3\x109\x3\x109\x3\x109\x3\x10A"+ - "\x3\x10A\x3\x10A\x3\x10A\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10C\x3\x10C"+ - "\x3\x10C\x3\x10C\x3\x10D\x3\x10D\x3\x10D\x3\x10D\x3\x10E\x3\x10E\x3\x10E"+ - "\x3\x10E\x3\x10F\x3\x10F\x3\x10F\x5\x10F\x9C9\n\x10F\x3\x110\x3\x110\x3"+ - "\x111\x3\x111\x3\x112\x3\x112\x3\x113\x3\x113\x6\x113\x9D3\n\x113\r\x113"+ - "\xE\x113\x9D4\x3\x113\x3\x113\x6\x113\x9D9\n\x113\r\x113\xE\x113\x9DA"+ - "\x3\x113\x3\x113\x6\x113\x9DF\n\x113\r\x113\xE\x113\x9E0\x3\x113\x3\x113"+ - "\x6\x113\x9E5\n\x113\r\x113\xE\x113\x9E6\x3\x113\x3\x113\x6\x113\x9EB"+ - "\n\x113\r\x113\xE\x113\x9EC\x3\x113\x3\x113\x3\x114\x3\x114\a\x114\x9F3"+ - "\n\x114\f\x114\xE\x114\x9F6\v\x114\x3\x115\a\x115\x9F9\n\x115\f\x115\xE"+ - "\x115\x9FC\v\x115\x3\x115\x3\x115\a\x115\xA00\n\x115\f\x115\xE\x115\xA03"+ - "\v\x115\x3\x115\x5\x115\xA06\n\x115\x3\x115\x3\x115\x3\x116\x3\x116\x3"+ - "\x117\x3\x117\x3\x118\x3\x118\x3\x119\x3\x119\x3\x11A\x3\x11A\x3\x11B"+ - "\x3\x11B\x3\x11C\x3\x11C\x3\x11D\x3\x11D\x3\x11E\x3\x11E\x3\x11F\x3\x11F"+ - "\x3\x120\x3\x120\x3\x121\x3\x121\x3\x122\x3\x122\x3\x123\x3\x123\x3\x124"+ - "\x3\x124\x3\x125\x3\x125\x3\x126\x3\x126\x3\x127\x3\x127\x3\x128\x3\x128"+ - "\x3\x129\x3\x129\x3\x12A\x3\x12A\x3\x12B\x3\x12B\x3\x12C\x3\x12C\x3\x12D"+ - "\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F\x3\x130\x3\x130\x3\x131\x3\x131"+ - "\x3\x132\x3\x132\x3\x133\x3\x133\x2\x2\x2\x134\x3\x2\x3\x5\x2\x4\a\x2"+ - "\x5\t\x2\x6\v\x2\a\r\x2\b\xF\x2\t\x11\x2\n\x13\x2\v\x15\x2\f\x17\x2\r"+ - "\x19\x2\xE\x1B\x2\xF\x1D\x2\x10\x1F\x2\x11!\x2\x12#\x2\x13%\x2\x14\'\x2"+ - "\x15)\x2\x16+\x2\x17-\x2\x18/\x2\x19\x31\x2\x1A\x33\x2\x1B\x35\x2\x1C"+ - "\x37\x2\x1D\x39\x2\x1E;\x2\x1F=\x2 ?\x2!\x41\x2\"\x43\x2#\x45\x2$G\x2"+ - "%I\x2&K\x2\'M\x2(O\x2)Q\x2*S\x2+U\x2,W\x2-Y\x2.[\x2/]\x2\x30_\x2\x31\x61"+ - "\x2\x32\x63\x2\x33\x65\x2\x34g\x2\x35i\x2\x36k\x2\x37m\x2\x38o\x2\x39"+ - "q\x2:s\x2;u\x2{\x2?}\x2@\x7F\x2\x41\x81\x2\x42\x83\x2\x43\x85"+ - "\x2\x44\x87\x2\x45\x89\x2\x46\x8B\x2G\x8D\x2H\x8F\x2I\x91\x2J\x93\x2K"+ - "\x95\x2L\x97\x2M\x99\x2N\x9B\x2O\x9D\x2P\x9F\x2Q\xA1\x2R\xA3\x2S\xA5\x2"+ - "T\xA7\x2U\xA9\x2V\xAB\x2W\xAD\x2X\xAF\x2Y\xB1\x2Z\xB3\x2[\xB5\x2\\\xB7"+ - "\x2]\xB9\x2^\xBB\x2_\xBD\x2`\xBF\x2\x61\xC1\x2\x62\xC3\x2\x63\xC5\x2\x64"+ - "\xC7\x2\x65\xC9\x2\x66\xCB\x2g\xCD\x2h\xCF\x2i\xD1\x2j\xD3\x2k\xD5\x2"+ - "l\xD7\x2m\xD9\x2n\xDB\x2o\xDD\x2p\xDF\x2q\xE1\x2r\xE3\x2s\xE5\x2t\xE7"+ - "\x2u\xE9\x2v\xEB\x2w\xED\x2x\xEF\x2y\xF1\x2z\xF3\x2{\xF5\x2|\xF7\x2}\xF9"+ - "\x2~\xFB\x2\x7F\xFD\x2\x80\xFF\x2\x81\x101\x2\x82\x103\x2\x83\x105\x2"+ - "\x84\x107\x2\x85\x109\x2\x86\x10B\x2\x87\x10D\x2\x88\x10F\x2\x89\x111"+ - "\x2\x8A\x113\x2\x8B\x115\x2\x8C\x117\x2\x8D\x119\x2\x8E\x11B\x2\x8F\x11D"+ - "\x2\x90\x11F\x2\x91\x121\x2\x92\x123\x2\x93\x125\x2\x94\x127\x2\x95\x129"+ - "\x2\x96\x12B\x2\x97\x12D\x2\x98\x12F\x2\x99\x131\x2\x9A\x133\x2\x9B\x135"+ - "\x2\x9C\x137\x2\x9D\x139\x2\x9E\x13B\x2\x9F\x13D\x2\xA0\x13F\x2\xA1\x141"+ - "\x2\xA2\x143\x2\xA3\x145\x2\xA4\x147\x2\xA5\x149\x2\xA6\x14B\x2\xA7\x14D"+ - "\x2\xA8\x14F\x2\xA9\x151\x2\xAA\x153\x2\xAB\x155\x2\xAC\x157\x2\xAD\x159"+ - "\x2\xAE\x15B\x2\xAF\x15D\x2\xB0\x15F\x2\xB1\x161\x2\xB2\x163\x2\xB3\x165"+ - "\x2\xB4\x167\x2\xB5\x169\x2\xB6\x16B\x2\xB7\x16D\x2\xB8\x16F\x2\xB9\x171"+ - "\x2\xBA\x173\x2\xBB\x175\x2\xBC\x177\x2\xBD\x179\x2\xBE\x17B\x2\xBF\x17D"+ - "\x2\xC0\x17F\x2\xC1\x181\x2\xC2\x183\x2\xC3\x185\x2\xC4\x187\x2\xC5\x189"+ - "\x2\xC6\x18B\x2\xC7\x18D\x2\xC8\x18F\x2\xC9\x191\x2\xCA\x193\x2\xCB\x195"+ - "\x2\xCC\x197\x2\xCD\x199\x2\xCE\x19B\x2\xCF\x19D\x2\xD0\x19F\x2\xD1\x1A1"+ - "\x2\xD2\x1A3\x2\xD3\x1A5\x2\xD4\x1A7\x2\xD5\x1A9\x2\xD6\x1AB\x2\xD7\x1AD"+ - "\x2\xD8\x1AF\x2\xD9\x1B1\x2\xDA\x1B3\x2\xDB\x1B5\x2\xDC\x1B7\x2\xDD\x1B9"+ - "\x2\xDE\x1BB\x2\xDF\x1BD\x2\xE0\x1BF\x2\xE1\x1C1\x2\xE2\x1C3\x2\xE3\x1C5"+ - "\x2\xE4\x1C7\x2\xE5\x1C9\x2\x2\x1CB\x2\xE6\x1CD\x2\x2\x1CF\x2\x2\x1D1"+ - "\x2\x2\x1D3\x2\x2\x1D5\x2\x2\x1D7\x2\x2\x1D9\x2\xE7\x1DB\x2\x2\x1DD\x2"+ - "\x2\x1DF\x2\x2\x1E1\x2\x2\x1E3\x2\x2\x1E5\x2\x2\x1E7\x2\x2\x1E9\x2\x2"+ - "\x1EB\x2\x2\x1ED\x2\x2\x1EF\x2\x2\x1F1\x2\x2\x1F3\x2\x2\x1F5\x2\x2\x1F7"+ - "\x2\x2\x1F9\x2\x2\x1FB\x2\x2\x1FD\x2\x2\x1FF\x2\x2\x201\x2\x2\x203\x2"+ - "\x2\x205\x2\x2\x207\x2\x2\x209\x2\x2\x20B\x2\x2\x20D\x2\x2\x20F\x2\x2"+ - "\x211\x2\x2\x213\x2\x2\x215\x2\x2\x217\x2\x2\x219\x2\x2\x21B\x2\x2\x21D"+ - "\x2\xE8\x21F\x2\xE9\x221\x2\xEA\x223\x2\xEB\x225\x2\xEC\x227\x2\xED\x229"+ - "\x2\xEE\x22B\x2\x2\x22D\x2\x2\x22F\x2\x2\x231\x2\x2\x233\x2\x2\x235\x2"+ - "\x2\x237\x2\x2\x239\x2\x2\x23B\x2\x2\x23D\x2\x2\x23F\x2\x2\x241\x2\x2"+ - "\x243\x2\x2\x245\x2\x2\x247\x2\x2\x249\x2\x2\x24B\x2\x2\x24D\x2\x2\x24F"+ - "\x2\x2\x251\x2\x2\x253\x2\x2\x255\x2\x2\x257\x2\x2\x259\x2\x2\x25B\x2"+ - "\x2\x25D\x2\x2\x25F\x2\x2\x261\x2\x2\x263\x2\x2\x265\x2\xEF\x3\x2,\x5"+ - "\x2\f\f\xF\xF$$\x3\x2\x32:\x4\x2\x32;\x43H\x4\x2\'(``\x5\x2##%%\x42\x42"+ - "\x4\x2\x46G\x66g\x4\x2--//\x4\x2./\x31\x31\x4\x2\x30\x30<<\x5\x2\f\f\xF"+ - "\xF\x202A\x202B\x4\x2\v\v\"\"\t\x2\v\f\xF\xF\"=??\x42\x42]`~~\n\x2\v\f"+ - "\xF\xF\"\x30<=??\x42\x42]`~~\v\x2\x43\\\x61\x61\x63|\xC6\xC6\xD8\xD8\xDE"+ - "\xDE\xE6\xE6\xF8\xF8\xFE\xFE\x3\x2\x32;\f\x2\x32;\x43\\\x61\x61\x63|\xC6"+ - "\xC6\xD8\xD8\xDE\xDE\xE6\xE6\xF8\xF8\xFE\xFE\x4\x2\x43\x43\x63\x63\x4"+ - "\x2\x44\x44\x64\x64\x4\x2\x45\x45\x65\x65\x4\x2\x46\x46\x66\x66\x4\x2"+ - "GGgg\x4\x2HHhh\x4\x2IIii\x4\x2JJjj\x4\x2KKkk\x4\x2LLll\x4\x2MMmm\x4\x2"+ - "NNnn\x4\x2OOoo\x4\x2PPpp\x4\x2QQqq\x4\x2RRrr\x4\x2SSss\x4\x2TTtt\x4\x2"+ - "UUuu\x4\x2VVvv\x4\x2WWww\x4\x2XXxx\x4\x2YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2"+ - "\\\\||\xA86\x2\x3\x3\x2\x2\x2\x2\x5\x3\x2\x2\x2\x2\a\x3\x2\x2\x2\x2\t"+ - "\x3\x2\x2\x2\x2\v\x3\x2\x2\x2\x2\r\x3\x2\x2\x2\x2\xF\x3\x2\x2\x2\x2\x11"+ - "\x3\x2\x2\x2\x2\x13\x3\x2\x2\x2\x2\x15\x3\x2\x2\x2\x2\x17\x3\x2\x2\x2"+ - "\x2\x19\x3\x2\x2\x2\x2\x1B\x3\x2\x2\x2\x2\x1D\x3\x2\x2\x2\x2\x1F\x3\x2"+ - "\x2\x2\x2!\x3\x2\x2\x2\x2#\x3\x2\x2\x2\x2%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2"+ - "\x2)\x3\x2\x2\x2\x2+\x3\x2\x2\x2\x2-\x3\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31"+ - "\x3\x2\x2\x2\x2\x33\x3\x2\x2\x2\x2\x35\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2"+ - "\x2\x39\x3\x2\x2\x2\x2;\x3\x2\x2\x2\x2=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2"+ - "\x41\x3\x2\x2\x2\x2\x43\x3\x2\x2\x2\x2\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2"+ - "\x2I\x3\x2\x2\x2\x2K\x3\x2\x2\x2\x2M\x3\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3"+ - "\x2\x2\x2\x2S\x3\x2\x2\x2\x2U\x3\x2\x2\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2"+ - "\x2\x2[\x3\x2\x2\x2\x2]\x3\x2\x2\x2\x2_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2"+ - "\x2\x63\x3\x2\x2\x2\x2\x65\x3\x2\x2\x2\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2"+ - "\x2k\x3\x2\x2\x2\x2m\x3\x2\x2\x2\x2o\x3\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3"+ - "\x2\x2\x2\x2u\x3\x2\x2\x2\x2w\x3\x2\x2\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2"+ - "\x2\x2}\x3\x2\x2\x2\x2\x7F\x3\x2\x2\x2\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2"+ - "\x2\x2\x2\x85\x3\x2\x2\x2\x2\x87\x3\x2\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B"+ - "\x3\x2\x2\x2\x2\x8D\x3\x2\x2\x2\x2\x8F\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2"+ - "\x2\x93\x3\x2\x2\x2\x2\x95\x3\x2\x2\x2\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2"+ - "\x2\x2\x2\x9B\x3\x2\x2\x2\x2\x9D\x3\x2\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1"+ - "\x3\x2\x2\x2\x2\xA3\x3\x2\x2\x2\x2\xA5\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2"+ - "\x2\xA9\x3\x2\x2\x2\x2\xAB\x3\x2\x2\x2\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2"+ - "\x2\x2\x2\xB1\x3\x2\x2\x2\x2\xB3\x3\x2\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7"+ - "\x3\x2\x2\x2\x2\xB9\x3\x2\x2\x2\x2\xBB\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2"+ - "\x2\xBF\x3\x2\x2\x2\x2\xC1\x3\x2\x2\x2\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2"+ - "\x2\x2\x2\xC7\x3\x2\x2\x2\x2\xC9\x3\x2\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD"+ - "\x3\x2\x2\x2\x2\xCF\x3\x2\x2\x2\x2\xD1\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2"+ - "\x2\xD5\x3\x2\x2\x2\x2\xD7\x3\x2\x2\x2\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2"+ - "\x2\x2\x2\xDD\x3\x2\x2\x2\x2\xDF\x3\x2\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3"+ - "\x3\x2\x2\x2\x2\xE5\x3\x2\x2\x2\x2\xE7\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2"+ - "\x2\xEB\x3\x2\x2\x2\x2\xED\x3\x2\x2\x2\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2"+ - "\x2\x2\x2\xF3\x3\x2\x2\x2\x2\xF5\x3\x2\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9"+ - "\x3\x2\x2\x2\x2\xFB\x3\x2\x2\x2\x2\xFD\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2"+ - "\x2\x101\x3\x2\x2\x2\x2\x103\x3\x2\x2\x2\x2\x105\x3\x2\x2\x2\x2\x107\x3"+ - "\x2\x2\x2\x2\x109\x3\x2\x2\x2\x2\x10B\x3\x2\x2\x2\x2\x10D\x3\x2\x2\x2"+ - "\x2\x10F\x3\x2\x2\x2\x2\x111\x3\x2\x2\x2\x2\x113\x3\x2\x2\x2\x2\x115\x3"+ - "\x2\x2\x2\x2\x117\x3\x2\x2\x2\x2\x119\x3\x2\x2\x2\x2\x11B\x3\x2\x2\x2"+ - "\x2\x11D\x3\x2\x2\x2\x2\x11F\x3\x2\x2\x2\x2\x121\x3\x2\x2\x2\x2\x123\x3"+ - "\x2\x2\x2\x2\x125\x3\x2\x2\x2\x2\x127\x3\x2\x2\x2\x2\x129\x3\x2\x2\x2"+ - "\x2\x12B\x3\x2\x2\x2\x2\x12D\x3\x2\x2\x2\x2\x12F\x3\x2\x2\x2\x2\x131\x3"+ - "\x2\x2\x2\x2\x133\x3\x2\x2\x2\x2\x135\x3\x2\x2\x2\x2\x137\x3\x2\x2\x2"+ - "\x2\x139\x3\x2\x2\x2\x2\x13B\x3\x2\x2\x2\x2\x13D\x3\x2\x2\x2\x2\x13F\x3"+ - "\x2\x2\x2\x2\x141\x3\x2\x2\x2\x2\x143\x3\x2\x2\x2\x2\x145\x3\x2\x2\x2"+ - "\x2\x147\x3\x2\x2\x2\x2\x149\x3\x2\x2\x2\x2\x14B\x3\x2\x2\x2\x2\x14D\x3"+ - "\x2\x2\x2\x2\x14F\x3\x2\x2\x2\x2\x151\x3\x2\x2\x2\x2\x153\x3\x2\x2\x2"+ - "\x2\x155\x3\x2\x2\x2\x2\x157\x3\x2\x2\x2\x2\x159\x3\x2\x2\x2\x2\x15B\x3"+ - "\x2\x2\x2\x2\x15D\x3\x2\x2\x2\x2\x15F\x3\x2\x2\x2\x2\x161\x3\x2\x2\x2"+ - "\x2\x163\x3\x2\x2\x2\x2\x165\x3\x2\x2\x2\x2\x167\x3\x2\x2\x2\x2\x169\x3"+ - "\x2\x2\x2\x2\x16B\x3\x2\x2\x2\x2\x16D\x3\x2\x2\x2\x2\x16F\x3\x2\x2\x2"+ - "\x2\x171\x3\x2\x2\x2\x2\x173\x3\x2\x2\x2\x2\x175\x3\x2\x2\x2\x2\x177\x3"+ - "\x2\x2\x2\x2\x179\x3\x2\x2\x2\x2\x17B\x3\x2\x2\x2\x2\x17D\x3\x2\x2\x2"+ - "\x2\x17F\x3\x2\x2\x2\x2\x181\x3\x2\x2\x2\x2\x183\x3\x2\x2\x2\x2\x185\x3"+ - "\x2\x2\x2\x2\x187\x3\x2\x2\x2\x2\x189\x3\x2\x2\x2\x2\x18B\x3\x2\x2\x2"+ - "\x2\x18D\x3\x2\x2\x2\x2\x18F\x3\x2\x2\x2\x2\x191\x3\x2\x2\x2\x2\x193\x3"+ - "\x2\x2\x2\x2\x195\x3\x2\x2\x2\x2\x197\x3\x2\x2\x2\x2\x199\x3\x2\x2\x2"+ - "\x2\x19B\x3\x2\x2\x2\x2\x19D\x3\x2\x2\x2\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3"+ - "\x2\x2\x2\x2\x1A3\x3\x2\x2\x2\x2\x1A5\x3\x2\x2\x2\x2\x1A7\x3\x2\x2\x2"+ - "\x2\x1A9\x3\x2\x2\x2\x2\x1AB\x3\x2\x2\x2\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3"+ - "\x2\x2\x2\x2\x1B1\x3\x2\x2\x2\x2\x1B3\x3\x2\x2\x2\x2\x1B5\x3\x2\x2\x2"+ - "\x2\x1B7\x3\x2\x2\x2\x2\x1B9\x3\x2\x2\x2\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3"+ - "\x2\x2\x2\x2\x1BF\x3\x2\x2\x2\x2\x1C1\x3\x2\x2\x2\x2\x1C3\x3\x2\x2\x2"+ - "\x2\x1C5\x3\x2\x2\x2\x2\x1C7\x3\x2\x2\x2\x2\x1CB\x3\x2\x2\x2\x2\x1D9\x3"+ - "\x2\x2\x2\x2\x21D\x3\x2\x2\x2\x2\x21F\x3\x2\x2\x2\x2\x221\x3\x2\x2\x2"+ - "\x2\x223\x3\x2\x2\x2\x2\x225\x3\x2\x2\x2\x2\x227\x3\x2\x2\x2\x2\x229\x3"+ - "\x2\x2\x2\x2\x265\x3\x2\x2\x2\x3\x267\x3\x2\x2\x2\x5\x26B\x3\x2\x2\x2"+ - "\a\x26F\x3\x2\x2\x2\t\x275\x3\x2\x2\x2\v\x277\x3\x2\x2\x2\r\x27A\x3\x2"+ - "\x2\x2\xF\x280\x3\x2\x2\x2\x11\x286\x3\x2\x2\x2\x13\x28B\x3\x2\x2\x2\x15"+ - "\x291\x3\x2\x2\x2\x17\x296\x3\x2\x2\x2\x19\x29B\x3\x2\x2\x2\x1B\x2A0\x3"+ - "\x2\x2\x2\x1D\x2A7\x3\x2\x2\x2\x1F\x2AC\x3\x2\x2\x2!\x2B4\x3\x2\x2\x2"+ - "#\x2BC\x3\x2\x2\x2%\x2C1\x3\x2\x2\x2\'\x2C6\x3\x2\x2\x2)\x2CF\x3\x2\x2"+ - "\x2+\x2D4\x3\x2\x2\x2-\x2DA\x3\x2\x2\x2/\x2E0\x3\x2\x2\x2\x31\x2E9\x3"+ - "\x2\x2\x2\x33\x2EE\x3\x2\x2\x2\x35\x2F2\x3\x2\x2\x2\x37\x2F9\x3\x2\x2"+ - "\x2\x39\x2FD\x3\x2\x2\x2;\x304\x3\x2\x2\x2=\x308\x3\x2\x2\x2?\x30D\x3"+ - "\x2\x2\x2\x41\x316\x3\x2\x2\x2\x43\x31E\x3\x2\x2\x2\x45\x323\x3\x2\x2"+ - "\x2G\x329\x3\x2\x2\x2I\x32E\x3\x2\x2\x2K\x335\x3\x2\x2\x2M\x33A\x3\x2"+ - "\x2\x2O\x340\x3\x2\x2\x2Q\x344\x3\x2\x2\x2S\x34B\x3\x2\x2\x2U\x34D\x3"+ - "\x2\x2\x2W\x34F\x3\x2\x2\x2Y\x351\x3\x2\x2\x2[\x353\x3\x2\x2\x2]\x355"+ - "\x3\x2\x2\x2_\x357\x3\x2\x2\x2\x61\x359\x3\x2\x2\x2\x63\x35B\x3\x2\x2"+ - "\x2\x65\x35D\x3\x2\x2\x2g\x35F\x3\x2\x2\x2i\x366\x3\x2\x2\x2k\x370\x3"+ - "\x2\x2\x2m\x376\x3\x2\x2\x2o\x37A\x3\x2\x2\x2q\x384\x3\x2\x2\x2s\x38B"+ - "\x3\x2\x2\x2u\x38E\x3\x2\x2\x2w\x394\x3\x2\x2\x2y\x39B\x3\x2\x2\x2{\x3A3"+ - "\x3\x2\x2\x2}\x3A9\x3\x2\x2\x2\x7F\x3AF\x3\x2\x2\x2\x81\x3B4\x3\x2\x2"+ - "\x2\x83\x3B9\x3\x2\x2\x2\x85\x3BE\x3\x2\x2\x2\x87\x3C4\x3\x2\x2\x2\x89"+ - "\x3CA\x3\x2\x2\x2\x8B\x3D0\x3\x2\x2\x2\x8D\x3D9\x3\x2\x2\x2\x8F\x3DE\x3"+ - "\x2\x2\x2\x91\x3E6\x3\x2\x2\x2\x93\x3EE\x3\x2\x2\x2\x95\x3F6\x3\x2\x2"+ - "\x2\x97\x3FE\x3\x2\x2\x2\x99\x405\x3\x2\x2\x2\x9B\x40C\x3\x2\x2\x2\x9D"+ - "\x413\x3\x2\x2\x2\x9F\x41A\x3\x2\x2\x2\xA1\x424\x3\x2\x2\x2\xA3\x42E\x3"+ - "\x2\x2\x2\xA5\x435\x3\x2\x2\x2\xA7\x43C\x3\x2\x2\x2\xA9\x443\x3\x2\x2"+ - "\x2\xAB\x44A\x3\x2\x2\x2\xAD\x44E\x3\x2\x2\x2\xAF\x451\x3\x2\x2\x2\xB1"+ - "\x458\x3\x2\x2\x2\xB3\x45D\x3\x2\x2\x2\xB5\x462\x3\x2\x2\x2\xB7\x469\x3"+ - "\x2\x2\x2\xB9\x46F\x3\x2\x2\x2\xBB\x47C\x3\x2\x2\x2\xBD\x48E\x3\x2\x2"+ - "\x2\xBF\x49B\x3\x2\x2\x2\xC1\x4AD\x3\x2\x2\x2\xC3\x4BD\x3\x2\x2\x2\xC5"+ - "\x4CA\x3\x2\x2\x2\xC7\x4D7\x3\x2\x2\x2\xC9\x4E5\x3\x2\x2\x2\xCB\x4E9\x3"+ - "\x2\x2\x2\xCD\x4EE\x3\x2\x2\x2\xCF\x4F2\x3\x2\x2\x2\xD1\x4F8\x3\x2\x2"+ - "\x2\xD3\x4FE\x3\x2\x2\x2\xD5\x504\x3\x2\x2\x2\xD7\x511\x3\x2\x2\x2\xD9"+ - "\x51F\x3\x2\x2\x2\xDB\x532\x3\x2\x2\x2\xDD\x545\x3\x2\x2\x2\xDF\x553\x3"+ - "\x2\x2\x2\xE1\x559\x3\x2\x2\x2\xE3\x560\x3\x2\x2\x2\xE5\x564\x3\x2\x2"+ - "\x2\xE7\x56D\x3\x2\x2\x2\xE9\x571\x3\x2\x2\x2\xEB\x578\x3\x2\x2\x2\xED"+ - "\x57E\x3\x2\x2\x2\xEF\x583\x3\x2\x2\x2\xF1\x586\x3\x2\x2\x2\xF3\x58A\x3"+ - "\x2\x2\x2\xF5\x595\x3\x2\x2\x2\xF7\x598\x3\x2\x2\x2\xF9\x59E\x3\x2\x2"+ - "\x2\xFB\x5A1\x3\x2\x2\x2\xFD\x5A9\x3\x2\x2\x2\xFF\x5AE\x3\x2\x2\x2\x101"+ - "\x5B3\x3\x2\x2\x2\x103\x5B8\x3\x2\x2\x2\x105\x5BC\x3\x2\x2\x2\x107\x5C0"+ - "\x3\x2\x2\x2\x109\x5C5\x3\x2\x2\x2\x10B\x5D5\x3\x2\x2\x2\x10D\x5E4\x3"+ - "\x2\x2\x2\x10F\x5F4\x3\x2\x2\x2\x111\x60E\x3\x2\x2\x2\x113\x613\x3\x2"+ - "\x2\x2\x115\x616\x3\x2\x2\x2\x117\x61A\x3\x2\x2\x2\x119\x61E\x3\x2\x2"+ - "\x2\x11B\x623\x3\x2\x2\x2\x11D\x628\x3\x2\x2\x2\x11F\x62C\x3\x2\x2\x2"+ - "\x121\x630\x3\x2\x2\x2\x123\x638\x3\x2\x2\x2\x125\x63D\x3\x2\x2\x2\x127"+ - "\x644\x3\x2\x2\x2\x129\x647\x3\x2\x2\x2\x12B\x655\x3\x2\x2\x2\x12D\x66E"+ - "\x3\x2\x2\x2\x12F\x673\x3\x2\x2\x2\x131\x67C\x3\x2\x2\x2\x133\x68D\x3"+ - "\x2\x2\x2\x135\x6A2\x3\x2\x2\x2\x137\x6B6\x3\x2\x2\x2\x139\x6D6\x3\x2"+ - "\x2\x2\x13B\x6D9\x3\x2\x2\x2\x13D\x6E0\x3\x2\x2\x2\x13F\x6EB\x3\x2\x2"+ - "\x2\x141\x6F4\x3\x2\x2\x2\x143\x6FA\x3\x2\x2\x2\x145\x702\x3\x2\x2\x2"+ - "\x147\x714\x3\x2\x2\x2\x149\x726\x3\x2\x2\x2\x14B\x738\x3\x2\x2\x2\x14D"+ - "\x740\x3\x2\x2\x2\x14F\x747\x3\x2\x2\x2\x151\x74B\x3\x2\x2\x2\x153\x752"+ - "\x3\x2\x2\x2\x155\x75D\x3\x2\x2\x2\x157\x762\x3\x2\x2\x2\x159\x772\x3"+ - "\x2\x2\x2\x15B\x778\x3\x2\x2\x2\x15D\x77C\x3\x2\x2\x2\x15F\x782\x3\x2"+ - "\x2\x2\x161\x789\x3\x2\x2\x2\x163\x790\x3\x2\x2\x2\x165\x795\x3\x2\x2"+ - "\x2\x167\x79A\x3\x2\x2\x2\x169\x7A1\x3\x2\x2\x2\x16B\x7A5\x3\x2\x2\x2"+ - "\x16D\x7AC\x3\x2\x2\x2\x16F\x7B3\x3\x2\x2\x2\x171\x7B7\x3\x2\x2\x2\x173"+ - "\x7BE\x3\x2\x2\x2\x175\x7C3\x3\x2\x2\x2\x177\x7C8\x3\x2\x2\x2\x179\x7CF"+ - "\x3\x2\x2\x2\x17B\x7D3\x3\x2\x2\x2\x17D\x7D7\x3\x2\x2\x2\x17F\x7DC\x3"+ - "\x2\x2\x2\x181\x7E1\x3\x2\x2\x2\x183\x7E4\x3\x2\x2\x2\x185\x7E9\x3\x2"+ - "\x2\x2\x187\x7EE\x3\x2\x2\x2\x189\x7F5\x3\x2\x2\x2\x18B\x7FC\x3\x2\x2"+ - "\x2\x18D\x802\x3\x2\x2\x2\x18F\x80A\x3\x2\x2\x2\x191\x812\x3\x2\x2\x2"+ - "\x193\x817\x3\x2\x2\x2\x195\x81D\x3\x2\x2\x2\x197\x823\x3\x2\x2\x2\x199"+ - "\x828\x3\x2\x2\x2\x19B\x833\x3\x2\x2\x2\x19D\x839\x3\x2\x2\x2\x19F\x83D"+ - "\x3\x2\x2\x2\x1A1\x840\x3\x2\x2\x2\x1A3\x842\x3\x2\x2\x2\x1A5\x844\x3"+ - "\x2\x2\x2\x1A7\x84A\x3\x2\x2\x2\x1A9\x84C\x3\x2\x2\x2\x1AB\x852\x3\x2"+ - "\x2\x2\x1AD\x854\x3\x2\x2\x2\x1AF\x856\x3\x2\x2\x2\x1B1\x858\x3\x2\x2"+ - "\x2\x1B3\x85A\x3\x2\x2\x2\x1B5\x860\x3\x2\x2\x2\x1B7\x862\x3\x2\x2\x2"+ - "\x1B9\x864\x3\x2\x2\x2\x1BB\x866\x3\x2\x2\x2\x1BD\x868\x3\x2\x2\x2\x1BF"+ - "\x86A\x3\x2\x2\x2\x1C1\x86C\x3\x2\x2\x2\x1C3\x877\x3\x2\x2\x2\x1C5\x882"+ - "\x3\x2\x2\x2\x1C7\x894\x3\x2\x2\x2\x1C9\x8A6\x3\x2\x2\x2\x1CB\x8A8\x3"+ - "\x2\x2\x2\x1CD\x8AC\x3\x2\x2\x2\x1CF\x8AE\x3\x2\x2\x2\x1D1\x8B0\x3\x2"+ - "\x2\x2\x1D3\x8B9\x3\x2\x2\x2\x1D5\x8BB\x3\x2\x2\x2\x1D7\x8BE\x3\x2\x2"+ - "\x2\x1D9\x8C2\x3\x2\x2\x2\x1DB\x8D6\x3\x2\x2\x2\x1DD\x8D8\x3\x2\x2\x2"+ - "\x1DF\x8E6\x3\x2\x2\x2\x1E1\x8E9\x3\x2\x2\x2\x1E3\x8F3\x3\x2\x2\x2\x1E5"+ - "\x901\x3\x2\x2\x2\x1E7\x90E\x3\x2\x2\x2\x1E9\x92D\x3\x2\x2\x2\x1EB\x930"+ - "\x3\x2\x2\x2\x1ED\x937\x3\x2\x2\x2\x1EF\x943\x3\x2\x2\x2\x1F1\x94B\x3"+ - "\x2\x2\x2\x1F3\x954\x3\x2\x2\x2\x1F5\x95A\x3\x2\x2\x2\x1F7\x960\x3\x2"+ - "\x2\x2\x1F9\x964\x3\x2\x2\x2\x1FB\x969\x3\x2\x2\x2\x1FD\x96E\x3\x2\x2"+ - "\x2\x1FF\x975\x3\x2\x2\x2\x201\x97F\x3\x2\x2\x2\x203\x987\x3\x2\x2\x2"+ - "\x205\x990\x3\x2\x2\x2\x207\x999\x3\x2\x2\x2\x209\x99D\x3\x2\x2\x2\x20B"+ - "\x9A1\x3\x2\x2\x2\x20D\x9A5\x3\x2\x2\x2\x20F\x9A9\x3\x2\x2\x2\x211\x9AD"+ - "\x3\x2\x2\x2\x213\x9B1\x3\x2\x2\x2\x215\x9B5\x3\x2\x2\x2\x217\x9B9\x3"+ - "\x2\x2\x2\x219\x9BD\x3\x2\x2\x2\x21B\x9C1\x3\x2\x2\x2\x21D\x9C8\x3\x2"+ - "\x2\x2\x21F\x9CA\x3\x2\x2\x2\x221\x9CC\x3\x2\x2\x2\x223\x9CE\x3\x2\x2"+ - "\x2\x225\x9D0\x3\x2\x2\x2\x227\x9F0\x3\x2\x2\x2\x229\x9FA\x3\x2\x2\x2"+ - "\x22B\xA09\x3\x2\x2\x2\x22D\xA0B\x3\x2\x2\x2\x22F\xA0D\x3\x2\x2\x2\x231"+ - "\xA0F\x3\x2\x2\x2\x233\xA11\x3\x2\x2\x2\x235\xA13\x3\x2\x2\x2\x237\xA15"+ - "\x3\x2\x2\x2\x239\xA17\x3\x2\x2\x2\x23B\xA19\x3\x2\x2\x2\x23D\xA1B\x3"+ - "\x2\x2\x2\x23F\xA1D\x3\x2\x2\x2\x241\xA1F\x3\x2\x2\x2\x243\xA21\x3\x2"+ - "\x2\x2\x245\xA23\x3\x2\x2\x2\x247\xA25\x3\x2\x2\x2\x249\xA27\x3\x2\x2"+ - "\x2\x24B\xA29\x3\x2\x2\x2\x24D\xA2B\x3\x2\x2\x2\x24F\xA2D\x3\x2\x2\x2"+ - "\x251\xA2F\x3\x2\x2\x2\x253\xA31\x3\x2\x2\x2\x255\xA33\x3\x2\x2\x2\x257"+ - "\xA35\x3\x2\x2\x2\x259\xA37\x3\x2\x2\x2\x25B\xA39\x3\x2\x2\x2\x25D\xA3B"+ - "\x3\x2\x2\x2\x25F\xA3D\x3\x2\x2\x2\x261\xA3F\x3\x2\x2\x2\x263\xA41\x3"+ - "\x2\x2\x2\x265\xA43\x3\x2\x2\x2\x267\x268\x5\x231\x119\x2\x268\x269\x5"+ - "\x233\x11A\x2\x269\x26A\x5\x255\x12B\x2\x26A\x4\x3\x2\x2\x2\x26B\x26C"+ - "\x5\x231\x119\x2\x26C\x26D\x5\x24B\x126\x2\x26D\x26E\x5\x261\x131\x2\x26E"+ - "\x6\x3\x2\x2\x2\x26F\x270\x5\x231\x119\x2\x270\x271\x5\x253\x12A\x2\x271"+ - "\x272\x5\x253\x12A\x2\x272\x273\x5\x231\x119\x2\x273\x274\x5\x261\x131"+ - "\x2\x274\b\x3\x2\x2\x2\x275\x276\x5\x233\x11A\x2\x276\n\x3\x2\x2\x2\x277"+ - "\x278\x5\x233\x11A\x2\x278\x279\x5\x23B\x11E\x2\x279\f\x3\x2\x2\x2\x27A"+ - "\x27B\x5\x235\x11B\x2\x27B\x27C\x5\x233\x11A\x2\x27C\x27D\x5\x24D\x127"+ - "\x2\x27D\x27E\x5\x24D\x127\x2\x27E\x27F\x5\x247\x124\x2\x27F\xE\x3\x2"+ - "\x2\x2\x280\x281\x5\x235\x11B\x2\x281\x282\x5\x233\x11A\x2\x282\x283\x5"+ - "\x261\x131\x2\x283\x284\x5\x257\x12C\x2\x284\x285\x5\x239\x11D\x2\x285"+ - "\x10\x3\x2\x2\x2\x286\x287\x5\x235\x11B\x2\x287\x288\x5\x235\x11B\x2\x288"+ - "\x289\x5\x259\x12D\x2\x289\x28A\x5\x253\x12A\x2\x28A\x12\x3\x2\x2\x2\x28B"+ - "\x28C\x5\x235\x11B\x2\x28C\x28D\x5\x237\x11C\x2\x28D\x28E\x5\x231\x119"+ - "\x2\x28E\x28F\x5\x257\x12C\x2\x28F\x290\x5\x239\x11D\x2\x290\x14\x3\x2"+ - "\x2\x2\x291\x292\x5\x235\x11B\x2\x292\x293\x5\x237\x11C\x2\x293\x294\x5"+ - "\x233\x11A\x2\x294\x295\x5\x247\x124\x2\x295\x16\x3\x2\x2\x2\x296\x297"+ - "\x5\x235\x11B\x2\x297\x298\x5\x237\x11C\x2\x298\x299\x5\x239\x11D\x2\x299"+ - "\x29A\x5\x235\x11B\x2\x29A\x18\x3\x2\x2\x2\x29B\x29C\x5\x235\x11B\x2\x29C"+ - "\x29D\x5\x241\x121\x2\x29D\x29E\x5\x24B\x126\x2\x29E\x29F\x5\x257\x12C"+ - "\x2\x29F\x1A\x3\x2\x2\x2\x2A0\x2A1\x5\x235\x11B\x2\x2A1\x2A2\x5\x241\x121"+ - "\x2\x2A2\x2A3\x5\x253\x12A\x2\x2A3\x2A4\x5\x235\x11B\x2\x2A4\x2A5\x5\x247"+ - "\x124\x2\x2A5\x2A6\x5\x239\x11D\x2\x2A6\x1C\x3\x2\x2\x2\x2A7\x2A8\x5\x235"+ - "\x11B\x2\x2A8\x2A9\x5\x247\x124\x2\x2A9\x2AA\x5\x24B\x126\x2\x2AA\x2AB"+ - "\x5\x23D\x11F\x2\x2AB\x1E\x3\x2\x2\x2\x2AC\x2AD\x5\x235\x11B\x2\x2AD\x2AE"+ - "\x5\x247\x124\x2\x2AE\x2AF\x5\x24B\x126\x2\x2AF\x2B0\x5\x23D\x11F\x2\x2B0"+ - "\x2B1\x5\x247\x124\x2\x2B1\x2B2\x5\x24B\x126\x2\x2B2\x2B3\x5\x23D\x11F"+ - "\x2\x2B3 \x3\x2\x2\x2\x2B4\x2B5\x5\x235\x11B\x2\x2B5\x2B6\x5\x247\x124"+ - "\x2\x2B6\x2B7\x5\x24B\x126\x2\x2B7\x2B8\x5\x23D\x11F\x2\x2B8\x2B9\x5\x24F"+ - "\x128\x2\x2B9\x2BA\x5\x257\x12C\x2\x2BA\x2BB\x5\x253\x12A\x2\x2BB\"\x3"+ - "\x2\x2\x2\x2BC\x2BD\x5\x235\x11B\x2\x2BD\x2BE\x5\x255\x12B\x2\x2BE\x2BF"+ - "\x5\x24B\x126\x2\x2BF\x2C0\x5\x23D\x11F\x2\x2C0$\x3\x2\x2\x2\x2C1\x2C2"+ - "\x5\x235\x11B\x2\x2C2\x2C3\x5\x255\x12B\x2\x2C3\x2C4\x5\x257\x12C\x2\x2C4"+ - "\x2C5\x5\x253\x12A\x2\x2C5&\x3\x2\x2\x2\x2C6\x2C7\x5\x235\x11B\x2\x2C7"+ - "\x2C8\x5\x259\x12D\x2\x2C8\x2C9\x5\x253\x12A\x2\x2C9\x2CA\x5\x253\x12A"+ - "\x2\x2CA\x2CB\x5\x239\x11D\x2\x2CB\x2CC\x5\x24B\x126\x2\x2CC\x2CD\x5\x235"+ - "\x11B\x2\x2CD\x2CE\x5\x261\x131\x2\x2CE(\x3\x2\x2\x2\x2CF\x2D0\x5\x235"+ - "\x11B\x2\x2D0\x2D1\x5\x25B\x12E\x2\x2D1\x2D2\x5\x231\x119\x2\x2D2\x2D3"+ - "\x5\x253\x12A\x2\x2D3*\x3\x2\x2\x2\x2D4\x2D5\x5\x235\x11B\x2\x2D5\x2D6"+ - "\x5\x25B\x12E\x2\x2D6\x2D7\x5\x239\x11D\x2\x2D7\x2D8\x5\x253\x12A\x2\x2D8"+ - "\x2D9\x5\x253\x12A\x2\x2D9,\x3\x2\x2\x2\x2DA\x2DB\x5\x237\x11C\x2\x2DB"+ - "\x2DC\x5\x239\x11D\x2\x2DC\x2DD\x5\x233\x11A\x2\x2DD\x2DE\x5\x259\x12D"+ - "\x2\x2DE\x2DF\x5\x23D\x11F\x2\x2DF.\x3\x2\x2\x2\x2E0\x2E1\x5\x237\x11C"+ - "\x2\x2E1\x2E2\x5\x24D\x127\x2\x2E2\x2E3\x5\x239\x11D\x2\x2E3\x2E4\x5\x25B"+ - "\x12E\x2\x2E4\x2E5\x5\x239\x11D\x2\x2E5\x2E6\x5\x24B\x126\x2\x2E6\x2E7"+ - "\x5\x257\x12C\x2\x2E7\x2E8\x5\x255\x12B\x2\x2E8\x30\x3\x2\x2\x2\x2E9\x2EA"+ - "\x5\x239\x11D\x2\x2EA\x2EB\x5\x25F\x130\x2\x2EB\x2EC\x5\x241\x121\x2\x2EC"+ - "\x2ED\x5\x257\x12C\x2\x2ED\x32\x3\x2\x2\x2\x2EE\x2EF\x5\x23B\x11E\x2\x2EF"+ - "\x2F0\x5\x241\x121\x2\x2F0\x2F1\x5\x25F\x130\x2\x2F1\x34\x3\x2\x2\x2\x2F2"+ - "\x2F3\x5\x241\x121\x2\x2F3\x2F4\x5\x24B\x126\x2\x2F4\x2F5\x5\x24F\x128"+ - "\x2\x2F5\x2F6\x5\x259\x12D\x2\x2F6\x2F7\x5\x257\x12C\x2\x2F7\x2F8\x5\x233"+ - "\x11A\x2\x2F8\x36\x3\x2\x2\x2\x2F9\x2FA\x5\x241\x121\x2\x2FA\x2FB\x5\x24B"+ - "\x126\x2\x2FB\x2FC\x5\x257\x12C\x2\x2FC\x38\x3\x2\x2\x2\x2FD\x2FE\x5\x247"+ - "\x124\x2\x2FE\x2FF\x5\x233\x11A\x2\x2FF\x300\x5\x24D\x127\x2\x300\x301"+ - "\x5\x259\x12D\x2\x301\x302\x5\x24B\x126\x2\x302\x303\x5\x237\x11C\x2\x303"+ - ":\x3\x2\x2\x2\x304\x305\x5\x247\x124\x2\x305\x306\x5\x239\x11D\x2\x306"+ - "\x307\x5\x24B\x126\x2\x307<\x3\x2\x2\x2\x308\x309\x5\x247\x124\x2\x309"+ - "\x30A\x5\x239\x11D\x2\x30A\x30B\x5\x24B\x126\x2\x30B\x30C\x5\x233\x11A"+ - "\x2\x30C>\x3\x2\x2\x2\x30D\x30E\x5\x247\x124\x2\x30E\x30F\x5\x24D\x127"+ - "\x2\x30F\x310\x5\x24B\x126\x2\x310\x311\x5\x23D\x11F\x2\x311\x312\x5\x247"+ - "\x124\x2\x312\x313\x5\x24D\x127\x2\x313\x314\x5\x24B\x126\x2\x314\x315"+ - "\x5\x23D\x11F\x2\x315@\x3\x2\x2\x2\x316\x317\x5\x247\x124\x2\x317\x318"+ - "\x5\x24D\x127\x2\x318\x319\x5\x24B\x126\x2\x319\x31A\x5\x23D\x11F\x2\x31A"+ - "\x31B\x5\x24F\x128\x2\x31B\x31C\x5\x257\x12C\x2\x31C\x31D\x5\x253\x12A"+ - "\x2\x31D\x42\x3\x2\x2\x2\x31E\x31F\x5\x249\x125\x2\x31F\x320\x5\x241\x121"+ - "\x2\x320\x321\x5\x237\x11C\x2\x321\x322\x5\x233\x11A\x2\x322\x44\x3\x2"+ - "\x2\x2\x323\x324\x5\x249\x125\x2\x324\x325\x5\x241\x121\x2\x325\x326\x5"+ - "\x237\x11C\x2\x326\x327\x5\x233\x11A\x2\x327\x328\a&\x2\x2\x328\x46\x3"+ - "\x2\x2\x2\x329\x32A\x5\x249\x125\x2\x32A\x32B\x5\x241\x121\x2\x32B\x32C"+ - "\x5\x237\x11C\x2\x32C\x32D\a&\x2\x2\x32DH\x3\x2\x2\x2\x32E\x32F\x5\x24D"+ - "\x127\x2\x32F\x330\x5\x24F\x128\x2\x330\x331\x5\x257\x12C\x2\x331\x332"+ - "\x5\x241\x121\x2\x332\x333\x5\x24D\x127\x2\x333\x334\x5\x24B\x126\x2\x334"+ - "J\x3\x2\x2\x2\x335\x336\x5\x24F\x128\x2\x336\x337\x5\x255\x12B\x2\x337"+ - "\x338\x5\x239\x11D\x2\x338\x339\x5\x257\x12C\x2\x339L\x3\x2\x2\x2\x33A"+ - "\x33B\x5\x255\x12B\x2\x33B\x33C\x5\x235\x11B\x2\x33C\x33D\x5\x231\x119"+ - "\x2\x33D\x33E\x5\x247\x124\x2\x33E\x33F\x5\x239\x11D\x2\x33FN\x3\x2\x2"+ - "\x2\x340\x341\x5\x255\x12B\x2\x341\x342\x5\x23D\x11F\x2\x342\x343\x5\x24B"+ - "\x126\x2\x343P\x3\x2\x2\x2\x344\x345\x5\x259\x12D\x2\x345\x346\x5\x233"+ - "\x11A\x2\x346\x347\x5\x24D\x127\x2\x347\x348\x5\x259\x12D\x2\x348\x349"+ - "\x5\x24B\x126\x2\x349\x34A\x5\x237\x11C\x2\x34AR\x3\x2\x2\x2\x34B\x34C"+ - "\a.\x2\x2\x34CT\x3\x2\x2\x2\x34D\x34E\a<\x2\x2\x34EV\x3\x2\x2\x2\x34F"+ - "\x350\a=\x2\x2\x350X\x3\x2\x2\x2\x351\x352\a#\x2\x2\x352Z\x3\x2\x2\x2"+ - "\x353\x354\a\x30\x2\x2\x354\\\x3\x2\x2\x2\x355\x356\a%\x2\x2\x356^\x3"+ - "\x2\x2\x2\x357\x358\a\x42\x2\x2\x358`\x3\x2\x2\x2\x359\x35A\a\'\x2\x2"+ - "\x35A\x62\x3\x2\x2\x2\x35B\x35C\a&\x2\x2\x35C\x64\x3\x2\x2\x2\x35D\x35E"+ - "\a(\x2\x2\x35E\x66\x3\x2\x2\x2\x35F\x360\x5\x231\x119\x2\x360\x361\x5"+ - "\x235\x11B\x2\x361\x362\x5\x235\x11B\x2\x362\x363\x5\x239\x11D\x2\x363"+ - "\x364\x5\x255\x12B\x2\x364\x365\x5\x255\x12B\x2\x365h\x3\x2\x2\x2\x366"+ - "\x367\x5\x231\x119\x2\x367\x368\x5\x237\x11C\x2\x368\x369\x5\x237\x11C"+ - "\x2\x369\x36A\x5\x253\x12A\x2\x36A\x36B\x5\x239\x11D\x2\x36B\x36C\x5\x255"+ - "\x12B\x2\x36C\x36D\x5\x255\x12B\x2\x36D\x36E\x5\x24D\x127\x2\x36E\x36F"+ - "\x5\x23B\x11E\x2\x36Fj\x3\x2\x2\x2\x370\x371\x5\x231\x119\x2\x371\x372"+ - "\x5\x247\x124\x2\x372\x373\x5\x241\x121\x2\x373\x374\x5\x231\x119\x2\x374"+ - "\x375\x5\x255\x12B\x2\x375l\x3\x2\x2\x2\x376\x377\x5\x231\x119\x2\x377"+ - "\x378\x5\x24B\x126\x2\x378\x379\x5\x237\x11C\x2\x379n\x3\x2\x2\x2\x37A"+ - "\x37B\x5\x231\x119\x2\x37B\x37C\x5\x257\x12C\x2\x37C\x37D\x5\x257\x12C"+ - "\x2\x37D\x37E\x5\x253\x12A\x2\x37E\x37F\x5\x241\x121\x2\x37F\x380\x5\x233"+ - "\x11A\x2\x380\x381\x5\x259\x12D\x2\x381\x382\x5\x257\x12C\x2\x382\x383"+ - "\x5\x239\x11D\x2\x383p\x3\x2\x2\x2\x384\x385\x5\x231\x119\x2\x385\x386"+ - "\x5\x24F\x128\x2\x386\x387\x5\x24F\x128\x2\x387\x388\x5\x239\x11D\x2\x388"+ - "\x389\x5\x24B\x126\x2\x389\x38A\x5\x237\x11C\x2\x38Ar\x3\x2\x2\x2\x38B"+ - "\x38C\x5\x231\x119\x2\x38C\x38D\x5\x255\x12B\x2\x38Dt\x3\x2\x2\x2\x38E"+ - "\x38F\x5\x233\x11A\x2\x38F\x390\x5\x239\x11D\x2\x390\x391\x5\x23D\x11F"+ - "\x2\x391\x392\x5\x241\x121\x2\x392\x393\x5\x24B\x126\x2\x393v\x3\x2\x2"+ - "\x2\x394\x395\x5\x233\x11A\x2\x395\x396\x5\x241\x121\x2\x396\x397\x5\x24B"+ - "\x126\x2\x397\x398\x5\x231\x119\x2\x398\x399\x5\x253\x12A\x2\x399\x39A"+ - "\x5\x261\x131\x2\x39Ax\x3\x2\x2\x2\x39B\x39C\x5\x233\x11A\x2\x39C\x39D"+ - "\x5\x24D\x127\x2\x39D\x39E\x5\x24D\x127\x2\x39E\x39F\x5\x247\x124\x2\x39F"+ - "\x3A0\x5\x239\x11D\x2\x3A0\x3A1\x5\x231\x119\x2\x3A1\x3A2\x5\x24B\x126"+ - "\x2\x3A2z\x3\x2\x2\x2\x3A3\x3A4\x5\x233\x11A\x2\x3A4\x3A5\x5\x261\x131"+ - "\x2\x3A5\x3A6\x5\x25B\x12E\x2\x3A6\x3A7\x5\x231\x119\x2\x3A7\x3A8\x5\x247"+ - "\x124\x2\x3A8|\x3\x2\x2\x2\x3A9\x3AA\x5\x233\x11A\x2\x3AA\x3AB\x5\x261"+ - "\x131\x2\x3AB\x3AC\x5\x253\x12A\x2\x3AC\x3AD\x5\x239\x11D\x2\x3AD\x3AE"+ - "\x5\x23B\x11E\x2\x3AE~\x3\x2\x2\x2\x3AF\x3B0\x5\x233\x11A\x2\x3B0\x3B1"+ - "\x5\x261\x131\x2\x3B1\x3B2\x5\x257\x12C\x2\x3B2\x3B3\x5\x239\x11D\x2\x3B3"+ - "\x80\x3\x2\x2\x2\x3B4\x3B5\x5\x235\x11B\x2\x3B5\x3B6\x5\x231\x119\x2\x3B6"+ - "\x3B7\x5\x247\x124\x2\x3B7\x3B8\x5\x247\x124\x2\x3B8\x82\x3\x2\x2\x2\x3B9"+ - "\x3BA\x5\x235\x11B\x2\x3BA\x3BB\x5\x231\x119\x2\x3BB\x3BC\x5\x255\x12B"+ - "\x2\x3BC\x3BD\x5\x239\x11D\x2\x3BD\x84\x3\x2\x2\x2\x3BE\x3BF\x5\x235\x11B"+ - "\x2\x3BF\x3C0\x5\x247\x124\x2\x3C0\x3C1\x5\x231\x119\x2\x3C1\x3C2\x5\x255"+ - "\x12B\x2\x3C2\x3C3\x5\x255\x12B\x2\x3C3\x86\x3\x2\x2\x2\x3C4\x3C5\x5\x235"+ - "\x11B\x2\x3C5\x3C6\x5\x247\x124\x2\x3C6\x3C7\x5\x24D\x127\x2\x3C7\x3C8"+ - "\x5\x255\x12B\x2\x3C8\x3C9\x5\x239\x11D\x2\x3C9\x88\x3\x2\x2\x2\x3CA\x3CB"+ - "\x5\x235\x11B\x2\x3CB\x3CC\x5\x24D\x127\x2\x3CC\x3CD\x5\x24B\x126\x2\x3CD"+ - "\x3CE\x5\x255\x12B\x2\x3CE\x3CF\x5\x257\x12C\x2\x3CF\x8A\x3\x2\x2\x2\x3D0"+ - "\x3D1\x5\x237\x11C\x2\x3D1\x3D2\x5\x231\x119\x2\x3D2\x3D3\x5\x257\x12C"+ - "\x2\x3D3\x3D4\x5\x231\x119\x2\x3D4\x3D5\x5\x233\x11A\x2\x3D5\x3D6\x5\x231"+ - "\x119\x2\x3D6\x3D7\x5\x255\x12B\x2\x3D7\x3D8\x5\x239\x11D\x2\x3D8\x8C"+ - "\x3\x2\x2\x2\x3D9\x3DA\x5\x237\x11C\x2\x3DA\x3DB\x5\x231\x119\x2\x3DB"+ - "\x3DC\x5\x257\x12C\x2\x3DC\x3DD\x5\x239\x11D\x2\x3DD\x8E\x3\x2\x2\x2\x3DE"+ - "\x3DF\x5\x237\x11C\x2\x3DF\x3E0\x5\x239\x11D\x2\x3E0\x3E1\x5\x235\x11B"+ - "\x2\x3E1\x3E2\x5\x247\x124\x2\x3E2\x3E3\x5\x231\x119\x2\x3E3\x3E4\x5\x253"+ - "\x12A\x2\x3E4\x3E5\x5\x239\x11D\x2\x3E5\x90\x3\x2\x2\x2\x3E6\x3E7\x5\x237"+ - "\x11C\x2\x3E7\x3E8\x5\x239\x11D\x2\x3E8\x3E9\x5\x23B\x11E\x2\x3E9\x3EA"+ - "\x5\x233\x11A\x2\x3EA\x3EB\x5\x24D\x127\x2\x3EB\x3EC\x5\x24D\x127\x2\x3EC"+ - "\x3ED\x5\x247\x124\x2\x3ED\x92\x3\x2\x2\x2\x3EE\x3EF\x5\x237\x11C\x2\x3EF"+ - "\x3F0\x5\x239\x11D\x2\x3F0\x3F1\x5\x23B\x11E\x2\x3F1\x3F2\x5\x233\x11A"+ - "\x2\x3F2\x3F3\x5\x261\x131\x2\x3F3\x3F4\x5\x257\x12C\x2\x3F4\x3F5\x5\x239"+ - "\x11D\x2\x3F5\x94\x3\x2\x2\x2\x3F6\x3F7\x5\x237\x11C\x2\x3F7\x3F8\x5\x239"+ - "\x11D\x2\x3F8\x3F9\x5\x23B\x11E\x2\x3F9\x3FA\x5\x237\x11C\x2\x3FA\x3FB"+ - "\x5\x231\x119\x2\x3FB\x3FC\x5\x257\x12C\x2\x3FC\x3FD\x5\x239\x11D\x2\x3FD"+ - "\x96\x3\x2\x2\x2\x3FE\x3FF\x5\x237\x11C\x2\x3FF\x400\x5\x239\x11D\x2\x400"+ - "\x401\x5\x23B\x11E\x2\x401\x402\x5\x237\x11C\x2\x402\x403\x5\x233\x11A"+ - "\x2\x403\x404\x5\x247\x124\x2\x404\x98\x3\x2\x2\x2\x405\x406\x5\x237\x11C"+ - "\x2\x406\x407\x5\x239\x11D\x2\x407\x408\x5\x23B\x11E\x2\x408\x409\x5\x235"+ - "\x11B\x2\x409\x40A\x5\x259\x12D\x2\x40A\x40B\x5\x253\x12A\x2\x40B\x9A"+ - "\x3\x2\x2\x2\x40C\x40D\x5\x237\x11C\x2\x40D\x40E\x5\x239\x11D\x2\x40E"+ - "\x40F\x5\x23B\x11E\x2\x40F\x410\x5\x241\x121\x2\x410\x411\x5\x24B\x126"+ - "\x2\x411\x412\x5\x257\x12C\x2\x412\x9C\x3\x2\x2\x2\x413\x414\x5\x237\x11C"+ - "\x2\x414\x415\x5\x239\x11D\x2\x415\x416\x5\x23B\x11E\x2\x416\x417\x5\x247"+ - "\x124\x2\x417\x418\x5\x24B\x126\x2\x418\x419\x5\x23D\x11F\x2\x419\x9E"+ - "\x3\x2\x2\x2\x41A\x41B\x5\x237\x11C\x2\x41B\x41C\x5\x239\x11D\x2\x41C"+ - "\x41D\x5\x23B\x11E\x2\x41D\x41E\x5\x247\x124\x2\x41E\x41F\x5\x24B\x126"+ - "\x2\x41F\x420\x5\x23D\x11F\x2\x420\x421\x5\x247\x124\x2\x421\x422\x5\x24B"+ - "\x126\x2\x422\x423\x5\x23D\x11F\x2\x423\xA0\x3\x2\x2\x2\x424\x425\x5\x237"+ - "\x11C\x2\x425\x426\x5\x239\x11D\x2\x426\x427\x5\x23B\x11E\x2\x427\x428"+ - "\x5\x247\x124\x2\x428\x429\x5\x24B\x126\x2\x429\x42A\x5\x23D\x11F\x2\x42A"+ - "\x42B\x5\x24F\x128\x2\x42B\x42C\x5\x257\x12C\x2\x42C\x42D\x5\x253\x12A"+ - "\x2\x42D\xA2\x3\x2\x2\x2\x42E\x42F\x5\x237\x11C\x2\x42F\x430\x5\x239\x11D"+ - "\x2\x430\x431\x5\x23B\x11E\x2\x431\x432\x5\x24D\x127\x2\x432\x433\x5\x233"+ - "\x11A\x2\x433\x434\x5\x243\x122\x2\x434\xA4\x3\x2\x2\x2\x435\x436\x5\x237"+ - "\x11C\x2\x436\x437\x5\x239\x11D\x2\x437\x438\x5\x23B\x11E\x2\x438\x439"+ - "\x5\x255\x12B\x2\x439\x43A\x5\x24B\x126\x2\x43A\x43B\x5\x23D\x11F\x2\x43B"+ - "\xA6\x3\x2\x2\x2\x43C\x43D\x5\x237\x11C\x2\x43D\x43E\x5\x239\x11D\x2\x43E"+ - "\x43F\x5\x23B\x11E\x2\x43F\x440\x5\x255\x12B\x2\x440\x441\x5\x257\x12C"+ - "\x2\x441\x442\x5\x253\x12A\x2\x442\xA8\x3\x2\x2\x2\x443\x444\x5\x237\x11C"+ - "\x2\x444\x445\x5\x239\x11D\x2\x445\x446\x5\x23B\x11E\x2\x446\x447\x5\x25B"+ - "\x12E\x2\x447\x448\x5\x231\x119\x2\x448\x449\x5\x253\x12A\x2\x449\xAA"+ - "\x3\x2\x2\x2\x44A\x44B\x5\x237\x11C\x2\x44B\x44C\x5\x241\x121\x2\x44C"+ - "\x44D\x5\x249\x125\x2\x44D\xAC\x3\x2\x2\x2\x44E\x44F\x5\x237\x11C\x2\x44F"+ - "\x450\x5\x24D\x127\x2\x450\xAE\x3\x2\x2\x2\x451\x452\x5\x237\x11C\x2\x452"+ - "\x453\x5\x24D\x127\x2\x453\x454\x5\x259\x12D\x2\x454\x455\x5\x233\x11A"+ - "\x2\x455\x456\x5\x247\x124\x2\x456\x457\x5\x239\x11D\x2\x457\xB0\x3\x2"+ - "\x2\x2\x458\x459\x5\x239\x11D\x2\x459\x45A\x5\x231\x119\x2\x45A\x45B\x5"+ - "\x235\x11B\x2\x45B\x45C\x5\x23F\x120\x2\x45C\xB2\x3\x2\x2\x2\x45D\x45E"+ - "\x5\x239\x11D\x2\x45E\x45F\x5\x247\x124\x2\x45F\x460\x5\x255\x12B\x2\x460"+ - "\x461\x5\x239\x11D\x2\x461\xB4\x3\x2\x2\x2\x462\x463\x5\x239\x11D\x2\x463"+ - "\x464\x5\x247\x124\x2\x464\x465\x5\x255\x12B\x2\x465\x466\x5\x239\x11D"+ - "\x2\x466\x467\x5\x241\x121\x2\x467\x468\x5\x23B\x11E\x2\x468\xB6\x3\x2"+ - "\x2\x2\x469\x46A\x5\x239\x11D\x2\x46A\x46B\x5\x249\x125\x2\x46B\x46C\x5"+ - "\x24F\x128\x2\x46C\x46D\x5\x257\x12C\x2\x46D\x46E\x5\x261\x131\x2\x46E"+ - "\xB8\x3\x2\x2\x2\x46F\x470\x5\x239\x11D\x2\x470\x471\x5\x24B\x126\x2\x471"+ - "\x473\x5\x237\x11C\x2\x472\x474\x5\x223\x112\x2\x473\x472\x3\x2\x2\x2"+ - "\x474\x475\x3\x2\x2\x2\x475\x473\x3\x2\x2\x2\x475\x476\x3\x2\x2\x2\x476"+ - "\x477\x3\x2\x2\x2\x477\x478\x5\x239\x11D\x2\x478\x479\x5\x24B\x126\x2"+ - "\x479\x47A\x5\x259\x12D\x2\x47A\x47B\x5\x249\x125\x2\x47B\xBA\x3\x2\x2"+ - "\x2\x47C\x47D\x5\x239\x11D\x2\x47D\x47E\x5\x24B\x126\x2\x47E\x481\x5\x237"+ - "\x11C\x2\x47F\x482\x5\x223\x112\x2\x480\x482\x5\x229\x115\x2\x481\x47F"+ - "\x3\x2\x2\x2\x481\x480\x3\x2\x2\x2\x482\x483\x3\x2\x2\x2\x483\x481\x3"+ - "\x2\x2\x2\x483\x484\x3\x2\x2\x2\x484\x485\x3\x2\x2\x2\x485\x486\x5\x23B"+ - "\x11E\x2\x486\x487\x5\x259\x12D\x2\x487\x488\x5\x24B\x126\x2\x488\x489"+ - "\x5\x235\x11B\x2\x489\x48A\x5\x257\x12C\x2\x48A\x48B\x5\x241\x121\x2\x48B"+ - "\x48C\x5\x24D\x127\x2\x48C\x48D\x5\x24B\x126\x2\x48D\xBC\x3\x2\x2\x2\x48E"+ - "\x48F\x5\x239\x11D\x2\x48F\x490\x5\x24B\x126\x2\x490\x495\x5\x237\x11C"+ - "\x2\x491\x494\x5\x223\x112\x2\x492\x494\x5\x229\x115\x2\x493\x491\x3\x2"+ - "\x2\x2\x493\x492\x3\x2\x2\x2\x494\x497\x3\x2\x2\x2\x495\x493\x3\x2\x2"+ - "\x2\x495\x496\x3\x2\x2\x2\x496\x498\x3\x2\x2\x2\x497\x495\x3\x2\x2\x2"+ - "\x498\x499\x5\x241\x121\x2\x499\x49A\x5\x23B\x11E\x2\x49A\xBE\x3\x2\x2"+ - "\x2\x49B\x49C\x5\x239\x11D\x2\x49C\x49D\x5\x24B\x126\x2\x49D\x4A0\x5\x237"+ - "\x11C\x2\x49E\x4A1\x5\x223\x112\x2\x49F\x4A1\x5\x229\x115\x2\x4A0\x49E"+ - "\x3\x2\x2\x2\x4A0\x49F\x3\x2\x2\x2\x4A1\x4A2\x3\x2\x2\x2\x4A2\x4A0\x3"+ - "\x2\x2\x2\x4A2\x4A3\x3\x2\x2\x2\x4A3\x4A4\x3\x2\x2\x2\x4A4\x4A5\x5\x24F"+ - "\x128\x2\x4A5\x4A6\x5\x253\x12A\x2\x4A6\x4A7\x5\x24D\x127\x2\x4A7\x4A8"+ - "\x5\x24F\x128\x2\x4A8\x4A9\x5\x239\x11D\x2\x4A9\x4AA\x5\x253\x12A\x2\x4AA"+ - "\x4AB\x5\x257\x12C\x2\x4AB\x4AC\x5\x261\x131\x2\x4AC\xC0\x3\x2\x2\x2\x4AD"+ - "\x4AE\x5\x239\x11D\x2\x4AE\x4AF\x5\x24B\x126\x2\x4AF\x4B2\x5\x237\x11C"+ - "\x2\x4B0\x4B3\x5\x223\x112\x2\x4B1\x4B3\x5\x229\x115\x2\x4B2\x4B0\x3\x2"+ - "\x2\x2\x4B2\x4B1\x3\x2\x2\x2\x4B3\x4B4\x3\x2\x2\x2\x4B4\x4B2\x3\x2\x2"+ - "\x2\x4B4\x4B5\x3\x2\x2\x2\x4B5\x4B6\x3\x2\x2\x2\x4B6\x4B7\x5\x255\x12B"+ - "\x2\x4B7\x4B8\x5\x239\x11D\x2\x4B8\x4B9\x5\x247\x124\x2\x4B9\x4BA\x5\x239"+ - "\x11D\x2\x4BA\x4BB\x5\x235\x11B\x2\x4BB\x4BC\x5\x257\x12C\x2\x4BC\xC2"+ - "\x3\x2\x2\x2\x4BD\x4BE\x5\x239\x11D\x2\x4BE\x4BF\x5\x24B\x126\x2\x4BF"+ - "\x4C2\x5\x237\x11C\x2\x4C0\x4C3\x5\x223\x112\x2\x4C1\x4C3\x5\x229\x115"+ - "\x2\x4C2\x4C0\x3\x2\x2\x2\x4C2\x4C1\x3\x2\x2\x2\x4C3\x4C4\x3\x2\x2\x2"+ - "\x4C4\x4C2\x3\x2\x2\x2\x4C4\x4C5\x3\x2\x2\x2\x4C5\x4C6\x3\x2\x2\x2\x4C6"+ - "\x4C7\x5\x255\x12B\x2\x4C7\x4C8\x5\x259\x12D\x2\x4C8\x4C9\x5\x233\x11A"+ - "\x2\x4C9\xC4\x3\x2\x2\x2\x4CA\x4CB\x5\x239\x11D\x2\x4CB\x4CC\x5\x24B\x126"+ - "\x2\x4CC\x4CE\x5\x237\x11C\x2\x4CD\x4CF\x5\x223\x112\x2\x4CE\x4CD\x3\x2"+ - "\x2\x2\x4CF\x4D0\x3\x2\x2\x2\x4D0\x4CE\x3\x2\x2\x2\x4D0\x4D1\x3\x2\x2"+ - "\x2\x4D1\x4D2\x3\x2\x2\x2\x4D2\x4D3\x5\x257\x12C\x2\x4D3\x4D4\x5\x261"+ - "\x131\x2\x4D4\x4D5\x5\x24F\x128\x2\x4D5\x4D6\x5\x239\x11D\x2\x4D6\xC6"+ - "\x3\x2\x2\x2\x4D7\x4D8\x5\x239\x11D\x2\x4D8\x4D9\x5\x24B\x126\x2\x4D9"+ - "\x4DC\x5\x237\x11C\x2\x4DA\x4DD\x5\x223\x112\x2\x4DB\x4DD\x5\x229\x115"+ - "\x2\x4DC\x4DA\x3\x2\x2\x2\x4DC\x4DB\x3\x2\x2\x2\x4DD\x4DE\x3\x2\x2\x2"+ - "\x4DE\x4DC\x3\x2\x2\x2\x4DE\x4DF\x3\x2\x2\x2\x4DF\x4E0\x3\x2\x2\x2\x4E0"+ - "\x4E1\x5\x25D\x12F\x2\x4E1\x4E2\x5\x241\x121\x2\x4E2\x4E3\x5\x257\x12C"+ - "\x2\x4E3\x4E4\x5\x23F\x120\x2\x4E4\xC8\x3\x2\x2\x2\x4E5\x4E6\x5\x239\x11D"+ - "\x2\x4E6\x4E7\x5\x24B\x126\x2\x4E7\x4E8\x5\x237\x11C\x2\x4E8\xCA\x3\x2"+ - "\x2\x2\x4E9\x4EA\x5\x239\x11D\x2\x4EA\x4EB\x5\x24B\x126\x2\x4EB\x4EC\x5"+ - "\x259\x12D\x2\x4EC\x4ED\x5\x249\x125\x2\x4ED\xCC\x3\x2\x2\x2\x4EE\x4EF"+ - "\x5\x239\x11D\x2\x4EF\x4F0\x5\x251\x129\x2\x4F0\x4F1\x5\x25B\x12E\x2\x4F1"+ - "\xCE\x3\x2\x2\x2\x4F2\x4F3\x5\x239\x11D\x2\x4F3\x4F4\x5\x253\x12A\x2\x4F4"+ - "\x4F5\x5\x231\x119\x2\x4F5\x4F6\x5\x255\x12B\x2\x4F6\x4F7\x5\x239\x11D"+ - "\x2\x4F7\xD0\x3\x2\x2\x2\x4F8\x4F9\x5\x239\x11D\x2\x4F9\x4FA\x5\x253\x12A"+ - "\x2\x4FA\x4FB\x5\x253\x12A\x2\x4FB\x4FC\x5\x24D\x127\x2\x4FC\x4FD\x5\x253"+ - "\x12A\x2\x4FD\xD2\x3\x2\x2\x2\x4FE\x4FF\x5\x239\x11D\x2\x4FF\x500\x5\x25B"+ - "\x12E\x2\x500\x501\x5\x239\x11D\x2\x501\x502\x5\x24B\x126\x2\x502\x503"+ - "\x5\x257\x12C\x2\x503\xD4\x3\x2\x2\x2\x504\x505\x5\x239\x11D\x2\x505\x506"+ - "\x5\x25F\x130\x2\x506\x507\x5\x241\x121\x2\x507\x50A\x5\x257\x12C\x2\x508"+ - "\x50B\x5\x223\x112\x2\x509\x50B\x5\x229\x115\x2\x50A\x508\x3\x2\x2\x2"+ - "\x50A\x509\x3\x2\x2\x2\x50B\x50C\x3\x2\x2\x2\x50C\x50A\x3\x2\x2\x2\x50C"+ - "\x50D\x3\x2\x2\x2\x50D\x50E\x3\x2\x2\x2\x50E\x50F\x5\x237\x11C\x2\x50F"+ - "\x510\x5\x24D\x127\x2\x510\xD6\x3\x2\x2\x2\x511\x512\x5\x239\x11D\x2\x512"+ - "\x513\x5\x25F\x130\x2\x513\x514\x5\x241\x121\x2\x514\x517\x5\x257\x12C"+ - "\x2\x515\x518\x5\x223\x112\x2\x516\x518\x5\x229\x115\x2\x517\x515\x3\x2"+ - "\x2\x2\x517\x516\x3\x2\x2\x2\x518\x519\x3\x2\x2\x2\x519\x517\x3\x2\x2"+ - "\x2\x519\x51A\x3\x2\x2\x2\x51A\x51B\x3\x2\x2\x2\x51B\x51C\x5\x23B\x11E"+ - "\x2\x51C\x51D\x5\x24D\x127\x2\x51D\x51E\x5\x253\x12A\x2\x51E\xD8\x3\x2"+ - "\x2\x2\x51F\x520\x5\x239\x11D\x2\x520\x521\x5\x25F\x130\x2\x521\x522\x5"+ - "\x241\x121\x2\x522\x525\x5\x257\x12C\x2\x523\x526\x5\x223\x112\x2\x524"+ - "\x526\x5\x229\x115\x2\x525\x523\x3\x2\x2\x2\x525\x524\x3\x2\x2\x2\x526"+ - "\x527\x3\x2\x2\x2\x527\x525\x3\x2\x2\x2\x527\x528\x3\x2\x2\x2\x528\x529"+ - "\x3\x2\x2\x2\x529\x52A\x5\x23B\x11E\x2\x52A\x52B\x5\x259\x12D\x2\x52B"+ - "\x52C\x5\x24B\x126\x2\x52C\x52D\x5\x235\x11B\x2\x52D\x52E\x5\x257\x12C"+ - "\x2\x52E\x52F\x5\x241\x121\x2\x52F\x530\x5\x24D\x127\x2\x530\x531\x5\x24B"+ - "\x126\x2\x531\xDA\x3\x2\x2\x2\x532\x533\x5\x239\x11D\x2\x533\x534\x5\x25F"+ - "\x130\x2\x534\x535\x5\x241\x121\x2\x535\x538\x5\x257\x12C\x2\x536\x539"+ - "\x5\x223\x112\x2\x537\x539\x5\x229\x115\x2\x538\x536\x3\x2\x2\x2\x538"+ - "\x537\x3\x2\x2\x2\x539\x53A\x3\x2\x2\x2\x53A\x538\x3\x2\x2\x2\x53A\x53B"+ - "\x3\x2\x2\x2\x53B\x53C\x3\x2\x2\x2\x53C\x53D\x5\x24F\x128\x2\x53D\x53E"+ - "\x5\x253\x12A\x2\x53E\x53F\x5\x24D\x127\x2\x53F\x540\x5\x24F\x128\x2\x540"+ - "\x541\x5\x239\x11D\x2\x541\x542\x5\x253\x12A\x2\x542\x543\x5\x257\x12C"+ - "\x2\x543\x544\x5\x261\x131\x2\x544\xDC\x3\x2\x2\x2\x545\x546\x5\x239\x11D"+ - "\x2\x546\x547\x5\x25F\x130\x2\x547\x548\x5\x241\x121\x2\x548\x54B\x5\x257"+ - "\x12C\x2\x549\x54C\x5\x223\x112\x2\x54A\x54C\x5\x229\x115\x2\x54B\x549"+ - "\x3\x2\x2\x2\x54B\x54A\x3\x2\x2\x2\x54C\x54D\x3\x2\x2\x2\x54D\x54B\x3"+ - "\x2\x2\x2\x54D\x54E\x3\x2\x2\x2\x54E\x54F\x3\x2\x2\x2\x54F\x550\x5\x255"+ - "\x12B\x2\x550\x551\x5\x259\x12D\x2\x551\x552\x5\x233\x11A\x2\x552\xDE"+ - "\x3\x2\x2\x2\x553\x554\x5\x23B\x11E\x2\x554\x555\x5\x231\x119\x2\x555"+ - "\x556\x5\x247\x124\x2\x556\x557\x5\x255\x12B\x2\x557\x558\x5\x239\x11D"+ - "\x2\x558\xE0\x3\x2\x2\x2\x559\x55A\x5\x23B\x11E\x2\x55A\x55B\x5\x253\x12A"+ - "\x2\x55B\x55C\x5\x241\x121\x2\x55C\x55D\x5\x239\x11D\x2\x55D\x55E\x5\x24B"+ - "\x126\x2\x55E\x55F\x5\x237\x11C\x2\x55F\xE2\x3\x2\x2\x2\x560\x561\x5\x23B"+ - "\x11E\x2\x561\x562\x5\x24D\x127\x2\x562\x563\x5\x253\x12A\x2\x563\xE4"+ - "\x3\x2\x2\x2\x564\x565\x5\x23B\x11E\x2\x565\x566\x5\x259\x12D\x2\x566"+ - "\x567\x5\x24B\x126\x2\x567\x568\x5\x235\x11B\x2\x568\x569\x5\x257\x12C"+ - "\x2\x569\x56A\x5\x241\x121\x2\x56A\x56B\x5\x24D\x127\x2\x56B\x56C\x5\x24B"+ - "\x126\x2\x56C\xE6\x3\x2\x2\x2\x56D\x56E\x5\x23D\x11F\x2\x56E\x56F\x5\x239"+ - "\x11D\x2\x56F\x570\x5\x257\x12C\x2\x570\xE8\x3\x2\x2\x2\x571\x572\x5\x23D"+ - "\x11F\x2\x572\x573\x5\x247\x124\x2\x573\x574\x5\x24D\x127\x2\x574\x575"+ - "\x5\x233\x11A\x2\x575\x576\x5\x231\x119\x2\x576\x577\x5\x247\x124\x2\x577"+ - "\xEA\x3\x2\x2\x2\x578\x579\x5\x23D\x11F\x2\x579\x57A\x5\x24D\x127\x2\x57A"+ - "\x57B\x5\x255\x12B\x2\x57B\x57C\x5\x259\x12D\x2\x57C\x57D\x5\x233\x11A"+ - "\x2\x57D\xEC\x3\x2\x2\x2\x57E\x57F\x5\x23D\x11F\x2\x57F\x580\x5\x24D\x127"+ - "\x2\x580\x581\x5\x257\x12C\x2\x581\x582\x5\x24D\x127\x2\x582\xEE\x3\x2"+ - "\x2\x2\x583\x584\x5\x241\x121\x2\x584\x585\x5\x23B\x11E\x2\x585\xF0\x3"+ - "\x2\x2\x2\x586\x587\x5\x241\x121\x2\x587\x588\x5\x249\x125\x2\x588\x589"+ - "\x5\x24F\x128\x2\x589\xF2\x3\x2\x2\x2\x58A\x58B\x5\x241\x121\x2\x58B\x58C"+ - "\x5\x249\x125\x2\x58C\x58D\x5\x24F\x128\x2\x58D\x58E\x5\x247\x124\x2\x58E"+ - "\x58F\x5\x239\x11D\x2\x58F\x590\x5\x249\x125\x2\x590\x591\x5\x239\x11D"+ - "\x2\x591\x592\x5\x24B\x126\x2\x592\x593\x5\x257\x12C\x2\x593\x594\x5\x255"+ - "\x12B\x2\x594\xF4\x3\x2\x2\x2\x595\x596\x5\x241\x121\x2\x596\x597\x5\x24B"+ - "\x126\x2\x597\xF6\x3\x2\x2\x2\x598\x599\x5\x241\x121\x2\x599\x59A\x5\x24B"+ - "\x126\x2\x59A\x59B\x5\x24F\x128\x2\x59B\x59C\x5\x259\x12D\x2\x59C\x59D"+ - "\x5\x257\x12C\x2\x59D\xF8\x3\x2\x2\x2\x59E\x59F\x5\x241\x121\x2\x59F\x5A0"+ - "\x5\x255\x12B\x2\x5A0\xFA\x3\x2\x2\x2\x5A1\x5A2\x5\x241\x121\x2\x5A2\x5A3"+ - "\x5\x24B\x126\x2\x5A3\x5A4\x5\x257\x12C\x2\x5A4\x5A5\x5\x239\x11D\x2\x5A5"+ - "\x5A6\x5\x23D\x11F\x2\x5A6\x5A7\x5\x239\x11D\x2\x5A7\x5A8\x5\x253\x12A"+ - "\x2\x5A8\xFC\x3\x2\x2\x2\x5A9\x5AA\x5\x247\x124\x2\x5AA\x5AB\x5\x24D\x127"+ - "\x2\x5AB\x5AC\x5\x235\x11B\x2\x5AC\x5AD\x5\x245\x123\x2\x5AD\xFE\x3\x2"+ - "\x2\x2\x5AE\x5AF\x5\x247\x124\x2\x5AF\x5B0\x5\x24D\x127\x2\x5B0\x5B1\x5"+ - "\x24B\x126\x2\x5B1\x5B2\x5\x23D\x11F\x2\x5B2\x100\x3\x2\x2\x2\x5B3\x5B4"+ - "\x5\x247\x124\x2\x5B4\x5B5\x5\x24D\x127\x2\x5B5\x5B6\x5\x24D\x127\x2\x5B6"+ - "\x5B7\x5\x24F\x128\x2\x5B7\x102\x3\x2\x2\x2\x5B8\x5B9\x5\x247\x124\x2"+ - "\x5B9\x5BA\x5\x239\x11D\x2\x5BA\x5BB\x5\x257\x12C\x2\x5BB\x104\x3\x2\x2"+ - "\x2\x5BC\x5BD\x5\x247\x124\x2\x5BD\x5BE\x5\x241\x121\x2\x5BE\x5BF\x5\x233"+ - "\x11A\x2\x5BF\x106\x3\x2\x2\x2\x5C0\x5C1\x5\x247\x124\x2\x5C1\x5C2\x5"+ - "\x241\x121\x2\x5C2\x5C3\x5\x245\x123\x2\x5C3\x5C4\x5\x239\x11D\x2\x5C4"+ - "\x108\x3\x2\x2\x2\x5C5\x5C6\x5\x247\x124\x2\x5C6\x5C7\x5\x241\x121\x2"+ - "\x5C7\x5C8\x5\x24B\x126\x2\x5C8\x5CB\x5\x239\x11D\x2\x5C9\x5CC\x5\x223"+ - "\x112\x2\x5CA\x5CC\x5\x229\x115\x2\x5CB\x5C9\x3\x2\x2\x2\x5CB\x5CA\x3"+ - "\x2\x2\x2\x5CC\x5CD\x3\x2\x2\x2\x5CD\x5CB\x3\x2\x2\x2\x5CD\x5CE\x3\x2"+ - "\x2\x2\x5CE\x5CF\x3\x2\x2\x2\x5CF\x5D0\x5\x241\x121\x2\x5D0\x5D1\x5\x24B"+ - "\x126\x2\x5D1\x5D2\x5\x24F\x128\x2\x5D2\x5D3\x5\x259\x12D\x2\x5D3\x5D4"+ - "\x5\x257\x12C\x2\x5D4\x10A\x3\x2\x2\x2\x5D5\x5D6\x5\x247\x124\x2\x5D6"+ - "\x5D7\x5\x24D\x127\x2\x5D7\x5D8\x5\x235\x11B\x2\x5D8\x5DB\x5\x245\x123"+ - "\x2\x5D9\x5DC\x5\x223\x112\x2\x5DA\x5DC\x5\x229\x115\x2\x5DB\x5D9\x3\x2"+ - "\x2\x2\x5DB\x5DA\x3\x2\x2\x2\x5DC\x5DD\x3\x2\x2\x2\x5DD\x5DB\x3\x2\x2"+ - "\x2\x5DD\x5DE\x3\x2\x2\x2\x5DE\x5DF\x3\x2\x2\x2\x5DF\x5E0\x5\x253\x12A"+ - "\x2\x5E0\x5E1\x5\x239\x11D\x2\x5E1\x5E2\x5\x231\x119\x2\x5E2\x5E3\x5\x237"+ - "\x11C\x2\x5E3\x10C\x3\x2\x2\x2\x5E4\x5E5\x5\x247\x124\x2\x5E5\x5E6\x5"+ - "\x24D\x127\x2\x5E6\x5E7\x5\x235\x11B\x2\x5E7\x5EA\x5\x245\x123\x2\x5E8"+ - "\x5EB\x5\x223\x112\x2\x5E9\x5EB\x5\x229\x115\x2\x5EA\x5E8\x3\x2\x2\x2"+ - "\x5EA\x5E9\x3\x2\x2\x2\x5EB\x5EC\x3\x2\x2\x2\x5EC\x5EA\x3\x2\x2\x2\x5EC"+ - "\x5ED\x3\x2\x2\x2\x5ED\x5EE\x3\x2\x2\x2\x5EE\x5EF\x5\x25D\x12F\x2\x5EF"+ - "\x5F0\x5\x253\x12A\x2\x5F0\x5F1\x5\x241\x121\x2\x5F1\x5F2\x5\x257\x12C"+ - "\x2\x5F2\x5F3\x5\x239\x11D\x2\x5F3\x10E\x3\x2\x2\x2\x5F4\x5F5\x5\x247"+ - "\x124\x2\x5F5\x5F6\x5\x24D\x127\x2\x5F6\x5F7\x5\x235\x11B\x2\x5F7\x5FA"+ - "\x5\x245\x123\x2\x5F8\x5FB\x5\x223\x112\x2\x5F9\x5FB\x5\x229\x115\x2\x5FA"+ - "\x5F8\x3\x2\x2\x2\x5FA\x5F9\x3\x2\x2\x2\x5FB\x5FC\x3\x2\x2\x2\x5FC\x5FA"+ - "\x3\x2\x2\x2\x5FC\x5FD\x3\x2\x2\x2\x5FD\x5FE\x3\x2\x2\x2\x5FE\x5FF\x5"+ - "\x253\x12A\x2\x5FF\x600\x5\x239\x11D\x2\x600\x601\x5\x231\x119\x2\x601"+ - "\x604\x5\x237\x11C\x2\x602\x605\x5\x223\x112\x2\x603\x605\x5\x229\x115"+ - "\x2\x604\x602\x3\x2\x2\x2\x604\x603\x3\x2\x2\x2\x605\x606\x3\x2\x2\x2"+ - "\x606\x604\x3\x2\x2\x2\x606\x607\x3\x2\x2\x2\x607\x608\x3\x2\x2\x2\x608"+ - "\x609\x5\x25D\x12F\x2\x609\x60A\x5\x253\x12A\x2\x60A\x60B\x5\x241\x121"+ - "\x2\x60B\x60C\x5\x257\x12C\x2\x60C\x60D\x5\x239\x11D\x2\x60D\x110\x3\x2"+ - "\x2\x2\x60E\x60F\x5\x247\x124\x2\x60F\x610\x5\x255\x12B\x2\x610\x611\x5"+ - "\x239\x11D\x2\x611\x612\x5\x257\x12C\x2\x612\x112\x3\x2\x2\x2\x613\x614"+ - "\x5\x249\x125\x2\x614\x615\x5\x239\x11D\x2\x615\x114\x3\x2\x2\x2\x616"+ - "\x617\x5\x249\x125\x2\x617\x618\x5\x241\x121\x2\x618\x619\x5\x237\x11C"+ - "\x2\x619\x116\x3\x2\x2\x2\x61A\x61B\x5\x249\x125\x2\x61B\x61C\x5\x24D"+ - "\x127\x2\x61C\x61D\x5\x237\x11C\x2\x61D\x118\x3\x2\x2\x2\x61E\x61F\x5"+ - "\x24B\x126\x2\x61F\x620\x5\x231\x119\x2\x620\x621\x5\x249\x125\x2\x621"+ - "\x622\x5\x239\x11D\x2\x622\x11A\x3\x2\x2\x2\x623\x624\x5\x24B\x126\x2"+ - "\x624\x625\x5\x239\x11D\x2\x625\x626\x5\x25F\x130\x2\x626\x627\x5\x257"+ - "\x12C\x2\x627\x11C\x3\x2\x2\x2\x628\x629\x5\x24B\x126\x2\x629\x62A\x5"+ - "\x239\x11D\x2\x62A\x62B\x5\x25D\x12F\x2\x62B\x11E\x3\x2\x2\x2\x62C\x62D"+ - "\x5\x24B\x126\x2\x62D\x62E\x5\x24D\x127\x2\x62E\x62F\x5\x257\x12C\x2\x62F"+ - "\x120\x3\x2\x2\x2\x630\x631\x5\x24B\x126\x2\x631\x632\x5\x24D\x127\x2"+ - "\x632\x633\x5\x257\x12C\x2\x633\x634\x5\x23F\x120\x2\x634\x635\x5\x241"+ - "\x121\x2\x635\x636\x5\x24B\x126\x2\x636\x637\x5\x23D\x11F\x2\x637\x122"+ - "\x3\x2\x2\x2\x638\x639\x5\x24B\x126\x2\x639\x63A\x5\x259\x12D\x2\x63A"+ - "\x63B\x5\x247\x124\x2\x63B\x63C\x5\x247\x124\x2\x63C\x124\x3\x2\x2\x2"+ - "\x63D\x63E\x5\x24D\x127\x2\x63E\x63F\x5\x233\x11A\x2\x63F\x640\x5\x243"+ - "\x122\x2\x640\x641\x5\x239\x11D\x2\x641\x642\x5\x235\x11B\x2\x642\x643"+ - "\x5\x257\x12C\x2\x643\x126\x3\x2\x2\x2\x644\x645\x5\x24D\x127\x2\x645"+ - "\x646\x5\x24B\x126\x2\x646\x128\x3\x2\x2\x2\x647\x648\x5\x24D\x127\x2"+ - "\x648\x64B\x5\x24B\x126\x2\x649\x64C\x5\x223\x112\x2\x64A\x64C\x5\x229"+ - "\x115\x2\x64B\x649\x3\x2\x2\x2\x64B\x64A\x3\x2\x2\x2\x64C\x64D\x3\x2\x2"+ - "\x2\x64D\x64B\x3\x2\x2\x2\x64D\x64E\x3\x2\x2\x2\x64E\x64F\x3\x2\x2\x2"+ - "\x64F\x650\x5\x239\x11D\x2\x650\x651\x5\x253\x12A\x2\x651\x652\x5\x253"+ - "\x12A\x2\x652\x653\x5\x24D\x127\x2\x653\x654\x5\x253\x12A\x2\x654\x12A"+ - "\x3\x2\x2\x2\x655\x656\x5\x24D\x127\x2\x656\x659\x5\x24B\x126\x2\x657"+ - "\x65A\x5\x223\x112\x2\x658\x65A\x5\x229\x115\x2\x659\x657\x3\x2\x2\x2"+ - "\x659\x658\x3\x2\x2\x2\x65A\x65B\x3\x2\x2\x2\x65B\x659\x3\x2\x2\x2\x65B"+ - "\x65C\x3\x2\x2\x2\x65C\x65D\x3\x2\x2\x2\x65D\x65E\x5\x247\x124\x2\x65E"+ - "\x65F\x5\x24D\x127\x2\x65F\x660\x5\x235\x11B\x2\x660\x661\x5\x231\x119"+ - "\x2\x661\x664\x5\x247\x124\x2\x662\x665\x5\x223\x112\x2\x663\x665\x5\x229"+ - "\x115\x2\x664\x662\x3\x2\x2\x2\x664\x663\x3\x2\x2\x2\x665\x666\x3\x2\x2"+ - "\x2\x666\x664\x3\x2\x2\x2\x666\x667\x3\x2\x2\x2\x667\x668\x3\x2\x2\x2"+ - "\x668\x669\x5\x239\x11D\x2\x669\x66A\x5\x253\x12A\x2\x66A\x66B\x5\x253"+ - "\x12A\x2\x66B\x66C\x5\x24D\x127\x2\x66C\x66D\x5\x253\x12A\x2\x66D\x12C"+ - "\x3\x2\x2\x2\x66E\x66F\x5\x24D\x127\x2\x66F\x670\x5\x24F\x128\x2\x670"+ - "\x671\x5\x239\x11D\x2\x671\x672\x5\x24B\x126\x2\x672\x12E\x3\x2\x2\x2"+ - "\x673\x674\x5\x24D\x127\x2\x674\x675\x5\x24F\x128\x2\x675\x676\x5\x257"+ - "\x12C\x2\x676\x677\x5\x241\x121\x2\x677\x678\x5\x24D\x127\x2\x678\x679"+ - "\x5\x24B\x126\x2\x679\x67A\x5\x231\x119\x2\x67A\x67B\x5\x247\x124\x2\x67B"+ - "\x130\x3\x2\x2\x2\x67C\x67D\x5\x24D\x127\x2\x67D\x67E\x5\x24F\x128\x2"+ - "\x67E\x67F\x5\x257\x12C\x2\x67F\x680\x5\x241\x121\x2\x680\x681\x5\x24D"+ - "\x127\x2\x681\x684\x5\x24B\x126\x2\x682\x685\x5\x223\x112\x2\x683\x685"+ - "\x5\x229\x115\x2\x684\x682\x3\x2\x2\x2\x684\x683\x3\x2\x2\x2\x685\x686"+ - "\x3\x2\x2\x2\x686\x684\x3\x2\x2\x2\x686\x687\x3\x2\x2\x2\x687\x688\x3"+ - "\x2\x2\x2\x688\x689\x5\x233\x11A\x2\x689\x68A\x5\x231\x119\x2\x68A\x68B"+ - "\x5\x255\x12B\x2\x68B\x68C\x5\x239\x11D\x2\x68C\x132\x3\x2\x2\x2\x68D"+ - "\x68E\x5\x24D\x127\x2\x68E\x68F\x5\x24F\x128\x2\x68F\x690\x5\x257\x12C"+ - "\x2\x690\x691\x5\x241\x121\x2\x691\x692\x5\x24D\x127\x2\x692\x695\x5\x24B"+ - "\x126\x2\x693\x696\x5\x223\x112\x2\x694\x696\x5\x229\x115\x2\x695\x693"+ - "\x3\x2\x2\x2\x695\x694\x3\x2\x2\x2\x696\x697\x3\x2\x2\x2\x697\x695\x3"+ - "\x2\x2\x2\x697\x698\x3\x2\x2\x2\x698\x699\x3\x2\x2\x2\x699\x69A\x5\x239"+ - "\x11D\x2\x69A\x69B\x5\x25F\x130\x2\x69B\x69C\x5\x24F\x128\x2\x69C\x69D"+ - "\x5\x247\x124\x2\x69D\x69E\x5\x241\x121\x2\x69E\x69F\x5\x235\x11B\x2\x69F"+ - "\x6A0\x5\x241\x121\x2\x6A0\x6A1\x5\x257\x12C\x2\x6A1\x134\x3\x2\x2\x2"+ - "\x6A2\x6A3\x5\x24D\x127\x2\x6A3\x6A4\x5\x24F\x128\x2\x6A4\x6A5\x5\x257"+ - "\x12C\x2\x6A5\x6A6\x5\x241\x121\x2\x6A6\x6A7\x5\x24D\x127\x2\x6A7\x6AA"+ - "\x5\x24B\x126\x2\x6A8\x6AB\x5\x223\x112\x2\x6A9\x6AB\x5\x229\x115\x2\x6AA"+ - "\x6A8\x3\x2\x2\x2\x6AA\x6A9\x3\x2\x2\x2\x6AB\x6AC\x3\x2\x2\x2\x6AC\x6AA"+ - "\x3\x2\x2\x2\x6AC\x6AD\x3\x2\x2\x2\x6AD\x6AE\x3\x2\x2\x2\x6AE\x6AF\x5"+ - "\x235\x11B\x2\x6AF\x6B0\x5\x24D\x127\x2\x6B0\x6B1\x5\x249\x125\x2\x6B1"+ - "\x6B2\x5\x24F\x128\x2\x6B2\x6B3\x5\x231\x119\x2\x6B3\x6B4\x5\x253\x12A"+ - "\x2\x6B4\x6B5\x5\x239\x11D\x2\x6B5\x136\x3\x2\x2\x2\x6B6\x6B7\x5\x24D"+ - "\x127\x2\x6B7\x6B8\x5\x24F\x128\x2\x6B8\x6B9\x5\x257\x12C\x2\x6B9\x6BA"+ - "\x5\x241\x121\x2\x6BA\x6BB\x5\x24D\x127\x2\x6BB\x6BE\x5\x24B\x126\x2\x6BC"+ - "\x6BF\x5\x223\x112\x2\x6BD\x6BF\x5\x229\x115\x2\x6BE\x6BC\x3\x2\x2\x2"+ - "\x6BE\x6BD\x3\x2\x2\x2\x6BF\x6C0\x3\x2\x2\x2\x6C0\x6BE\x3\x2\x2\x2\x6C0"+ - "\x6C1\x3\x2\x2\x2\x6C1\x6C2\x3\x2\x2\x2\x6C2\x6C3\x5\x24F\x128\x2\x6C3"+ - "\x6C4\x5\x253\x12A\x2\x6C4\x6C5\x5\x241\x121\x2\x6C5\x6C6\x5\x25B\x12E"+ - "\x2\x6C6\x6C7\x5\x231\x119\x2\x6C7\x6C8\x5\x257\x12C\x2\x6C8\x6CB\x5\x239"+ - "\x11D\x2\x6C9\x6CC\x5\x223\x112\x2\x6CA\x6CC\x5\x229\x115\x2\x6CB\x6C9"+ - "\x3\x2\x2\x2\x6CB\x6CA\x3\x2\x2\x2\x6CC\x6CD\x3\x2\x2\x2\x6CD\x6CB\x3"+ - "\x2\x2\x2\x6CD\x6CE\x3\x2\x2\x2\x6CE\x6CF\x3\x2\x2\x2\x6CF\x6D0\x5\x249"+ - "\x125\x2\x6D0\x6D1\x5\x24D\x127\x2\x6D1\x6D2\x5\x237\x11C\x2\x6D2\x6D3"+ - "\x5\x259\x12D\x2\x6D3\x6D4\x5\x247\x124\x2\x6D4\x6D5\x5\x239\x11D\x2\x6D5"+ - "\x138\x3\x2\x2\x2\x6D6\x6D7\x5\x24D\x127\x2\x6D7\x6D8\x5\x253\x12A\x2"+ - "\x6D8\x13A\x3\x2\x2\x2\x6D9\x6DA\x5\x24D\x127\x2\x6DA\x6DB\x5\x259\x12D"+ - "\x2\x6DB\x6DC\x5\x257\x12C\x2\x6DC\x6DD\x5\x24F\x128\x2\x6DD\x6DE\x5\x259"+ - "\x12D\x2\x6DE\x6DF\x5\x257\x12C\x2\x6DF\x13C\x3\x2\x2\x2\x6E0\x6E1\x5"+ - "\x24F\x128\x2\x6E1\x6E2\x5\x231\x119\x2\x6E2\x6E3\x5\x253\x12A\x2\x6E3"+ - "\x6E4\x5\x231\x119\x2\x6E4\x6E5\x5\x249\x125\x2\x6E5\x6E6\x5\x231\x119"+ - "\x2\x6E6\x6E7\x5\x253\x12A\x2\x6E7\x6E8\x5\x253\x12A\x2\x6E8\x6E9\x5\x231"+ - "\x119\x2\x6E9\x6EA\x5\x261\x131\x2\x6EA\x13E\x3\x2\x2\x2\x6EB\x6EC\x5"+ - "\x24F\x128\x2\x6EC\x6ED\x5\x253\x12A\x2\x6ED\x6EE\x5\x239\x11D\x2\x6EE"+ - "\x6EF\x5\x255\x12B\x2\x6EF\x6F0\x5\x239\x11D\x2\x6F0\x6F1\x5\x253\x12A"+ - "\x2\x6F1\x6F2\x5\x25B\x12E\x2\x6F2\x6F3\x5\x239\x11D\x2\x6F3\x140\x3\x2"+ - "\x2\x2\x6F4\x6F5\x5\x24F\x128\x2\x6F5\x6F6\x5\x253\x12A\x2\x6F6\x6F7\x5"+ - "\x241\x121\x2\x6F7\x6F8\x5\x24B\x126\x2\x6F8\x6F9\x5\x257\x12C\x2\x6F9"+ - "\x142\x3\x2\x2\x2\x6FA\x6FB\x5\x24F\x128\x2\x6FB\x6FC\x5\x253\x12A\x2"+ - "\x6FC\x6FD\x5\x241\x121\x2\x6FD\x6FE\x5\x25B\x12E\x2\x6FE\x6FF\x5\x231"+ - "\x119\x2\x6FF\x700\x5\x257\x12C\x2\x700\x701\x5\x239\x11D\x2\x701\x144"+ - "\x3\x2\x2\x2\x702\x703\x5\x24F\x128\x2\x703\x704\x5\x253\x12A\x2\x704"+ - "\x705\x5\x24D\x127\x2\x705\x706\x5\x24F\x128\x2\x706\x707\x5\x239\x11D"+ - "\x2\x707\x708\x5\x253\x12A\x2\x708\x709\x5\x257\x12C\x2\x709\x70C\x5\x261"+ - "\x131\x2\x70A\x70D\x5\x223\x112\x2\x70B\x70D\x5\x229\x115\x2\x70C\x70A"+ - "\x3\x2\x2\x2\x70C\x70B\x3\x2\x2\x2\x70D\x70E\x3\x2\x2\x2\x70E\x70C\x3"+ - "\x2\x2\x2\x70E\x70F\x3\x2\x2\x2\x70F\x710\x3\x2\x2\x2\x710\x711\x5\x23D"+ - "\x11F\x2\x711\x712\x5\x239\x11D\x2\x712\x713\x5\x257\x12C\x2\x713\x146"+ - "\x3\x2\x2\x2\x714\x715\x5\x24F\x128\x2\x715\x716\x5\x253\x12A\x2\x716"+ - "\x717\x5\x24D\x127\x2\x717\x718\x5\x24F\x128\x2\x718\x719\x5\x239\x11D"+ - "\x2\x719\x71A\x5\x253\x12A\x2\x71A\x71B\x5\x257\x12C\x2\x71B\x71E\x5\x261"+ - "\x131\x2\x71C\x71F\x5\x223\x112\x2\x71D\x71F\x5\x229\x115\x2\x71E\x71C"+ - "\x3\x2\x2\x2\x71E\x71D\x3\x2\x2\x2\x71F\x720\x3\x2\x2\x2\x720\x71E\x3"+ - "\x2\x2\x2\x720\x721\x3\x2\x2\x2\x721\x722\x3\x2\x2\x2\x722\x723\x5\x247"+ - "\x124\x2\x723\x724\x5\x239\x11D\x2\x724\x725\x5\x257\x12C\x2\x725\x148"+ - "\x3\x2\x2\x2\x726\x727\x5\x24F\x128\x2\x727\x728\x5\x253\x12A\x2\x728"+ - "\x729\x5\x24D\x127\x2\x729\x72A\x5\x24F\x128\x2\x72A\x72B\x5\x239\x11D"+ - "\x2\x72B\x72C\x5\x253\x12A\x2\x72C\x72D\x5\x257\x12C\x2\x72D\x730\x5\x261"+ - "\x131\x2\x72E\x731\x5\x223\x112\x2\x72F\x731\x5\x229\x115\x2\x730\x72E"+ - "\x3\x2\x2\x2\x730\x72F\x3\x2\x2\x2\x731\x732\x3\x2\x2\x2\x732\x730\x3"+ - "\x2\x2\x2\x732\x733\x3\x2\x2\x2\x733\x734\x3\x2\x2\x2\x734\x735\x5\x255"+ - "\x12B\x2\x735\x736\x5\x239\x11D\x2\x736\x737\x5\x257\x12C\x2\x737\x14A"+ - "\x3\x2\x2\x2\x738\x739\x5\x24F\x128\x2\x739\x73A\x5\x257\x12C\x2\x73A"+ - "\x73B\x5\x253\x12A\x2\x73B\x73C\x5\x255\x12B\x2\x73C\x73D\x5\x231\x119"+ - "\x2\x73D\x73E\x5\x23B\x11E\x2\x73E\x73F\x5\x239\x11D\x2\x73F\x14C\x3\x2"+ - "\x2\x2\x740\x741\x5\x24F\x128\x2\x741\x742\x5\x259\x12D\x2\x742\x743\x5"+ - "\x233\x11A\x2\x743\x744\x5\x247\x124\x2\x744\x745\x5\x241\x121\x2\x745"+ - "\x746\x5\x235\x11B\x2\x746\x14E\x3\x2\x2\x2\x747\x748\x5\x24F\x128\x2"+ - "\x748\x749\x5\x259\x12D\x2\x749\x74A\x5\x257\x12C\x2\x74A\x150\x3\x2\x2"+ - "\x2\x74B\x74C\x5\x253\x12A\x2\x74C\x74D\x5\x231\x119\x2\x74D\x74E\x5\x24B"+ - "\x126\x2\x74E\x74F\x5\x237\x11C\x2\x74F\x750\x5\x24D\x127\x2\x750\x751"+ - "\x5\x249\x125\x2\x751\x152\x3\x2\x2\x2\x752\x753\x5\x253\x12A\x2\x753"+ - "\x754\x5\x231\x119\x2\x754\x755\x5\x241\x121\x2\x755\x756\x5\x255\x12B"+ - "\x2\x756\x757\x5\x239\x11D\x2\x757\x758\x5\x239\x11D\x2\x758\x759\x5\x25B"+ - "\x12E\x2\x759\x75A\x5\x239\x11D\x2\x75A\x75B\x5\x24B\x126\x2\x75B\x75C"+ - "\x5\x257\x12C\x2\x75C\x154\x3\x2\x2\x2\x75D\x75E\x5\x253\x12A\x2\x75E"+ - "\x75F\x5\x239\x11D\x2\x75F\x760\x5\x231\x119\x2\x760\x761\x5\x237\x11C"+ - "\x2\x761\x156\x3\x2\x2\x2\x762\x763\x5\x253\x12A\x2\x763\x764\x5\x239"+ - "\x11D\x2\x764\x765\x5\x231\x119\x2\x765\x768\x5\x237\x11C\x2\x766\x769"+ - "\x5\x223\x112\x2\x767\x769\x5\x229\x115\x2\x768\x766\x3\x2\x2\x2\x768"+ - "\x767\x3\x2\x2\x2\x769\x76A\x3\x2\x2\x2\x76A\x768\x3\x2\x2\x2\x76A\x76B"+ - "\x3\x2\x2\x2\x76B\x76C\x3\x2\x2\x2\x76C\x76D\x5\x25D\x12F\x2\x76D\x76E"+ - "\x5\x253\x12A\x2\x76E\x76F\x5\x241\x121\x2\x76F\x770\x5\x257\x12C\x2\x770"+ - "\x771\x5\x239\x11D\x2\x771\x158\x3\x2\x2\x2\x772\x773\x5\x253\x12A\x2"+ - "\x773\x774\x5\x239\x11D\x2\x774\x775\x5\x237\x11C\x2\x775\x776\x5\x241"+ - "\x121\x2\x776\x777\x5\x249\x125\x2\x777\x15A\x3\x2\x2\x2\x778\x779\x5"+ - "\x253\x12A\x2\x779\x77A\x5\x239\x11D\x2\x77A\x77B\x5\x249\x125\x2\x77B"+ - "\x15C\x3\x2\x2\x2\x77C\x77D\x5\x253\x12A\x2\x77D\x77E\x5\x239\x11D\x2"+ - "\x77E\x77F\x5\x255\x12B\x2\x77F\x780\x5\x239\x11D\x2\x780\x781\x5\x257"+ - "\x12C\x2\x781\x15E\x3\x2\x2\x2\x782\x783\x5\x253\x12A\x2\x783\x784\x5"+ - "\x239\x11D\x2\x784\x785\x5\x255\x12B\x2\x785\x786\x5\x259\x12D\x2\x786"+ - "\x787\x5\x249\x125\x2\x787\x788\x5\x239\x11D\x2\x788\x160\x3\x2\x2\x2"+ - "\x789\x78A\x5\x253\x12A\x2\x78A\x78B\x5\x239\x11D\x2\x78B\x78C\x5\x257"+ - "\x12C\x2\x78C\x78D\x5\x259\x12D\x2\x78D\x78E\x5\x253\x12A\x2\x78E\x78F"+ - "\x5\x24B\x126\x2\x78F\x162\x3\x2\x2\x2\x790\x791\x5\x253\x12A\x2\x791"+ - "\x792\x5\x255\x12B\x2\x792\x793\x5\x239\x11D\x2\x793\x794\x5\x257\x12C"+ - "\x2\x794\x164\x3\x2\x2\x2\x795\x796\x5\x255\x12B\x2\x796\x797\x5\x239"+ - "\x11D\x2\x797\x798\x5\x239\x11D\x2\x798\x799\x5\x245\x123\x2\x799\x166"+ - "\x3\x2\x2\x2\x79A\x79B\x5\x255\x12B\x2\x79B\x79C\x5\x239\x11D\x2\x79C"+ - "\x79D\x5\x247\x124\x2\x79D\x79E\x5\x239\x11D\x2\x79E\x79F\x5\x235\x11B"+ - "\x2\x79F\x7A0\x5\x257\x12C\x2\x7A0\x168\x3\x2\x2\x2\x7A1\x7A2\x5\x255"+ - "\x12B\x2\x7A2\x7A3\x5\x239\x11D\x2\x7A3\x7A4\x5\x257\x12C\x2\x7A4\x16A"+ - "\x3\x2\x2\x2\x7A5\x7A6\x5\x255\x12B\x2\x7A6\x7A7\x5\x23F\x120\x2\x7A7"+ - "\x7A8\x5\x231\x119\x2\x7A8\x7A9\x5\x253\x12A\x2\x7A9\x7AA\x5\x239\x11D"+ - "\x2\x7AA\x7AB\x5\x237\x11C\x2\x7AB\x16C\x3\x2\x2\x2\x7AC\x7AD\x5\x255"+ - "\x12B\x2\x7AD\x7AE\x5\x241\x121\x2\x7AE\x7AF\x5\x24B\x126\x2\x7AF\x7B0"+ - "\x5\x23D\x11F\x2\x7B0\x7B1\x5\x247\x124\x2\x7B1\x7B2\x5\x239\x11D\x2\x7B2"+ - "\x16E\x3\x2\x2\x2\x7B3\x7B4\x5\x255\x12B\x2\x7B4\x7B5\x5\x24F\x128\x2"+ - "\x7B5\x7B6\x5\x235\x11B\x2\x7B6\x170\x3\x2\x2\x2\x7B7\x7B8\x5\x255\x12B"+ - "\x2\x7B8\x7B9\x5\x257\x12C\x2\x7B9\x7BA\x5\x231\x119\x2\x7BA\x7BB\x5\x257"+ - "\x12C\x2\x7BB\x7BC\x5\x241\x121\x2\x7BC\x7BD\x5\x235\x11B\x2\x7BD\x172"+ - "\x3\x2\x2\x2\x7BE\x7BF\x5\x255\x12B\x2\x7BF\x7C0\x5\x257\x12C\x2\x7C0"+ - "\x7C1\x5\x239\x11D\x2\x7C1\x7C2\x5\x24F\x128\x2\x7C2\x174\x3\x2\x2\x2"+ - "\x7C3\x7C4\x5\x255\x12B\x2\x7C4\x7C5\x5\x257\x12C\x2\x7C5\x7C6\x5\x24D"+ - "\x127\x2\x7C6\x7C7\x5\x24F\x128\x2\x7C7\x176\x3\x2\x2\x2\x7C8\x7C9\x5"+ - "\x255\x12B\x2\x7C9\x7CA\x5\x257\x12C\x2\x7CA\x7CB\x5\x253\x12A\x2\x7CB"+ - "\x7CC\x5\x241\x121\x2\x7CC\x7CD\x5\x24B\x126\x2\x7CD\x7CE\x5\x23D\x11F"+ - "\x2\x7CE\x178\x3\x2\x2\x2\x7CF\x7D0\x5\x255\x12B\x2\x7D0\x7D1\x5\x259"+ - "\x12D\x2\x7D1\x7D2\x5\x233\x11A\x2\x7D2\x17A\x3\x2\x2\x2\x7D3\x7D4\x5"+ - "\x257\x12C\x2\x7D4\x7D5\x5\x231\x119\x2\x7D5\x7D6\x5\x233\x11A\x2\x7D6"+ - "\x17C\x3\x2\x2\x2\x7D7\x7D8\x5\x257\x12C\x2\x7D8\x7D9\x5\x239\x11D\x2"+ - "\x7D9\x7DA\x5\x25F\x130\x2\x7DA\x7DB\x5\x257\x12C\x2\x7DB\x17E\x3\x2\x2"+ - "\x2\x7DC\x7DD\x5\x257\x12C\x2\x7DD\x7DE\x5\x23F\x120\x2\x7DE\x7DF\x5\x239"+ - "\x11D\x2\x7DF\x7E0\x5\x24B\x126\x2\x7E0\x180\x3\x2\x2\x2\x7E1\x7E2\x5"+ - "\x257\x12C\x2\x7E2\x7E3\x5\x24D\x127\x2\x7E3\x182\x3\x2\x2\x2\x7E4\x7E5"+ - "\x5\x257\x12C\x2\x7E5\x7E6\x5\x253\x12A\x2\x7E6\x7E7\x5\x259\x12D\x2\x7E7"+ - "\x7E8\x5\x239\x11D\x2\x7E8\x184\x3\x2\x2\x2\x7E9\x7EA\x5\x257\x12C\x2"+ - "\x7EA\x7EB\x5\x261\x131\x2\x7EB\x7EC\x5\x24F\x128\x2\x7EC\x7ED\x5\x239"+ - "\x11D\x2\x7ED\x186\x3\x2\x2\x2\x7EE\x7EF\x5\x257\x12C\x2\x7EF\x7F0\x5"+ - "\x261\x131\x2\x7F0\x7F1\x5\x24F\x128\x2\x7F1\x7F2\x5\x239\x11D\x2\x7F2"+ - "\x7F3\x5\x24D\x127\x2\x7F3\x7F4\x5\x23B\x11E\x2\x7F4\x188\x3\x2\x2\x2"+ - "\x7F5\x7F6\x5\x259\x12D\x2\x7F6\x7F7\x5\x24B\x126\x2\x7F7\x7F8\x5\x247"+ - "\x124\x2\x7F8\x7F9\x5\x24D\x127\x2\x7F9\x7FA\x5\x235\x11B\x2\x7FA\x7FB"+ - "\x5\x245\x123\x2\x7FB\x18A\x3\x2\x2\x2\x7FC\x7FD\x5\x259\x12D\x2\x7FD"+ - "\x7FE\x5\x24B\x126\x2\x7FE\x7FF\x5\x257\x12C\x2\x7FF\x800\x5\x241\x121"+ - "\x2\x800\x801\x5\x247\x124\x2\x801\x18C\x3\x2\x2\x2\x802\x803\x5\x25B"+ - "\x12E\x2\x803\x804\x5\x231\x119\x2\x804\x805\x5\x253\x12A\x2\x805\x806"+ - "\x5\x241\x121\x2\x806\x807\x5\x231\x119\x2\x807\x808\x5\x24B\x126\x2\x808"+ - "\x809\x5\x257\x12C\x2\x809\x18E\x3\x2\x2\x2\x80A\x80B\x5\x25B\x12E\x2"+ - "\x80B\x80C\x5\x239\x11D\x2\x80C\x80D\x5\x253\x12A\x2\x80D\x80E\x5\x255"+ - "\x12B\x2\x80E\x80F\x5\x241\x121\x2\x80F\x810\x5\x24D\x127\x2\x810\x811"+ - "\x5\x24B\x126\x2\x811\x190\x3\x2\x2\x2\x812\x813\x5\x25D\x12F\x2\x813"+ - "\x814\x5\x239\x11D\x2\x814\x815\x5\x24B\x126\x2\x815\x816\x5\x237\x11C"+ - "\x2\x816\x192\x3\x2\x2\x2\x817\x818\x5\x25D\x12F\x2\x818\x819\x5\x23F"+ - "\x120\x2\x819\x81A\x5\x241\x121\x2\x81A\x81B\x5\x247\x124\x2\x81B\x81C"+ - "\x5\x239\x11D\x2\x81C\x194\x3\x2\x2\x2\x81D\x81E\x5\x25D\x12F\x2\x81E"+ - "\x81F\x5\x241\x121\x2\x81F\x820\x5\x237\x11C\x2\x820\x821\x5\x257\x12C"+ - "\x2\x821\x822\x5\x23F\x120\x2\x822\x196\x3\x2\x2\x2\x823\x824\x5\x25D"+ - "\x12F\x2\x824\x825\x5\x241\x121\x2\x825\x826\x5\x257\x12C\x2\x826\x827"+ - "\x5\x23F\x120\x2\x827\x198\x3\x2\x2\x2\x828\x829\x5\x25D\x12F\x2\x829"+ - "\x82A\x5\x241\x121\x2\x82A\x82B\x5\x257\x12C\x2\x82B\x82C\x5\x23F\x120"+ - "\x2\x82C\x82D\x5\x239\x11D\x2\x82D\x82E\x5\x25B\x12E\x2\x82E\x82F\x5\x239"+ - "\x11D\x2\x82F\x830\x5\x24B\x126\x2\x830\x831\x5\x257\x12C\x2\x831\x832"+ - "\x5\x255\x12B\x2\x832\x19A\x3\x2\x2\x2\x833\x834\x5\x25D\x12F\x2\x834"+ - "\x835\x5\x253\x12A\x2\x835\x836\x5\x241\x121\x2\x836\x837\x5\x257\x12C"+ - "\x2\x837\x838\x5\x239\x11D\x2\x838\x19C\x3\x2\x2\x2\x839\x83A\x5\x25F"+ - "\x130\x2\x83A\x83B\x5\x24D\x127\x2\x83B\x83C\x5\x253\x12A\x2\x83C\x19E"+ - "\x3\x2\x2\x2\x83D\x83E\a<\x2\x2\x83E\x83F\a?\x2\x2\x83F\x1A0\x3\x2\x2"+ - "\x2\x840\x841\a\x31\x2\x2\x841\x1A2\x3\x2\x2\x2\x842\x843\a^\x2\x2\x843"+ - "\x1A4\x3\x2\x2\x2\x844\x845\a?\x2\x2\x845\x1A6\x3\x2\x2\x2\x846\x847\a"+ - "@\x2\x2\x847\x84B\a?\x2\x2\x848\x849\a?\x2\x2\x849\x84B\a@\x2\x2\x84A"+ - "\x846\x3\x2\x2\x2\x84A\x848\x3\x2\x2\x2\x84B\x1A8\x3\x2\x2\x2\x84C\x84D"+ - "\a@\x2\x2\x84D\x1AA\x3\x2\x2\x2\x84E\x84F\a>\x2\x2\x84F\x853\a?\x2\x2"+ - "\x850\x851\a?\x2\x2\x851\x853\a>\x2\x2\x852\x84E\x3\x2\x2\x2\x852\x850"+ - "\x3\x2\x2\x2\x853\x1AC\x3\x2\x2\x2\x854\x855\a*\x2\x2\x855\x1AE\x3\x2"+ - "\x2\x2\x856\x857\a>\x2\x2\x857\x1B0\x3\x2\x2\x2\x858\x859\a/\x2\x2\x859"+ - "\x1B2\x3\x2\x2\x2\x85A\x85B\a,\x2\x2\x85B\x1B4\x3\x2\x2\x2\x85C\x85D\a"+ - ">\x2\x2\x85D\x861\a@\x2\x2\x85E\x85F\a@\x2\x2\x85F\x861\a>\x2\x2\x860"+ - "\x85C\x3\x2\x2\x2\x860\x85E\x3\x2\x2\x2\x861\x1B6\x3\x2\x2\x2\x862\x863"+ - "\a-\x2\x2\x863\x1B8\x3\x2\x2\x2\x864\x865\a`\x2\x2\x865\x1BA\x3\x2\x2"+ - "\x2\x866\x867\a+\x2\x2\x867\x1BC\x3\x2\x2\x2\x868\x869\a]\x2\x2\x869\x1BE"+ - "\x3\x2\x2\x2\x86A\x86B\a_\x2\x2\x86B\x1C0\x3\x2\x2\x2\x86C\x872\a$\x2"+ - "\x2\x86D\x871\n\x2\x2\x2\x86E\x86F\a$\x2\x2\x86F\x871\a$\x2\x2\x870\x86D"+ - "\x3\x2\x2\x2\x870\x86E\x3\x2\x2\x2\x871\x874\x3\x2\x2\x2\x872\x870\x3"+ - "\x2\x2\x2\x872\x873\x3\x2\x2\x2\x873\x875\x3\x2\x2\x2\x874\x872\x3\x2"+ - "\x2\x2\x875\x876\a$\x2\x2\x876\x1C2\x3\x2\x2\x2\x877\x878\a(\x2\x2\x878"+ - "\x879\aQ\x2\x2\x879\x87B\x3\x2\x2\x2\x87A\x87C\t\x3\x2\x2\x87B\x87A\x3"+ - "\x2\x2\x2\x87C\x87D\x3\x2\x2\x2\x87D\x87B\x3\x2\x2\x2\x87D\x87E\x3\x2"+ - "\x2\x2\x87E\x880\x3\x2\x2\x2\x87F\x881\x5\x1CD\xE7\x2\x880\x87F\x3\x2"+ - "\x2\x2\x880\x881\x3\x2\x2\x2\x881\x1C4\x3\x2\x2\x2\x882\x883\a(\x2\x2"+ - "\x883\x884\aJ\x2\x2\x884\x886\x3\x2\x2\x2\x885\x887\t\x4\x2\x2\x886\x885"+ - "\x3\x2\x2\x2\x887\x888\x3\x2\x2\x2\x888\x886\x3\x2\x2\x2\x888\x889\x3"+ - "\x2\x2\x2\x889\x88B\x3\x2\x2\x2\x88A\x88C\x5\x1CD\xE7\x2\x88B\x88A\x3"+ - "\x2\x2\x2\x88B\x88C\x3\x2\x2\x2\x88C\x1C6\x3\x2\x2\x2\x88D\x88F\x5\x1C9"+ - "\xE5\x2\x88E\x890\x5\x1CF\xE8\x2\x88F\x88E\x3\x2\x2\x2\x88F\x890\x3\x2"+ - "\x2\x2\x890\x895\x3\x2\x2\x2\x891\x892\x5\x1D7\xEC\x2\x892\x893\x5\x1CF"+ - "\xE8\x2\x893\x895\x3\x2\x2\x2\x894\x88D\x3\x2\x2\x2\x894\x891\x3\x2\x2"+ - "\x2\x895\x1C8\x3\x2\x2\x2\x896\x897\x5\x1D7\xEC\x2\x897\x898\x5\x1D1\xE9"+ - "\x2\x898\x8A7\x3\x2\x2\x2\x899\x89A\x5\x1D7\xEC\x2\x89A\x89C\a\x30\x2"+ - "\x2\x89B\x89D\x5\x1D7\xEC\x2\x89C\x89B\x3\x2\x2\x2\x89C\x89D\x3\x2\x2"+ - "\x2\x89D\x89F\x3\x2\x2\x2\x89E\x8A0\x5\x1D1\xE9\x2\x89F\x89E\x3\x2\x2"+ - "\x2\x89F\x8A0\x3\x2\x2\x2\x8A0\x8A7\x3\x2\x2\x2\x8A1\x8A2\a\x30\x2\x2"+ - "\x8A2\x8A4\x5\x1D7\xEC\x2\x8A3\x8A5\x5\x1D1\xE9\x2\x8A4\x8A3\x3\x2\x2"+ - "\x2\x8A4\x8A5\x3\x2\x2\x2\x8A5\x8A7\x3\x2\x2\x2\x8A6\x896\x3\x2\x2\x2"+ - "\x8A6\x899\x3\x2\x2\x2\x8A6\x8A1\x3\x2\x2\x2\x8A7\x1CA\x3\x2\x2\x2\x8A8"+ - "\x8AA\x5\x1D7\xEC\x2\x8A9\x8AB\x5\x1CD\xE7\x2\x8AA\x8A9\x3\x2\x2\x2\x8AA"+ - "\x8AB\x3\x2\x2\x2\x8AB\x1CC\x3\x2\x2\x2\x8AC\x8AD\t\x5\x2\x2\x8AD\x1CE"+ - "\x3\x2\x2\x2\x8AE\x8AF\t\x6\x2\x2\x8AF\x1D0\x3\x2\x2\x2\x8B0\x8B2\x5\x1D3"+ - "\xEA\x2\x8B1\x8B3\x5\x1D5\xEB\x2\x8B2\x8B1\x3\x2\x2\x2\x8B2\x8B3\x3\x2"+ - "\x2\x2\x8B3\x8B5\x3\x2\x2\x2\x8B4\x8B6\x5\x22D\x117\x2\x8B5\x8B4\x3\x2"+ - "\x2\x2\x8B6\x8B7\x3\x2\x2\x2\x8B7\x8B5\x3\x2\x2\x2\x8B7\x8B8\x3\x2\x2"+ - "\x2\x8B8\x1D2\x3\x2\x2\x2\x8B9\x8BA\t\a\x2\x2\x8BA\x1D4\x3\x2\x2\x2\x8BB"+ - "\x8BC\t\b\x2\x2\x8BC\x1D6\x3\x2\x2\x2\x8BD\x8BF\x5\x22D\x117\x2\x8BE\x8BD"+ - "\x3\x2\x2\x2\x8BF\x8C0\x3\x2\x2\x2\x8C0\x8BE\x3\x2\x2\x2\x8C0\x8C1\x3"+ - "\x2\x2\x2\x8C1\x1D8\x3\x2\x2\x2\x8C2\x8C9\x5]/\x2\x8C3\x8C6\x5\x223\x112"+ - "\x2\x8C4\x8C6\x5\x229\x115\x2\x8C5\x8C3\x3\x2\x2\x2\x8C5\x8C4\x3\x2\x2"+ - "\x2\x8C6\x8C7\x3\x2\x2\x2\x8C7\x8C5\x3\x2\x2\x2\x8C7\x8C8\x3\x2\x2\x2"+ - "\x8C8\x8CA\x3\x2\x2\x2\x8C9\x8C5\x3\x2\x2\x2\x8C9\x8CA\x3\x2\x2\x2\x8CA"+ - "\x8CB\x3\x2\x2\x2\x8CB\x8CC\x5\x1DB\xEE\x2\x8CC\x8CD\x5]/\x2\x8CD\x1DA"+ - "\x3\x2\x2\x2\x8CE\x8D0\x5\x1DD\xEF\x2\x8CF\x8D1\x5\x223\x112\x2\x8D0\x8CF"+ - "\x3\x2\x2\x2\x8D0\x8D1\x3\x2\x2\x2\x8D1\x8D2\x3\x2\x2\x2\x8D2\x8D3\x5"+ - "\x1E9\xF5\x2\x8D3\x8D7\x3\x2\x2\x2\x8D4\x8D7\x5\x1DD\xEF\x2\x8D5\x8D7"+ - "\x5\x1E9\xF5\x2\x8D6\x8CE\x3\x2\x2\x2\x8D6\x8D4\x3\x2\x2\x2\x8D6\x8D5"+ - "\x3\x2\x2\x2\x8D7\x1DC\x3\x2\x2\x2\x8D8\x8D9\x5\x1DF\xF0\x2\x8D9\x8DA"+ - "\x5\x1E1\xF1\x2\x8DA\x8DE\x5\x1DF\xF0\x2\x8DB\x8DC\x5\x1E1\xF1\x2\x8DC"+ - "\x8DD\x5\x1DF\xF0\x2\x8DD\x8DF\x3\x2\x2\x2\x8DE\x8DB\x3\x2\x2\x2\x8DE"+ - "\x8DF\x3\x2\x2\x2\x8DF\x1DE\x3\x2\x2\x2\x8E0\x8E2\x5\x22D\x117\x2\x8E1"+ - "\x8E0\x3\x2\x2\x2\x8E2\x8E3\x3\x2\x2\x2\x8E3\x8E1\x3\x2\x2\x2\x8E3\x8E4"+ - "\x3\x2\x2\x2\x8E4\x8E7\x3\x2\x2\x2\x8E5\x8E7\x5\x1E3\xF2\x2\x8E6\x8E1"+ - "\x3\x2\x2\x2\x8E6\x8E5\x3\x2\x2\x2\x8E7\x1E0\x3\x2\x2\x2\x8E8\x8EA\x5"+ - "\x223\x112\x2\x8E9\x8E8\x3\x2\x2\x2\x8E9\x8EA\x3\x2\x2\x2\x8EA\x8EC\x3"+ - "\x2\x2\x2\x8EB\x8ED\t\t\x2\x2\x8EC\x8EB\x3\x2\x2\x2\x8EC\x8ED\x3\x2\x2"+ - "\x2\x8ED\x8EF\x3\x2\x2\x2\x8EE\x8F0\x5\x223\x112\x2\x8EF\x8EE\x3\x2\x2"+ - "\x2\x8EF\x8F0\x3\x2\x2\x2\x8F0\x1E2\x3\x2\x2\x2\x8F1\x8F4\x5\x1E5\xF3"+ - "\x2\x8F2\x8F4\x5\x1E7\xF4\x2\x8F3\x8F1\x3\x2\x2\x2\x8F3\x8F2\x3\x2\x2"+ - "\x2\x8F4\x1E4\x3\x2\x2\x2\x8F5\x902\x5\x1EF\xF8\x2\x8F6\x902\x5\x1F1\xF9"+ - "\x2\x8F7\x902\x5\x1F3\xFA\x2\x8F8\x902\x5\x1F5\xFB\x2\x8F9\x902\x5\x1F7"+ - "\xFC\x2\x8FA\x902\x5\x1F9\xFD\x2\x8FB\x902\x5\x1FB\xFE\x2\x8FC\x902\x5"+ - "\x1FD\xFF\x2\x8FD\x902\x5\x1FF\x100\x2\x8FE\x902\x5\x201\x101\x2\x8FF"+ - "\x902\x5\x203\x102\x2\x900\x902\x5\x205\x103\x2\x901\x8F5\x3\x2\x2\x2"+ - "\x901\x8F6\x3\x2\x2\x2\x901\x8F7\x3\x2\x2\x2\x901\x8F8\x3\x2\x2\x2\x901"+ - "\x8F9\x3\x2\x2\x2\x901\x8FA\x3\x2\x2\x2\x901\x8FB\x3\x2\x2\x2\x901\x8FC"+ - "\x3\x2\x2\x2\x901\x8FD\x3\x2\x2\x2\x901\x8FE\x3\x2\x2\x2\x901\x8FF\x3"+ - "\x2\x2\x2\x901\x900\x3\x2\x2\x2\x902\x1E6\x3\x2\x2\x2\x903\x90F\x5\x207"+ - "\x104\x2\x904\x90F\x5\x209\x105\x2\x905\x90F\x5\x20B\x106\x2\x906\x90F"+ - "\x5\x20D\x107\x2\x907\x90F\x5\x20F\x108\x2\x908\x90F\x5\x211\x109\x2\x909"+ - "\x90F\x5\x213\x10A\x2\x90A\x90F\x5\x215\x10B\x2\x90B\x90F\x5\x217\x10C"+ - "\x2\x90C\x90F\x5\x219\x10D\x2\x90D\x90F\x5\x21B\x10E\x2\x90E\x903\x3\x2"+ - "\x2\x2\x90E\x904\x3\x2\x2\x2\x90E\x905\x3\x2\x2\x2\x90E\x906\x3\x2\x2"+ - "\x2\x90E\x907\x3\x2\x2\x2\x90E\x908\x3\x2\x2\x2\x90E\x909\x3\x2\x2\x2"+ - "\x90E\x90A\x3\x2\x2\x2\x90E\x90B\x3\x2\x2\x2\x90E\x90C\x3\x2\x2\x2\x90E"+ - "\x90D\x3\x2\x2\x2\x90F\x1E8\x3\x2\x2\x2\x910\x912\x5\x22D\x117\x2\x911"+ - "\x910\x3\x2\x2\x2\x912\x913\x3\x2\x2\x2\x913\x911\x3\x2\x2\x2\x913\x914"+ - "\x3\x2\x2\x2\x914\x915\x3\x2\x2\x2\x915\x916\x5\x1ED\xF7\x2\x916\x92E"+ - "\x3\x2\x2\x2\x917\x919\x5\x22D\x117\x2\x918\x917\x3\x2\x2\x2\x919\x91A"+ - "\x3\x2\x2\x2\x91A\x918\x3\x2\x2\x2\x91A\x91B\x3\x2\x2\x2\x91B\x91C\x3"+ - "\x2\x2\x2\x91C\x91E\x5\x1EB\xF6\x2\x91D\x91F\x5\x22D\x117\x2\x91E\x91D"+ - "\x3\x2\x2\x2\x91F\x920\x3\x2\x2\x2\x920\x91E\x3\x2\x2\x2\x920\x921\x3"+ - "\x2\x2\x2\x921\x928\x3\x2\x2\x2\x922\x924\x5\x1EB\xF6\x2\x923\x925\x5"+ - "\x22D\x117\x2\x924\x923\x3\x2\x2\x2\x925\x926\x3\x2\x2\x2\x926\x924\x3"+ - "\x2\x2\x2\x926\x927\x3\x2\x2\x2\x927\x929\x3\x2\x2\x2\x928\x922\x3\x2"+ - "\x2\x2\x928\x929\x3\x2\x2\x2\x929\x92B\x3\x2\x2\x2\x92A\x92C\x5\x1ED\xF7"+ - "\x2\x92B\x92A\x3\x2\x2\x2\x92B\x92C\x3\x2\x2\x2\x92C\x92E\x3\x2\x2\x2"+ - "\x92D\x911\x3\x2\x2\x2\x92D\x918\x3\x2\x2\x2\x92E\x1EA\x3\x2\x2\x2\x92F"+ - "\x931\x5\x223\x112\x2\x930\x92F\x3\x2\x2\x2\x930\x931\x3\x2\x2\x2\x931"+ - "\x932\x3\x2\x2\x2\x932\x934\t\n\x2\x2\x933\x935\x5\x223\x112\x2\x934\x933"+ - "\x3\x2\x2\x2\x934\x935\x3\x2\x2\x2\x935\x1EC\x3\x2\x2\x2\x936\x938\x5"+ - "\x223\x112\x2\x937\x936\x3\x2\x2\x2\x937\x938\x3\x2\x2\x2\x938\x941\x3"+ - "\x2\x2\x2\x939\x93A\x5\x231\x119\x2\x93A\x93B\x5\x249\x125\x2\x93B\x942"+ - "\x3\x2\x2\x2\x93C\x93D\x5\x24F\x128\x2\x93D\x93E\x5\x249\x125\x2\x93E"+ - "\x942\x3\x2\x2\x2\x93F\x942\x5\x231\x119\x2\x940\x942\x5\x24F\x128\x2"+ - "\x941\x939\x3\x2\x2\x2\x941\x93C\x3\x2\x2\x2\x941\x93F\x3\x2\x2\x2\x941"+ - "\x940\x3\x2\x2\x2\x942\x1EE\x3\x2\x2\x2\x943\x944\x5\x243\x122\x2\x944"+ - "\x945\x5\x231\x119\x2\x945\x946\x5\x24B\x126\x2\x946\x947\x5\x259\x12D"+ - "\x2\x947\x948\x5\x231\x119\x2\x948\x949\x5\x253\x12A\x2\x949\x94A\x5\x261"+ - "\x131\x2\x94A\x1F0\x3\x2\x2\x2\x94B\x94C\x5\x23B\x11E\x2\x94C\x94D\x5"+ - "\x239\x11D\x2\x94D\x94E\x5\x233\x11A\x2\x94E\x94F\x5\x253\x12A\x2\x94F"+ - "\x950\x5\x259\x12D\x2\x950\x951\x5\x231\x119\x2\x951\x952\x5\x253\x12A"+ - "\x2\x952\x953\x5\x261\x131\x2\x953\x1F2\x3\x2\x2\x2\x954\x955\x5\x249"+ - "\x125\x2\x955\x956\x5\x231\x119\x2\x956\x957\x5\x253\x12A\x2\x957\x958"+ - "\x5\x235\x11B\x2\x958\x959\x5\x23F\x120\x2\x959\x1F4\x3\x2\x2\x2\x95A"+ - "\x95B\x5\x231\x119\x2\x95B\x95C\x5\x24F\x128\x2\x95C\x95D\x5\x253\x12A"+ - "\x2\x95D\x95E\x5\x241\x121\x2\x95E\x95F\x5\x247\x124\x2\x95F\x1F6\x3\x2"+ - "\x2\x2\x960\x961\x5\x249\x125\x2\x961\x962\x5\x231\x119\x2\x962\x963\x5"+ - "\x261\x131\x2\x963\x1F8\x3\x2\x2\x2\x964\x965\x5\x243\x122\x2\x965\x966"+ - "\x5\x259\x12D\x2\x966\x967\x5\x24B\x126\x2\x967\x968\x5\x239\x11D\x2\x968"+ - "\x1FA\x3\x2\x2\x2\x969\x96A\x5\x243\x122\x2\x96A\x96B\x5\x259\x12D\x2"+ - "\x96B\x96C\x5\x247\x124\x2\x96C\x96D\x5\x261\x131\x2\x96D\x1FC\x3\x2\x2"+ - "\x2\x96E\x96F\x5\x231\x119\x2\x96F\x970\x5\x259\x12D\x2\x970\x971\x5\x23D"+ - "\x11F\x2\x971\x972\x5\x259\x12D\x2\x972\x973\x5\x255\x12B\x2\x973\x974"+ - "\x5\x257\x12C\x2\x974\x1FE\x3\x2\x2\x2\x975\x976\x5\x255\x12B\x2\x976"+ - "\x977\x5\x239\x11D\x2\x977\x978\x5\x24F\x128\x2\x978\x979\x5\x257\x12C"+ - "\x2\x979\x97A\x5\x239\x11D\x2\x97A\x97B\x5\x249\x125\x2\x97B\x97C\x5\x233"+ - "\x11A\x2\x97C\x97D\x5\x239\x11D\x2\x97D\x97E\x5\x253\x12A\x2\x97E\x200"+ - "\x3\x2\x2\x2\x97F\x980\x5\x24D\x127\x2\x980\x981\x5\x235\x11B\x2\x981"+ - "\x982\x5\x257\x12C\x2\x982\x983\x5\x24D\x127\x2\x983\x984\x5\x233\x11A"+ - "\x2\x984\x985\x5\x239\x11D\x2\x985\x986\x5\x253\x12A\x2\x986\x202\x3\x2"+ - "\x2\x2\x987\x988\x5\x24B\x126\x2\x988\x989\x5\x24D\x127\x2\x989\x98A\x5"+ - "\x25B\x12E\x2\x98A\x98B\x5\x239\x11D\x2\x98B\x98C\x5\x249\x125\x2\x98C"+ - "\x98D\x5\x233\x11A\x2\x98D\x98E\x5\x239\x11D\x2\x98E\x98F\x5\x253\x12A"+ - "\x2\x98F\x204\x3\x2\x2\x2\x990\x991\x5\x237\x11C\x2\x991\x992\x5\x239"+ - "\x11D\x2\x992\x993\x5\x235\x11B\x2\x993\x994\x5\x239\x11D\x2\x994\x995"+ - "\x5\x249\x125\x2\x995\x996\x5\x233\x11A\x2\x996\x997\x5\x239\x11D\x2\x997"+ - "\x998\x5\x253\x12A\x2\x998\x206\x3\x2\x2\x2\x999\x99A\x5\x243\x122\x2"+ - "\x99A\x99B\x5\x231\x119\x2\x99B\x99C\x5\x24B\x126\x2\x99C\x208\x3\x2\x2"+ - "\x2\x99D\x99E\x5\x23B\x11E\x2\x99E\x99F\x5\x239\x11D\x2\x99F\x9A0\x5\x233"+ - "\x11A\x2\x9A0\x20A\x3\x2\x2\x2\x9A1\x9A2\x5\x249\x125\x2\x9A2\x9A3\x5"+ - "\x231\x119\x2\x9A3\x9A4\x5\x253\x12A\x2\x9A4\x20C\x3\x2\x2\x2\x9A5\x9A6"+ - "\x5\x231\x119\x2\x9A6\x9A7\x5\x24F\x128\x2\x9A7\x9A8\x5\x253\x12A\x2\x9A8"+ - "\x20E\x3\x2\x2\x2\x9A9\x9AA\x5\x243\x122\x2\x9AA\x9AB\x5\x259\x12D\x2"+ - "\x9AB\x9AC\x5\x24B\x126\x2\x9AC\x210\x3\x2\x2\x2\x9AD\x9AE\x5\x243\x122"+ - "\x2\x9AE\x9AF\x5\x259\x12D\x2\x9AF\x9B0\x5\x247\x124\x2\x9B0\x212\x3\x2"+ - "\x2\x2\x9B1\x9B2\x5\x231\x119\x2\x9B2\x9B3\x5\x259\x12D\x2\x9B3\x9B4\x5"+ - "\x23D\x11F\x2\x9B4\x214\x3\x2\x2\x2\x9B5\x9B6\x5\x255\x12B\x2\x9B6\x9B7"+ - "\x5\x239\x11D\x2\x9B7\x9B8\x5\x24F\x128\x2\x9B8\x216\x3\x2\x2\x2\x9B9"+ - "\x9BA\x5\x24D\x127\x2\x9BA\x9BB\x5\x235\x11B\x2\x9BB\x9BC\x5\x257\x12C"+ - "\x2\x9BC\x218\x3\x2\x2\x2\x9BD\x9BE\x5\x24B\x126\x2\x9BE\x9BF\x5\x24D"+ - "\x127\x2\x9BF\x9C0\x5\x25B\x12E\x2\x9C0\x21A\x3\x2\x2\x2\x9C1\x9C2\x5"+ - "\x237\x11C\x2\x9C2\x9C3\x5\x239\x11D\x2\x9C3\x9C4\x5\x235\x11B\x2\x9C4"+ - "\x21C\x3\x2\x2\x2\x9C5\x9C6\a\xF\x2\x2\x9C6\x9C9\a\f\x2\x2\x9C7\x9C9\t"+ - "\v\x2\x2\x9C8\x9C5\x3\x2\x2\x2\x9C8\x9C7\x3\x2\x2\x2\x9C9\x21E\x3\x2\x2"+ - "\x2\x9CA\x9CB\a)\x2\x2\x9CB\x220\x3\x2\x2\x2\x9CC\x9CD\a\x61\x2\x2\x9CD"+ - "\x222\x3\x2\x2\x2\x9CE\x9CF\t\f\x2\x2\x9CF\x224\x3\x2\x2\x2\x9D0\x9D2"+ - "\a}\x2\x2\x9D1\x9D3\t\x4\x2\x2\x9D2\x9D1\x3\x2\x2\x2\x9D3\x9D4\x3\x2\x2"+ - "\x2\x9D4\x9D2\x3\x2\x2\x2\x9D4\x9D5\x3\x2\x2\x2\x9D5\x9D6\x3\x2\x2\x2"+ - "\x9D6\x9D8\a/\x2\x2\x9D7\x9D9\t\x4\x2\x2\x9D8\x9D7\x3\x2\x2\x2\x9D9\x9DA"+ - "\x3\x2\x2\x2\x9DA\x9D8\x3\x2\x2\x2\x9DA\x9DB\x3\x2\x2\x2\x9DB\x9DC\x3"+ - "\x2\x2\x2\x9DC\x9DE\a/\x2\x2\x9DD\x9DF\t\x4\x2\x2\x9DE\x9DD\x3\x2\x2\x2"+ - "\x9DF\x9E0\x3\x2\x2\x2\x9E0\x9DE\x3\x2\x2\x2\x9E0\x9E1\x3\x2\x2\x2\x9E1"+ - "\x9E2\x3\x2\x2\x2\x9E2\x9E4\a/\x2\x2\x9E3\x9E5\t\x4\x2\x2\x9E4\x9E3\x3"+ - "\x2\x2\x2\x9E5\x9E6\x3\x2\x2\x2\x9E6\x9E4\x3\x2\x2\x2\x9E6\x9E7\x3\x2"+ - "\x2\x2\x9E7\x9E8\x3\x2\x2\x2\x9E8\x9EA\a/\x2\x2\x9E9\x9EB\t\x4\x2\x2\x9EA"+ - "\x9E9\x3\x2\x2\x2\x9EB\x9EC\x3\x2\x2\x2\x9EC\x9EA\x3\x2\x2\x2\x9EC\x9ED"+ - "\x3\x2\x2\x2\x9ED\x9EE\x3\x2\x2\x2\x9EE\x9EF\a\x7F\x2\x2\x9EF\x226\x3"+ - "\x2\x2\x2\x9F0\x9F4\n\r\x2\x2\x9F1\x9F3\n\xE\x2\x2\x9F2\x9F1\x3\x2\x2"+ - "\x2\x9F3\x9F6\x3\x2\x2\x2\x9F4\x9F2\x3\x2\x2\x2\x9F4\x9F5\x3\x2\x2\x2"+ - "\x9F5\x228\x3\x2\x2\x2\x9F6\x9F4\x3\x2\x2\x2\x9F7\x9F9\t\f\x2\x2\x9F8"+ - "\x9F7\x3\x2\x2\x2\x9F9\x9FC\x3\x2\x2\x2\x9FA\x9F8\x3\x2\x2\x2\x9FA\x9FB"+ - "\x3\x2\x2\x2\x9FB\x9FD\x3\x2\x2\x2\x9FC\x9FA\x3\x2\x2\x2\x9FD\xA01\x5"+ - "\x221\x111\x2\x9FE\xA00\t\f\x2\x2\x9FF\x9FE\x3\x2\x2\x2\xA00\xA03\x3\x2"+ - "\x2\x2\xA01\x9FF\x3\x2\x2\x2\xA01\xA02\x3\x2\x2\x2\xA02\xA05\x3\x2\x2"+ - "\x2\xA03\xA01\x3\x2\x2\x2\xA04\xA06\a\xF\x2\x2\xA05\xA04\x3\x2\x2\x2\xA05"+ - "\xA06\x3\x2\x2\x2\xA06\xA07\x3\x2\x2\x2\xA07\xA08\a\f\x2\x2\xA08\x22A"+ - "\x3\x2\x2\x2\xA09\xA0A\t\xF\x2\x2\xA0A\x22C\x3\x2\x2\x2\xA0B\xA0C\t\x10"+ - "\x2\x2\xA0C\x22E\x3\x2\x2\x2\xA0D\xA0E\t\x11\x2\x2\xA0E\x230\x3\x2\x2"+ - "\x2\xA0F\xA10\t\x12\x2\x2\xA10\x232\x3\x2\x2\x2\xA11\xA12\t\x13\x2\x2"+ - "\xA12\x234\x3\x2\x2\x2\xA13\xA14\t\x14\x2\x2\xA14\x236\x3\x2\x2\x2\xA15"+ - "\xA16\t\x15\x2\x2\xA16\x238\x3\x2\x2\x2\xA17\xA18\t\x16\x2\x2\xA18\x23A"+ - "\x3\x2\x2\x2\xA19\xA1A\t\x17\x2\x2\xA1A\x23C\x3\x2\x2\x2\xA1B\xA1C\t\x18"+ - "\x2\x2\xA1C\x23E\x3\x2\x2\x2\xA1D\xA1E\t\x19\x2\x2\xA1E\x240\x3\x2\x2"+ - "\x2\xA1F\xA20\t\x1A\x2\x2\xA20\x242\x3\x2\x2\x2\xA21\xA22\t\x1B\x2\x2"+ - "\xA22\x244\x3\x2\x2\x2\xA23\xA24\t\x1C\x2\x2\xA24\x246\x3\x2\x2\x2\xA25"+ - "\xA26\t\x1D\x2\x2\xA26\x248\x3\x2\x2\x2\xA27\xA28\t\x1E\x2\x2\xA28\x24A"+ - "\x3\x2\x2\x2\xA29\xA2A\t\x1F\x2\x2\xA2A\x24C\x3\x2\x2\x2\xA2B\xA2C\t "+ - "\x2\x2\xA2C\x24E\x3\x2\x2\x2\xA2D\xA2E\t!\x2\x2\xA2E\x250\x3\x2\x2\x2"+ - "\xA2F\xA30\t\"\x2\x2\xA30\x252\x3\x2\x2\x2\xA31\xA32\t#\x2\x2\xA32\x254"+ - "\x3\x2\x2\x2\xA33\xA34\t$\x2\x2\xA34\x256\x3\x2\x2\x2\xA35\xA36\t%\x2"+ - "\x2\xA36\x258\x3\x2\x2\x2\xA37\xA38\t&\x2\x2\xA38\x25A\x3\x2\x2\x2\xA39"+ - "\xA3A\t\'\x2\x2\xA3A\x25C\x3\x2\x2\x2\xA3B\xA3C\t(\x2\x2\xA3C\x25E\x3"+ - "\x2\x2\x2\xA3D\xA3E\t)\x2\x2\xA3E\x260\x3\x2\x2\x2\xA3F\xA40\t*\x2\x2"+ - "\xA40\x262\x3\x2\x2\x2\xA41\xA42\t+\x2\x2\xA42\x264\x3\x2\x2\x2\xA43\xA44"+ - "\v\x2\x2\x2\xA44\x266\x3\x2\x2\x2s\x2\x475\x481\x483\x493\x495\x4A0\x4A2"+ - "\x4B2\x4B4\x4C2\x4C4\x4D0\x4DC\x4DE\x50A\x50C\x517\x519\x525\x527\x538"+ - "\x53A\x54B\x54D\x5CB\x5CD\x5DB\x5DD\x5EA\x5EC\x5FA\x5FC\x604\x606\x64B"+ - "\x64D\x659\x65B\x664\x666\x684\x686\x695\x697\x6AA\x6AC\x6BE\x6C0\x6CB"+ - "\x6CD\x70C\x70E\x71E\x720\x730\x732\x768\x76A\x84A\x852\x860\x870\x872"+ - "\x87D\x880\x888\x88B\x88F\x894\x89C\x89F\x8A4\x8A6\x8AA\x8B2\x8B7\x8C0"+ - "\x8C5\x8C7\x8C9\x8D0\x8D6\x8DE\x8E3\x8E6\x8E9\x8EC\x8EF\x8F3\x901\x90E"+ - "\x913\x91A\x920\x926\x928\x92B\x92D\x930\x934\x937\x941\x9C8\x9D4\x9DA"+ - "\x9E0\x9E6\x9EC\x9F4\x9FA\xA01\xA05\x2"; + "\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA5\x3\xA6\x3\xA6\x3\xA6\x3"+ + "\xA6\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA7\x3\xA8\x3\xA8\x3"+ + "\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA9\x3"+ + "\xA9\x3\xA9\x3\xA9\x3\xA9\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x6"+ + "\xAA\x75A\n\xAA\r\xAA\xE\xAA\x75B\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3\xAA\x3"+ + "\xAA\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAB\x3\xAC\x3\xAC\x3\xAC\x3"+ + "\xAC\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x3\xAE\x3\xAE\x3\xAE\x3"+ + "\xAE\x3\xAE\x3\xAE\x3\xAE\x3\xAF\x3\xAF\x3\xAF\x3\xAF\x3\xAF\x3\xAF\x3"+ + "\xAF\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB0\x3\xB1\x3\xB1\x3\xB1\x3\xB1\x3"+ + "\xB1\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB2\x3\xB3\x3\xB3\x3"+ + "\xB3\x3\xB3\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB4\x3\xB5\x3"+ + "\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB5\x3\xB6\x3\xB6\x3\xB6\x3\xB6\x3"+ + "\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB7\x3\xB8\x3\xB8\x3\xB8\x3"+ + "\xB8\x3\xB8\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xB9\x3\xBA\x3\xBA\x3\xBA\x3"+ + "\xBA\x3\xBA\x3\xBA\x3\xBA\x3\xBB\x3\xBB\x3\xBB\x3\xBB\x3\xBC\x3\xBC\x3"+ + "\xBC\x3\xBC\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x3\xBE\x3\xBE\x3\xBE\x3"+ + "\xBE\x3\xBE\x3\xBF\x3\xBF\x3\xBF\x3\xC0\x3\xC0\x3\xC0\x3\xC0\x3\xC0\x3"+ + "\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC1\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3"+ + "\xC2\x3\xC2\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC4\x3"+ + "\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC4\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3\xC5\x3"+ + "\xC5\x3\xC5\x3\xC5\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3\xC6\x3"+ + "\xC6\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC7\x3\xC8\x3\xC8\x3\xC8\x3\xC8\x3"+ + "\xC8\x3\xC8\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xC9\x3\xCA\x3\xCA\x3"+ + "\xCA\x3\xCA\x3\xCA\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3"+ + "\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3\xCC\x3"+ + "\xCD\x3\xCD\x3\xCD\x3\xCD\x3\xCE\x3\xCE\x3\xCE\x3\xCF\x3\xCF\x3\xD0\x3"+ + "\xD0\x3\xD1\x3\xD1\x3\xD2\x3\xD2\x3\xD2\x3\xD2\x5\xD2\x83C\n\xD2\x3\xD3"+ + "\x3\xD3\x3\xD4\x3\xD4\x3\xD4\x3\xD4\x5\xD4\x844\n\xD4\x3\xD5\x3\xD5\x3"+ + "\xD6\x3\xD6\x3\xD7\x3\xD7\x3\xD8\x3\xD8\x3\xD9\x3\xD9\x3\xD9\x3\xD9\x5"+ + "\xD9\x852\n\xD9\x3\xDA\x3\xDA\x3\xDB\x3\xDB\x3\xDC\x3\xDC\x3\xDD\x3\xDD"+ + "\x3\xDE\x3\xDE\x3\xDF\x3\xDF\x3\xDF\x3\xDF\a\xDF\x862\n\xDF\f\xDF\xE\xDF"+ + "\x865\v\xDF\x3\xDF\x3\xDF\x3\xE0\x3\xE0\x3\xE0\x3\xE0\x6\xE0\x86D\n\xE0"+ + "\r\xE0\xE\xE0\x86E\x3\xE0\x5\xE0\x872\n\xE0\x3\xE1\x3\xE1\x3\xE1\x3\xE1"+ + "\x6\xE1\x878\n\xE1\r\xE1\xE\xE1\x879\x3\xE1\x5\xE1\x87D\n\xE1\x3\xE2\x3"+ + "\xE2\x5\xE2\x881\n\xE2\x3\xE2\x3\xE2\x3\xE2\x5\xE2\x886\n\xE2\x3\xE3\x3"+ + "\xE3\x3\xE3\x3\xE3\x3\xE3\x3\xE3\x5\xE3\x88E\n\xE3\x3\xE3\x5\xE3\x891"+ + "\n\xE3\x3\xE3\x3\xE3\x3\xE3\x5\xE3\x896\n\xE3\x5\xE3\x898\n\xE3\x3\xE4"+ + "\x3\xE4\x5\xE4\x89C\n\xE4\x3\xE5\x3\xE5\x3\xE6\x3\xE6\x3\xE7\x3\xE7\x5"+ + "\xE7\x8A4\n\xE7\x3\xE7\x6\xE7\x8A7\n\xE7\r\xE7\xE\xE7\x8A8\x3\xE8\x3\xE8"+ + "\x3\xE9\x3\xE9\x3\xEA\x6\xEA\x8B0\n\xEA\r\xEA\xE\xEA\x8B1\x3\xEB\x3\xEB"+ + "\x3\xEB\x6\xEB\x8B7\n\xEB\r\xEB\xE\xEB\x8B8\x5\xEB\x8BB\n\xEB\x3\xEB\x3"+ + "\xEB\x3\xEB\x3\xEC\x3\xEC\x5\xEC\x8C2\n\xEC\x3\xEC\x3\xEC\x3\xEC\x3\xEC"+ + "\x5\xEC\x8C8\n\xEC\x3\xED\x3\xED\x3\xED\x3\xED\x3\xED\x3\xED\x5\xED\x8D0"+ + "\n\xED\x3\xEE\x6\xEE\x8D3\n\xEE\r\xEE\xE\xEE\x8D4\x3\xEE\x5\xEE\x8D8\n"+ + "\xEE\x3\xEF\x5\xEF\x8DB\n\xEF\x3\xEF\x5\xEF\x8DE\n\xEF\x3\xEF\x5\xEF\x8E1"+ + "\n\xEF\x3\xF0\x3\xF0\x5\xF0\x8E5\n\xF0\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x3"+ + "\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x3\xF1\x5\xF1\x8F3\n\xF1"+ + "\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2\x3\xF2"+ + "\x3\xF2\x5\xF2\x900\n\xF2\x3\xF3\x6\xF3\x903\n\xF3\r\xF3\xE\xF3\x904\x3"+ + "\xF3\x3\xF3\x3\xF3\x6\xF3\x90A\n\xF3\r\xF3\xE\xF3\x90B\x3\xF3\x3\xF3\x6"+ + "\xF3\x910\n\xF3\r\xF3\xE\xF3\x911\x3\xF3\x3\xF3\x6\xF3\x916\n\xF3\r\xF3"+ + "\xE\xF3\x917\x5\xF3\x91A\n\xF3\x3\xF3\x5\xF3\x91D\n\xF3\x5\xF3\x91F\n"+ + "\xF3\x3\xF4\x5\xF4\x922\n\xF4\x3\xF4\x3\xF4\x5\xF4\x926\n\xF4\x3\xF5\x5"+ + "\xF5\x929\n\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5\x3\xF5"+ + "\x5\xF5\x933\n\xF5\x3\xF6\x3\xF6\x3\xF6\x3\xF6\x3\xF6\x3\xF6\x3\xF6\x3"+ + "\xF6\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3\xF7\x3"+ + "\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF8\x3\xF9\x3\xF9\x3\xF9\x3\xF9\x3"+ + "\xF9\x3\xF9\x3\xFA\x3\xFA\x3\xFA\x3\xFA\x3\xFB\x3\xFB\x3\xFB\x3\xFB\x3"+ + "\xFB\x3\xFC\x3\xFC\x3\xFC\x3\xFC\x3\xFC\x3\xFD\x3\xFD\x3\xFD\x3\xFD\x3"+ + "\xFD\x3\xFD\x3\xFD\x3\xFE\x3\xFE\x3\xFE\x3\xFE\x3\xFE\x3\xFE\x3\xFE\x3"+ + "\xFE\x3\xFE\x3\xFE\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3\xFF\x3"+ + "\xFF\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3\x100\x3"+ + "\x100\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101\x3\x101"+ + "\x3\x101\x3\x102\x3\x102\x3\x102\x3\x102\x3\x103\x3\x103\x3\x103\x3\x103"+ + "\x3\x104\x3\x104\x3\x104\x3\x104\x3\x105\x3\x105\x3\x105\x3\x105\x3\x106"+ + "\x3\x106\x3\x106\x3\x106\x3\x107\x3\x107\x3\x107\x3\x107\x3\x108\x3\x108"+ + "\x3\x108\x3\x108\x3\x109\x3\x109\x3\x109\x3\x109\x3\x10A\x3\x10A\x3\x10A"+ + "\x3\x10A\x3\x10B\x3\x10B\x3\x10B\x3\x10B\x3\x10C\x3\x10C\x3\x10C\x3\x10C"+ + "\x3\x10D\x3\x10D\x3\x10D\x5\x10D\x9BA\n\x10D\x3\x10E\x3\x10E\x3\x10F\x3"+ + "\x10F\x3\x110\x3\x110\x3\x111\x3\x111\x6\x111\x9C4\n\x111\r\x111\xE\x111"+ + "\x9C5\x3\x111\x3\x111\x6\x111\x9CA\n\x111\r\x111\xE\x111\x9CB\x3\x111"+ + "\x3\x111\x6\x111\x9D0\n\x111\r\x111\xE\x111\x9D1\x3\x111\x3\x111\x6\x111"+ + "\x9D6\n\x111\r\x111\xE\x111\x9D7\x3\x111\x3\x111\x6\x111\x9DC\n\x111\r"+ + "\x111\xE\x111\x9DD\x3\x111\x3\x111\x3\x112\x3\x112\a\x112\x9E4\n\x112"+ + "\f\x112\xE\x112\x9E7\v\x112\x3\x113\a\x113\x9EA\n\x113\f\x113\xE\x113"+ + "\x9ED\v\x113\x3\x113\x3\x113\a\x113\x9F1\n\x113\f\x113\xE\x113\x9F4\v"+ + "\x113\x3\x113\x5\x113\x9F7\n\x113\x3\x113\x3\x113\x3\x114\x3\x114\x3\x115"+ + "\x3\x115\x3\x116\x3\x116\x3\x117\x3\x117\x3\x118\x3\x118\x3\x119\x3\x119"+ + "\x3\x11A\x3\x11A\x3\x11B\x3\x11B\x3\x11C\x3\x11C\x3\x11D\x3\x11D\x3\x11E"+ + "\x3\x11E\x3\x11F\x3\x11F\x3\x120\x3\x120\x3\x121\x3\x121\x3\x122\x3\x122"+ + "\x3\x123\x3\x123\x3\x124\x3\x124\x3\x125\x3\x125\x3\x126\x3\x126\x3\x127"+ + "\x3\x127\x3\x128\x3\x128\x3\x129\x3\x129\x3\x12A\x3\x12A\x3\x12B\x3\x12B"+ + "\x3\x12C\x3\x12C\x3\x12D\x3\x12D\x3\x12E\x3\x12E\x3\x12F\x3\x12F\x3\x130"+ + "\x3\x130\x3\x131\x3\x131\x2\x2\x2\x132\x3\x2\x3\x5\x2\x4\a\x2\x5\t\x2"+ + "\x6\v\x2\a\r\x2\b\xF\x2\t\x11\x2\n\x13\x2\v\x15\x2\f\x17\x2\r\x19\x2\xE"+ + "\x1B\x2\xF\x1D\x2\x10\x1F\x2\x11!\x2\x12#\x2\x13%\x2\x14\'\x2\x15)\x2"+ + "\x16+\x2\x17-\x2\x18/\x2\x19\x31\x2\x1A\x33\x2\x1B\x35\x2\x1C\x37\x2\x1D"+ + "\x39\x2\x1E;\x2\x1F=\x2 ?\x2!\x41\x2\"\x43\x2#\x45\x2$G\x2%I\x2&K\x2\'"+ + "M\x2(O\x2)Q\x2*S\x2+U\x2,W\x2-Y\x2.[\x2/]\x2\x30_\x2\x31\x61\x2\x32\x63"+ + "\x2\x33\x65\x2\x34g\x2\x35i\x2\x36k\x2\x37m\x2\x38o\x2\x39q\x2:s\x2;u"+ + "\x2{\x2?}\x2@\x7F\x2\x41\x81\x2\x42\x83\x2\x43\x85\x2\x44\x87"+ + "\x2\x45\x89\x2\x46\x8B\x2G\x8D\x2H\x8F\x2I\x91\x2J\x93\x2K\x95\x2L\x97"+ + "\x2M\x99\x2N\x9B\x2O\x9D\x2P\x9F\x2Q\xA1\x2R\xA3\x2S\xA5\x2T\xA7\x2U\xA9"+ + "\x2V\xAB\x2W\xAD\x2X\xAF\x2Y\xB1\x2Z\xB3\x2[\xB5\x2\\\xB7\x2]\xB9\x2^"+ + "\xBB\x2_\xBD\x2`\xBF\x2\x61\xC1\x2\x62\xC3\x2\x63\xC5\x2\x64\xC7\x2\x65"+ + "\xC9\x2\x66\xCB\x2g\xCD\x2h\xCF\x2i\xD1\x2j\xD3\x2k\xD5\x2l\xD7\x2m\xD9"+ + "\x2n\xDB\x2o\xDD\x2p\xDF\x2q\xE1\x2r\xE3\x2s\xE5\x2t\xE7\x2u\xE9\x2v\xEB"+ + "\x2w\xED\x2x\xEF\x2y\xF1\x2z\xF3\x2{\xF5\x2|\xF7\x2}\xF9\x2~\xFB\x2\x7F"+ + "\xFD\x2\x80\xFF\x2\x81\x101\x2\x82\x103\x2\x83\x105\x2\x84\x107\x2\x85"+ + "\x109\x2\x86\x10B\x2\x87\x10D\x2\x88\x10F\x2\x89\x111\x2\x8A\x113\x2\x8B"+ + "\x115\x2\x8C\x117\x2\x8D\x119\x2\x8E\x11B\x2\x8F\x11D\x2\x90\x11F\x2\x91"+ + "\x121\x2\x92\x123\x2\x93\x125\x2\x94\x127\x2\x95\x129\x2\x96\x12B\x2\x97"+ + "\x12D\x2\x98\x12F\x2\x99\x131\x2\x9A\x133\x2\x9B\x135\x2\x9C\x137\x2\x9D"+ + "\x139\x2\x9E\x13B\x2\x9F\x13D\x2\xA0\x13F\x2\xA1\x141\x2\xA2\x143\x2\xA3"+ + "\x145\x2\xA4\x147\x2\xA5\x149\x2\xA6\x14B\x2\xA7\x14D\x2\xA8\x14F\x2\xA9"+ + "\x151\x2\xAA\x153\x2\xAB\x155\x2\xAC\x157\x2\xAD\x159\x2\xAE\x15B\x2\xAF"+ + "\x15D\x2\xB0\x15F\x2\xB1\x161\x2\xB2\x163\x2\xB3\x165\x2\xB4\x167\x2\xB5"+ + "\x169\x2\xB6\x16B\x2\xB7\x16D\x2\xB8\x16F\x2\xB9\x171\x2\xBA\x173\x2\xBB"+ + "\x175\x2\xBC\x177\x2\xBD\x179\x2\xBE\x17B\x2\xBF\x17D\x2\xC0\x17F\x2\xC1"+ + "\x181\x2\xC2\x183\x2\xC3\x185\x2\xC4\x187\x2\xC5\x189\x2\xC6\x18B\x2\xC7"+ + "\x18D\x2\xC8\x18F\x2\xC9\x191\x2\xCA\x193\x2\xCB\x195\x2\xCC\x197\x2\xCD"+ + "\x199\x2\xCE\x19B\x2\xCF\x19D\x2\xD0\x19F\x2\xD1\x1A1\x2\xD2\x1A3\x2\xD3"+ + "\x1A5\x2\xD4\x1A7\x2\xD5\x1A9\x2\xD6\x1AB\x2\xD7\x1AD\x2\xD8\x1AF\x2\xD9"+ + "\x1B1\x2\xDA\x1B3\x2\xDB\x1B5\x2\xDC\x1B7\x2\xDD\x1B9\x2\xDE\x1BB\x2\xDF"+ + "\x1BD\x2\xE0\x1BF\x2\xE1\x1C1\x2\xE2\x1C3\x2\xE3\x1C5\x2\x2\x1C7\x2\xE4"+ + "\x1C9\x2\x2\x1CB\x2\x2\x1CD\x2\x2\x1CF\x2\x2\x1D1\x2\x2\x1D3\x2\x2\x1D5"+ + "\x2\xE5\x1D7\x2\x2\x1D9\x2\x2\x1DB\x2\x2\x1DD\x2\x2\x1DF\x2\x2\x1E1\x2"+ + "\x2\x1E3\x2\x2\x1E5\x2\x2\x1E7\x2\x2\x1E9\x2\x2\x1EB\x2\x2\x1ED\x2\x2"+ + "\x1EF\x2\x2\x1F1\x2\x2\x1F3\x2\x2\x1F5\x2\x2\x1F7\x2\x2\x1F9\x2\x2\x1FB"+ + "\x2\x2\x1FD\x2\x2\x1FF\x2\x2\x201\x2\x2\x203\x2\x2\x205\x2\x2\x207\x2"+ + "\x2\x209\x2\x2\x20B\x2\x2\x20D\x2\x2\x20F\x2\x2\x211\x2\x2\x213\x2\x2"+ + "\x215\x2\x2\x217\x2\x2\x219\x2\xE6\x21B\x2\xE7\x21D\x2\xE8\x21F\x2\xE9"+ + "\x221\x2\xEA\x223\x2\xEB\x225\x2\xEC\x227\x2\x2\x229\x2\x2\x22B\x2\x2"+ + "\x22D\x2\x2\x22F\x2\x2\x231\x2\x2\x233\x2\x2\x235\x2\x2\x237\x2\x2\x239"+ + "\x2\x2\x23B\x2\x2\x23D\x2\x2\x23F\x2\x2\x241\x2\x2\x243\x2\x2\x245\x2"+ + "\x2\x247\x2\x2\x249\x2\x2\x24B\x2\x2\x24D\x2\x2\x24F\x2\x2\x251\x2\x2"+ + "\x253\x2\x2\x255\x2\x2\x257\x2\x2\x259\x2\x2\x25B\x2\x2\x25D\x2\x2\x25F"+ + "\x2\x2\x261\x2\xED\x3\x2,\x5\x2\f\f\xF\xF$$\x3\x2\x32:\x4\x2\x32;\x43"+ + "H\x4\x2\'(``\x5\x2##%%\x42\x42\x4\x2\x46G\x66g\x4\x2--//\x4\x2./\x31\x31"+ + "\x4\x2\x30\x30<<\x5\x2\f\f\xF\xF\x202A\x202B\x4\x2\v\v\"\"\t\x2\v\f\xF"+ + "\xF\"=??\x42\x42]`~~\n\x2\v\f\xF\xF\"\x30<=??\x42\x42]`~~\v\x2\x43\\\x61"+ + "\x61\x63|\xC6\xC6\xD8\xD8\xDE\xDE\xE6\xE6\xF8\xF8\xFE\xFE\x3\x2\x32;\f"+ + "\x2\x32;\x43\\\x61\x61\x63|\xC6\xC6\xD8\xD8\xDE\xDE\xE6\xE6\xF8\xF8\xFE"+ + "\xFE\x4\x2\x43\x43\x63\x63\x4\x2\x44\x44\x64\x64\x4\x2\x45\x45\x65\x65"+ + "\x4\x2\x46\x46\x66\x66\x4\x2GGgg\x4\x2HHhh\x4\x2IIii\x4\x2JJjj\x4\x2K"+ + "Kkk\x4\x2LLll\x4\x2MMmm\x4\x2NNnn\x4\x2OOoo\x4\x2PPpp\x4\x2QQqq\x4\x2"+ + "RRrr\x4\x2SSss\x4\x2TTtt\x4\x2UUuu\x4\x2VVvv\x4\x2WWww\x4\x2XXxx\x4\x2"+ + "YYyy\x4\x2ZZzz\x4\x2[[{{\x4\x2\\\\||\xA77\x2\x3\x3\x2\x2\x2\x2\x5\x3\x2"+ + "\x2\x2\x2\a\x3\x2\x2\x2\x2\t\x3\x2\x2\x2\x2\v\x3\x2\x2\x2\x2\r\x3\x2\x2"+ + "\x2\x2\xF\x3\x2\x2\x2\x2\x11\x3\x2\x2\x2\x2\x13\x3\x2\x2\x2\x2\x15\x3"+ + "\x2\x2\x2\x2\x17\x3\x2\x2\x2\x2\x19\x3\x2\x2\x2\x2\x1B\x3\x2\x2\x2\x2"+ + "\x1D\x3\x2\x2\x2\x2\x1F\x3\x2\x2\x2\x2!\x3\x2\x2\x2\x2#\x3\x2\x2\x2\x2"+ + "%\x3\x2\x2\x2\x2\'\x3\x2\x2\x2\x2)\x3\x2\x2\x2\x2+\x3\x2\x2\x2\x2-\x3"+ + "\x2\x2\x2\x2/\x3\x2\x2\x2\x2\x31\x3\x2\x2\x2\x2\x33\x3\x2\x2\x2\x2\x35"+ + "\x3\x2\x2\x2\x2\x37\x3\x2\x2\x2\x2\x39\x3\x2\x2\x2\x2;\x3\x2\x2\x2\x2"+ + "=\x3\x2\x2\x2\x2?\x3\x2\x2\x2\x2\x41\x3\x2\x2\x2\x2\x43\x3\x2\x2\x2\x2"+ + "\x45\x3\x2\x2\x2\x2G\x3\x2\x2\x2\x2I\x3\x2\x2\x2\x2K\x3\x2\x2\x2\x2M\x3"+ + "\x2\x2\x2\x2O\x3\x2\x2\x2\x2Q\x3\x2\x2\x2\x2S\x3\x2\x2\x2\x2U\x3\x2\x2"+ + "\x2\x2W\x3\x2\x2\x2\x2Y\x3\x2\x2\x2\x2[\x3\x2\x2\x2\x2]\x3\x2\x2\x2\x2"+ + "_\x3\x2\x2\x2\x2\x61\x3\x2\x2\x2\x2\x63\x3\x2\x2\x2\x2\x65\x3\x2\x2\x2"+ + "\x2g\x3\x2\x2\x2\x2i\x3\x2\x2\x2\x2k\x3\x2\x2\x2\x2m\x3\x2\x2\x2\x2o\x3"+ + "\x2\x2\x2\x2q\x3\x2\x2\x2\x2s\x3\x2\x2\x2\x2u\x3\x2\x2\x2\x2w\x3\x2\x2"+ + "\x2\x2y\x3\x2\x2\x2\x2{\x3\x2\x2\x2\x2}\x3\x2\x2\x2\x2\x7F\x3\x2\x2\x2"+ + "\x2\x81\x3\x2\x2\x2\x2\x83\x3\x2\x2\x2\x2\x85\x3\x2\x2\x2\x2\x87\x3\x2"+ + "\x2\x2\x2\x89\x3\x2\x2\x2\x2\x8B\x3\x2\x2\x2\x2\x8D\x3\x2\x2\x2\x2\x8F"+ + "\x3\x2\x2\x2\x2\x91\x3\x2\x2\x2\x2\x93\x3\x2\x2\x2\x2\x95\x3\x2\x2\x2"+ + "\x2\x97\x3\x2\x2\x2\x2\x99\x3\x2\x2\x2\x2\x9B\x3\x2\x2\x2\x2\x9D\x3\x2"+ + "\x2\x2\x2\x9F\x3\x2\x2\x2\x2\xA1\x3\x2\x2\x2\x2\xA3\x3\x2\x2\x2\x2\xA5"+ + "\x3\x2\x2\x2\x2\xA7\x3\x2\x2\x2\x2\xA9\x3\x2\x2\x2\x2\xAB\x3\x2\x2\x2"+ + "\x2\xAD\x3\x2\x2\x2\x2\xAF\x3\x2\x2\x2\x2\xB1\x3\x2\x2\x2\x2\xB3\x3\x2"+ + "\x2\x2\x2\xB5\x3\x2\x2\x2\x2\xB7\x3\x2\x2\x2\x2\xB9\x3\x2\x2\x2\x2\xBB"+ + "\x3\x2\x2\x2\x2\xBD\x3\x2\x2\x2\x2\xBF\x3\x2\x2\x2\x2\xC1\x3\x2\x2\x2"+ + "\x2\xC3\x3\x2\x2\x2\x2\xC5\x3\x2\x2\x2\x2\xC7\x3\x2\x2\x2\x2\xC9\x3\x2"+ + "\x2\x2\x2\xCB\x3\x2\x2\x2\x2\xCD\x3\x2\x2\x2\x2\xCF\x3\x2\x2\x2\x2\xD1"+ + "\x3\x2\x2\x2\x2\xD3\x3\x2\x2\x2\x2\xD5\x3\x2\x2\x2\x2\xD7\x3\x2\x2\x2"+ + "\x2\xD9\x3\x2\x2\x2\x2\xDB\x3\x2\x2\x2\x2\xDD\x3\x2\x2\x2\x2\xDF\x3\x2"+ + "\x2\x2\x2\xE1\x3\x2\x2\x2\x2\xE3\x3\x2\x2\x2\x2\xE5\x3\x2\x2\x2\x2\xE7"+ + "\x3\x2\x2\x2\x2\xE9\x3\x2\x2\x2\x2\xEB\x3\x2\x2\x2\x2\xED\x3\x2\x2\x2"+ + "\x2\xEF\x3\x2\x2\x2\x2\xF1\x3\x2\x2\x2\x2\xF3\x3\x2\x2\x2\x2\xF5\x3\x2"+ + "\x2\x2\x2\xF7\x3\x2\x2\x2\x2\xF9\x3\x2\x2\x2\x2\xFB\x3\x2\x2\x2\x2\xFD"+ + "\x3\x2\x2\x2\x2\xFF\x3\x2\x2\x2\x2\x101\x3\x2\x2\x2\x2\x103\x3\x2\x2\x2"+ + "\x2\x105\x3\x2\x2\x2\x2\x107\x3\x2\x2\x2\x2\x109\x3\x2\x2\x2\x2\x10B\x3"+ + "\x2\x2\x2\x2\x10D\x3\x2\x2\x2\x2\x10F\x3\x2\x2\x2\x2\x111\x3\x2\x2\x2"+ + "\x2\x113\x3\x2\x2\x2\x2\x115\x3\x2\x2\x2\x2\x117\x3\x2\x2\x2\x2\x119\x3"+ + "\x2\x2\x2\x2\x11B\x3\x2\x2\x2\x2\x11D\x3\x2\x2\x2\x2\x11F\x3\x2\x2\x2"+ + "\x2\x121\x3\x2\x2\x2\x2\x123\x3\x2\x2\x2\x2\x125\x3\x2\x2\x2\x2\x127\x3"+ + "\x2\x2\x2\x2\x129\x3\x2\x2\x2\x2\x12B\x3\x2\x2\x2\x2\x12D\x3\x2\x2\x2"+ + "\x2\x12F\x3\x2\x2\x2\x2\x131\x3\x2\x2\x2\x2\x133\x3\x2\x2\x2\x2\x135\x3"+ + "\x2\x2\x2\x2\x137\x3\x2\x2\x2\x2\x139\x3\x2\x2\x2\x2\x13B\x3\x2\x2\x2"+ + "\x2\x13D\x3\x2\x2\x2\x2\x13F\x3\x2\x2\x2\x2\x141\x3\x2\x2\x2\x2\x143\x3"+ + "\x2\x2\x2\x2\x145\x3\x2\x2\x2\x2\x147\x3\x2\x2\x2\x2\x149\x3\x2\x2\x2"+ + "\x2\x14B\x3\x2\x2\x2\x2\x14D\x3\x2\x2\x2\x2\x14F\x3\x2\x2\x2\x2\x151\x3"+ + "\x2\x2\x2\x2\x153\x3\x2\x2\x2\x2\x155\x3\x2\x2\x2\x2\x157\x3\x2\x2\x2"+ + "\x2\x159\x3\x2\x2\x2\x2\x15B\x3\x2\x2\x2\x2\x15D\x3\x2\x2\x2\x2\x15F\x3"+ + "\x2\x2\x2\x2\x161\x3\x2\x2\x2\x2\x163\x3\x2\x2\x2\x2\x165\x3\x2\x2\x2"+ + "\x2\x167\x3\x2\x2\x2\x2\x169\x3\x2\x2\x2\x2\x16B\x3\x2\x2\x2\x2\x16D\x3"+ + "\x2\x2\x2\x2\x16F\x3\x2\x2\x2\x2\x171\x3\x2\x2\x2\x2\x173\x3\x2\x2\x2"+ + "\x2\x175\x3\x2\x2\x2\x2\x177\x3\x2\x2\x2\x2\x179\x3\x2\x2\x2\x2\x17B\x3"+ + "\x2\x2\x2\x2\x17D\x3\x2\x2\x2\x2\x17F\x3\x2\x2\x2\x2\x181\x3\x2\x2\x2"+ + "\x2\x183\x3\x2\x2\x2\x2\x185\x3\x2\x2\x2\x2\x187\x3\x2\x2\x2\x2\x189\x3"+ + "\x2\x2\x2\x2\x18B\x3\x2\x2\x2\x2\x18D\x3\x2\x2\x2\x2\x18F\x3\x2\x2\x2"+ + "\x2\x191\x3\x2\x2\x2\x2\x193\x3\x2\x2\x2\x2\x195\x3\x2\x2\x2\x2\x197\x3"+ + "\x2\x2\x2\x2\x199\x3\x2\x2\x2\x2\x19B\x3\x2\x2\x2\x2\x19D\x3\x2\x2\x2"+ + "\x2\x19F\x3\x2\x2\x2\x2\x1A1\x3\x2\x2\x2\x2\x1A3\x3\x2\x2\x2\x2\x1A5\x3"+ + "\x2\x2\x2\x2\x1A7\x3\x2\x2\x2\x2\x1A9\x3\x2\x2\x2\x2\x1AB\x3\x2\x2\x2"+ + "\x2\x1AD\x3\x2\x2\x2\x2\x1AF\x3\x2\x2\x2\x2\x1B1\x3\x2\x2\x2\x2\x1B3\x3"+ + "\x2\x2\x2\x2\x1B5\x3\x2\x2\x2\x2\x1B7\x3\x2\x2\x2\x2\x1B9\x3\x2\x2\x2"+ + "\x2\x1BB\x3\x2\x2\x2\x2\x1BD\x3\x2\x2\x2\x2\x1BF\x3\x2\x2\x2\x2\x1C1\x3"+ + "\x2\x2\x2\x2\x1C3\x3\x2\x2\x2\x2\x1C7\x3\x2\x2\x2\x2\x1D5\x3\x2\x2\x2"+ + "\x2\x219\x3\x2\x2\x2\x2\x21B\x3\x2\x2\x2\x2\x21D\x3\x2\x2\x2\x2\x21F\x3"+ + "\x2\x2\x2\x2\x221\x3\x2\x2\x2\x2\x223\x3\x2\x2\x2\x2\x225\x3\x2\x2\x2"+ + "\x2\x261\x3\x2\x2\x2\x3\x263\x3\x2\x2\x2\x5\x267\x3\x2\x2\x2\a\x26B\x3"+ + "\x2\x2\x2\t\x271\x3\x2\x2\x2\v\x273\x3\x2\x2\x2\r\x276\x3\x2\x2\x2\xF"+ + "\x27C\x3\x2\x2\x2\x11\x282\x3\x2\x2\x2\x13\x287\x3\x2\x2\x2\x15\x28D\x3"+ + "\x2\x2\x2\x17\x292\x3\x2\x2\x2\x19\x297\x3\x2\x2\x2\x1B\x29C\x3\x2\x2"+ + "\x2\x1D\x2A3\x3\x2\x2\x2\x1F\x2A8\x3\x2\x2\x2!\x2B0\x3\x2\x2\x2#\x2B8"+ + "\x3\x2\x2\x2%\x2BD\x3\x2\x2\x2\'\x2C2\x3\x2\x2\x2)\x2CB\x3\x2\x2\x2+\x2D0"+ + "\x3\x2\x2\x2-\x2D6\x3\x2\x2\x2/\x2DC\x3\x2\x2\x2\x31\x2E5\x3\x2\x2\x2"+ + "\x33\x2EA\x3\x2\x2\x2\x35\x2EE\x3\x2\x2\x2\x37\x2F5\x3\x2\x2\x2\x39\x2F9"+ + "\x3\x2\x2\x2;\x300\x3\x2\x2\x2=\x304\x3\x2\x2\x2?\x309\x3\x2\x2\x2\x41"+ + "\x312\x3\x2\x2\x2\x43\x31A\x3\x2\x2\x2\x45\x31F\x3\x2\x2\x2G\x326\x3\x2"+ + "\x2\x2I\x32B\x3\x2\x2\x2K\x331\x3\x2\x2\x2M\x335\x3\x2\x2\x2O\x33C\x3"+ + "\x2\x2\x2Q\x33E\x3\x2\x2\x2S\x340\x3\x2\x2\x2U\x342\x3\x2\x2\x2W\x344"+ + "\x3\x2\x2\x2Y\x346\x3\x2\x2\x2[\x348\x3\x2\x2\x2]\x34A\x3\x2\x2\x2_\x34C"+ + "\x3\x2\x2\x2\x61\x34E\x3\x2\x2\x2\x63\x350\x3\x2\x2\x2\x65\x357\x3\x2"+ + "\x2\x2g\x361\x3\x2\x2\x2i\x367\x3\x2\x2\x2k\x36B\x3\x2\x2\x2m\x375\x3"+ + "\x2\x2\x2o\x37C\x3\x2\x2\x2q\x37F\x3\x2\x2\x2s\x385\x3\x2\x2\x2u\x38C"+ + "\x3\x2\x2\x2w\x394\x3\x2\x2\x2y\x39A\x3\x2\x2\x2{\x3A0\x3\x2\x2\x2}\x3A5"+ + "\x3\x2\x2\x2\x7F\x3AA\x3\x2\x2\x2\x81\x3AF\x3\x2\x2\x2\x83\x3B5\x3\x2"+ + "\x2\x2\x85\x3BB\x3\x2\x2\x2\x87\x3C1\x3\x2\x2\x2\x89\x3CA\x3\x2\x2\x2"+ + "\x8B\x3CF\x3\x2\x2\x2\x8D\x3D7\x3\x2\x2\x2\x8F\x3DF\x3\x2\x2\x2\x91\x3E7"+ + "\x3\x2\x2\x2\x93\x3EF\x3\x2\x2\x2\x95\x3F6\x3\x2\x2\x2\x97\x3FD\x3\x2"+ + "\x2\x2\x99\x404\x3\x2\x2\x2\x9B\x40B\x3\x2\x2\x2\x9D\x415\x3\x2\x2\x2"+ + "\x9F\x41F\x3\x2\x2\x2\xA1\x426\x3\x2\x2\x2\xA3\x42D\x3\x2\x2\x2\xA5\x434"+ + "\x3\x2\x2\x2\xA7\x43B\x3\x2\x2\x2\xA9\x43F\x3\x2\x2\x2\xAB\x442\x3\x2"+ + "\x2\x2\xAD\x449\x3\x2\x2\x2\xAF\x44E\x3\x2\x2\x2\xB1\x453\x3\x2\x2\x2"+ + "\xB3\x45A\x3\x2\x2\x2\xB5\x460\x3\x2\x2\x2\xB7\x46D\x3\x2\x2\x2\xB9\x47F"+ + "\x3\x2\x2\x2\xBB\x48C\x3\x2\x2\x2\xBD\x49E\x3\x2\x2\x2\xBF\x4AE\x3\x2"+ + "\x2\x2\xC1\x4BB\x3\x2\x2\x2\xC3\x4C8\x3\x2\x2\x2\xC5\x4D6\x3\x2\x2\x2"+ + "\xC7\x4DA\x3\x2\x2\x2\xC9\x4DF\x3\x2\x2\x2\xCB\x4E3\x3\x2\x2\x2\xCD\x4E9"+ + "\x3\x2\x2\x2\xCF\x4EF\x3\x2\x2\x2\xD1\x4F5\x3\x2\x2\x2\xD3\x502\x3\x2"+ + "\x2\x2\xD5\x510\x3\x2\x2\x2\xD7\x523\x3\x2\x2\x2\xD9\x536\x3\x2\x2\x2"+ + "\xDB\x544\x3\x2\x2\x2\xDD\x54A\x3\x2\x2\x2\xDF\x551\x3\x2\x2\x2\xE1\x555"+ + "\x3\x2\x2\x2\xE3\x55E\x3\x2\x2\x2\xE5\x562\x3\x2\x2\x2\xE7\x569\x3\x2"+ + "\x2\x2\xE9\x56F\x3\x2\x2\x2\xEB\x574\x3\x2\x2\x2\xED\x577\x3\x2\x2\x2"+ + "\xEF\x57B\x3\x2\x2\x2\xF1\x586\x3\x2\x2\x2\xF3\x589\x3\x2\x2\x2\xF5\x58F"+ + "\x3\x2\x2\x2\xF7\x592\x3\x2\x2\x2\xF9\x59A\x3\x2\x2\x2\xFB\x59F\x3\x2"+ + "\x2\x2\xFD\x5A4\x3\x2\x2\x2\xFF\x5A9\x3\x2\x2\x2\x101\x5AD\x3\x2\x2\x2"+ + "\x103\x5B1\x3\x2\x2\x2\x105\x5B6\x3\x2\x2\x2\x107\x5C6\x3\x2\x2\x2\x109"+ + "\x5D5\x3\x2\x2\x2\x10B\x5E5\x3\x2\x2\x2\x10D\x5FF\x3\x2\x2\x2\x10F\x604"+ + "\x3\x2\x2\x2\x111\x607\x3\x2\x2\x2\x113\x60B\x3\x2\x2\x2\x115\x60F\x3"+ + "\x2\x2\x2\x117\x614\x3\x2\x2\x2\x119\x619\x3\x2\x2\x2\x11B\x61D\x3\x2"+ + "\x2\x2\x11D\x621\x3\x2\x2\x2\x11F\x629\x3\x2\x2\x2\x121\x62E\x3\x2\x2"+ + "\x2\x123\x635\x3\x2\x2\x2\x125\x638\x3\x2\x2\x2\x127\x646\x3\x2\x2\x2"+ + "\x129\x65F\x3\x2\x2\x2\x12B\x664\x3\x2\x2\x2\x12D\x66D\x3\x2\x2\x2\x12F"+ + "\x67E\x3\x2\x2\x2\x131\x693\x3\x2\x2\x2\x133\x6A7\x3\x2\x2\x2\x135\x6C7"+ + "\x3\x2\x2\x2\x137\x6CA\x3\x2\x2\x2\x139\x6D1\x3\x2\x2\x2\x13B\x6DC\x3"+ + "\x2\x2\x2\x13D\x6E5\x3\x2\x2\x2\x13F\x6EB\x3\x2\x2\x2\x141\x6F3\x3\x2"+ + "\x2\x2\x143\x705\x3\x2\x2\x2\x145\x717\x3\x2\x2\x2\x147\x729\x3\x2\x2"+ + "\x2\x149\x731\x3\x2\x2\x2\x14B\x738\x3\x2\x2\x2\x14D\x73C\x3\x2\x2\x2"+ + "\x14F\x743\x3\x2\x2\x2\x151\x74E\x3\x2\x2\x2\x153\x753\x3\x2\x2\x2\x155"+ + "\x763\x3\x2\x2\x2\x157\x769\x3\x2\x2\x2\x159\x76D\x3\x2\x2\x2\x15B\x773"+ + "\x3\x2\x2\x2\x15D\x77A\x3\x2\x2\x2\x15F\x781\x3\x2\x2\x2\x161\x786\x3"+ + "\x2\x2\x2\x163\x78B\x3\x2\x2\x2\x165\x792\x3\x2\x2\x2\x167\x796\x3\x2"+ + "\x2\x2\x169\x79D\x3\x2\x2\x2\x16B\x7A4\x3\x2\x2\x2\x16D\x7A8\x3\x2\x2"+ + "\x2\x16F\x7AF\x3\x2\x2\x2\x171\x7B4\x3\x2\x2\x2\x173\x7B9\x3\x2\x2\x2"+ + "\x175\x7C0\x3\x2\x2\x2\x177\x7C4\x3\x2\x2\x2\x179\x7C8\x3\x2\x2\x2\x17B"+ + "\x7CD\x3\x2\x2\x2\x17D\x7D2\x3\x2\x2\x2\x17F\x7D5\x3\x2\x2\x2\x181\x7DA"+ + "\x3\x2\x2\x2\x183\x7DF\x3\x2\x2\x2\x185\x7E6\x3\x2\x2\x2\x187\x7ED\x3"+ + "\x2\x2\x2\x189\x7F3\x3\x2\x2\x2\x18B\x7FB\x3\x2\x2\x2\x18D\x803\x3\x2"+ + "\x2\x2\x18F\x808\x3\x2\x2\x2\x191\x80E\x3\x2\x2\x2\x193\x814\x3\x2\x2"+ + "\x2\x195\x819\x3\x2\x2\x2\x197\x824\x3\x2\x2\x2\x199\x82A\x3\x2\x2\x2"+ + "\x19B\x82E\x3\x2\x2\x2\x19D\x831\x3\x2\x2\x2\x19F\x833\x3\x2\x2\x2\x1A1"+ + "\x835\x3\x2\x2\x2\x1A3\x83B\x3\x2\x2\x2\x1A5\x83D\x3\x2\x2\x2\x1A7\x843"+ + "\x3\x2\x2\x2\x1A9\x845\x3\x2\x2\x2\x1AB\x847\x3\x2\x2\x2\x1AD\x849\x3"+ + "\x2\x2\x2\x1AF\x84B\x3\x2\x2\x2\x1B1\x851\x3\x2\x2\x2\x1B3\x853\x3\x2"+ + "\x2\x2\x1B5\x855\x3\x2\x2\x2\x1B7\x857\x3\x2\x2\x2\x1B9\x859\x3\x2\x2"+ + "\x2\x1BB\x85B\x3\x2\x2\x2\x1BD\x85D\x3\x2\x2\x2\x1BF\x868\x3\x2\x2\x2"+ + "\x1C1\x873\x3\x2\x2\x2\x1C3\x885\x3\x2\x2\x2\x1C5\x897\x3\x2\x2\x2\x1C7"+ + "\x899\x3\x2\x2\x2\x1C9\x89D\x3\x2\x2\x2\x1CB\x89F\x3\x2\x2\x2\x1CD\x8A1"+ + "\x3\x2\x2\x2\x1CF\x8AA\x3\x2\x2\x2\x1D1\x8AC\x3\x2\x2\x2\x1D3\x8AF\x3"+ + "\x2\x2\x2\x1D5\x8B3\x3\x2\x2\x2\x1D7\x8C7\x3\x2\x2\x2\x1D9\x8C9\x3\x2"+ + "\x2\x2\x1DB\x8D7\x3\x2\x2\x2\x1DD\x8DA\x3\x2\x2\x2\x1DF\x8E4\x3\x2\x2"+ + "\x2\x1E1\x8F2\x3\x2\x2\x2\x1E3\x8FF\x3\x2\x2\x2\x1E5\x91E\x3\x2\x2\x2"+ + "\x1E7\x921\x3\x2\x2\x2\x1E9\x928\x3\x2\x2\x2\x1EB\x934\x3\x2\x2\x2\x1ED"+ + "\x93C\x3\x2\x2\x2\x1EF\x945\x3\x2\x2\x2\x1F1\x94B\x3\x2\x2\x2\x1F3\x951"+ + "\x3\x2\x2\x2\x1F5\x955\x3\x2\x2\x2\x1F7\x95A\x3\x2\x2\x2\x1F9\x95F\x3"+ + "\x2\x2\x2\x1FB\x966\x3\x2\x2\x2\x1FD\x970\x3\x2\x2\x2\x1FF\x978\x3\x2"+ + "\x2\x2\x201\x981\x3\x2\x2\x2\x203\x98A\x3\x2\x2\x2\x205\x98E\x3\x2\x2"+ + "\x2\x207\x992\x3\x2\x2\x2\x209\x996\x3\x2\x2\x2\x20B\x99A\x3\x2\x2\x2"+ + "\x20D\x99E\x3\x2\x2\x2\x20F\x9A2\x3\x2\x2\x2\x211\x9A6\x3\x2\x2\x2\x213"+ + "\x9AA\x3\x2\x2\x2\x215\x9AE\x3\x2\x2\x2\x217\x9B2\x3\x2\x2\x2\x219\x9B9"+ + "\x3\x2\x2\x2\x21B\x9BB\x3\x2\x2\x2\x21D\x9BD\x3\x2\x2\x2\x21F\x9BF\x3"+ + "\x2\x2\x2\x221\x9C1\x3\x2\x2\x2\x223\x9E1\x3\x2\x2\x2\x225\x9EB\x3\x2"+ + "\x2\x2\x227\x9FA\x3\x2\x2\x2\x229\x9FC\x3\x2\x2\x2\x22B\x9FE\x3\x2\x2"+ + "\x2\x22D\xA00\x3\x2\x2\x2\x22F\xA02\x3\x2\x2\x2\x231\xA04\x3\x2\x2\x2"+ + "\x233\xA06\x3\x2\x2\x2\x235\xA08\x3\x2\x2\x2\x237\xA0A\x3\x2\x2\x2\x239"+ + "\xA0C\x3\x2\x2\x2\x23B\xA0E\x3\x2\x2\x2\x23D\xA10\x3\x2\x2\x2\x23F\xA12"+ + "\x3\x2\x2\x2\x241\xA14\x3\x2\x2\x2\x243\xA16\x3\x2\x2\x2\x245\xA18\x3"+ + "\x2\x2\x2\x247\xA1A\x3\x2\x2\x2\x249\xA1C\x3\x2\x2\x2\x24B\xA1E\x3\x2"+ + "\x2\x2\x24D\xA20\x3\x2\x2\x2\x24F\xA22\x3\x2\x2\x2\x251\xA24\x3\x2\x2"+ + "\x2\x253\xA26\x3\x2\x2\x2\x255\xA28\x3\x2\x2\x2\x257\xA2A\x3\x2\x2\x2"+ + "\x259\xA2C\x3\x2\x2\x2\x25B\xA2E\x3\x2\x2\x2\x25D\xA30\x3\x2\x2\x2\x25F"+ + "\xA32\x3\x2\x2\x2\x261\xA34\x3\x2\x2\x2\x263\x264\x5\x22D\x117\x2\x264"+ + "\x265\x5\x22F\x118\x2\x265\x266\x5\x251\x129\x2\x266\x4\x3\x2\x2\x2\x267"+ + "\x268\x5\x22D\x117\x2\x268\x269\x5\x247\x124\x2\x269\x26A\x5\x25D\x12F"+ + "\x2\x26A\x6\x3\x2\x2\x2\x26B\x26C\x5\x22D\x117\x2\x26C\x26D\x5\x24F\x128"+ + "\x2\x26D\x26E\x5\x24F\x128\x2\x26E\x26F\x5\x22D\x117\x2\x26F\x270\x5\x25D"+ + "\x12F\x2\x270\b\x3\x2\x2\x2\x271\x272\x5\x22F\x118\x2\x272\n\x3\x2\x2"+ + "\x2\x273\x274\x5\x22F\x118\x2\x274\x275\x5\x237\x11C\x2\x275\f\x3\x2\x2"+ + "\x2\x276\x277\x5\x231\x119\x2\x277\x278\x5\x22F\x118\x2\x278\x279\x5\x249"+ + "\x125\x2\x279\x27A\x5\x249\x125\x2\x27A\x27B\x5\x243\x122\x2\x27B\xE\x3"+ + "\x2\x2\x2\x27C\x27D\x5\x231\x119\x2\x27D\x27E\x5\x22F\x118\x2\x27E\x27F"+ + "\x5\x25D\x12F\x2\x27F\x280\x5\x253\x12A\x2\x280\x281\x5\x235\x11B\x2\x281"+ + "\x10\x3\x2\x2\x2\x282\x283\x5\x231\x119\x2\x283\x284\x5\x231\x119\x2\x284"+ + "\x285\x5\x255\x12B\x2\x285\x286\x5\x24F\x128\x2\x286\x12\x3\x2\x2\x2\x287"+ + "\x288\x5\x231\x119\x2\x288\x289\x5\x233\x11A\x2\x289\x28A\x5\x22D\x117"+ + "\x2\x28A\x28B\x5\x253\x12A\x2\x28B\x28C\x5\x235\x11B\x2\x28C\x14\x3\x2"+ + "\x2\x2\x28D\x28E\x5\x231\x119\x2\x28E\x28F\x5\x233\x11A\x2\x28F\x290\x5"+ + "\x22F\x118\x2\x290\x291\x5\x243\x122\x2\x291\x16\x3\x2\x2\x2\x292\x293"+ + "\x5\x231\x119\x2\x293\x294\x5\x233\x11A\x2\x294\x295\x5\x235\x11B\x2\x295"+ + "\x296\x5\x231\x119\x2\x296\x18\x3\x2\x2\x2\x297\x298\x5\x231\x119\x2\x298"+ + "\x299\x5\x23D\x11F\x2\x299\x29A\x5\x247\x124\x2\x29A\x29B\x5\x253\x12A"+ + "\x2\x29B\x1A\x3\x2\x2\x2\x29C\x29D\x5\x231\x119\x2\x29D\x29E\x5\x23D\x11F"+ + "\x2\x29E\x29F\x5\x24F\x128\x2\x29F\x2A0\x5\x231\x119\x2\x2A0\x2A1\x5\x243"+ + "\x122\x2\x2A1\x2A2\x5\x235\x11B\x2\x2A2\x1C\x3\x2\x2\x2\x2A3\x2A4\x5\x231"+ + "\x119\x2\x2A4\x2A5\x5\x243\x122\x2\x2A5\x2A6\x5\x247\x124\x2\x2A6\x2A7"+ + "\x5\x239\x11D\x2\x2A7\x1E\x3\x2\x2\x2\x2A8\x2A9\x5\x231\x119\x2\x2A9\x2AA"+ + "\x5\x243\x122\x2\x2AA\x2AB\x5\x247\x124\x2\x2AB\x2AC\x5\x239\x11D\x2\x2AC"+ + "\x2AD\x5\x243\x122\x2\x2AD\x2AE\x5\x247\x124\x2\x2AE\x2AF\x5\x239\x11D"+ + "\x2\x2AF \x3\x2\x2\x2\x2B0\x2B1\x5\x231\x119\x2\x2B1\x2B2\x5\x243\x122"+ + "\x2\x2B2\x2B3\x5\x247\x124\x2\x2B3\x2B4\x5\x239\x11D\x2\x2B4\x2B5\x5\x24B"+ + "\x126\x2\x2B5\x2B6\x5\x253\x12A\x2\x2B6\x2B7\x5\x24F\x128\x2\x2B7\"\x3"+ + "\x2\x2\x2\x2B8\x2B9\x5\x231\x119\x2\x2B9\x2BA\x5\x251\x129\x2\x2BA\x2BB"+ + "\x5\x247\x124\x2\x2BB\x2BC\x5\x239\x11D\x2\x2BC$\x3\x2\x2\x2\x2BD\x2BE"+ + "\x5\x231\x119\x2\x2BE\x2BF\x5\x251\x129\x2\x2BF\x2C0\x5\x253\x12A\x2\x2C0"+ + "\x2C1\x5\x24F\x128\x2\x2C1&\x3\x2\x2\x2\x2C2\x2C3\x5\x231\x119\x2\x2C3"+ + "\x2C4\x5\x255\x12B\x2\x2C4\x2C5\x5\x24F\x128\x2\x2C5\x2C6\x5\x24F\x128"+ + "\x2\x2C6\x2C7\x5\x235\x11B\x2\x2C7\x2C8\x5\x247\x124\x2\x2C8\x2C9\x5\x231"+ + "\x119\x2\x2C9\x2CA\x5\x25D\x12F\x2\x2CA(\x3\x2\x2\x2\x2CB\x2CC\x5\x231"+ + "\x119\x2\x2CC\x2CD\x5\x257\x12C\x2\x2CD\x2CE\x5\x22D\x117\x2\x2CE\x2CF"+ + "\x5\x24F\x128\x2\x2CF*\x3\x2\x2\x2\x2D0\x2D1\x5\x231\x119\x2\x2D1\x2D2"+ + "\x5\x257\x12C\x2\x2D2\x2D3\x5\x235\x11B\x2\x2D3\x2D4\x5\x24F\x128\x2\x2D4"+ + "\x2D5\x5\x24F\x128\x2\x2D5,\x3\x2\x2\x2\x2D6\x2D7\x5\x233\x11A\x2\x2D7"+ + "\x2D8\x5\x235\x11B\x2\x2D8\x2D9\x5\x22F\x118\x2\x2D9\x2DA\x5\x255\x12B"+ + "\x2\x2DA\x2DB\x5\x239\x11D\x2\x2DB.\x3\x2\x2\x2\x2DC\x2DD\x5\x233\x11A"+ + "\x2\x2DD\x2DE\x5\x249\x125\x2\x2DE\x2DF\x5\x235\x11B\x2\x2DF\x2E0\x5\x257"+ + "\x12C\x2\x2E0\x2E1\x5\x235\x11B\x2\x2E1\x2E2\x5\x247\x124\x2\x2E2\x2E3"+ + "\x5\x253\x12A\x2\x2E3\x2E4\x5\x251\x129\x2\x2E4\x30\x3\x2\x2\x2\x2E5\x2E6"+ + "\x5\x235\x11B\x2\x2E6\x2E7\x5\x25B\x12E\x2\x2E7\x2E8\x5\x23D\x11F\x2\x2E8"+ + "\x2E9\x5\x253\x12A\x2\x2E9\x32\x3\x2\x2\x2\x2EA\x2EB\x5\x237\x11C\x2\x2EB"+ + "\x2EC\x5\x23D\x11F\x2\x2EC\x2ED\x5\x25B\x12E\x2\x2ED\x34\x3\x2\x2\x2\x2EE"+ + "\x2EF\x5\x23D\x11F\x2\x2EF\x2F0\x5\x247\x124\x2\x2F0\x2F1\x5\x24B\x126"+ + "\x2\x2F1\x2F2\x5\x255\x12B\x2\x2F2\x2F3\x5\x253\x12A\x2\x2F3\x2F4\x5\x22F"+ + "\x118\x2\x2F4\x36\x3\x2\x2\x2\x2F5\x2F6\x5\x23D\x11F\x2\x2F6\x2F7\x5\x247"+ + "\x124\x2\x2F7\x2F8\x5\x253\x12A\x2\x2F8\x38\x3\x2\x2\x2\x2F9\x2FA\x5\x243"+ + "\x122\x2\x2FA\x2FB\x5\x22F\x118\x2\x2FB\x2FC\x5\x249\x125\x2\x2FC\x2FD"+ + "\x5\x255\x12B\x2\x2FD\x2FE\x5\x247\x124\x2\x2FE\x2FF\x5\x233\x11A\x2\x2FF"+ + ":\x3\x2\x2\x2\x300\x301\x5\x243\x122\x2\x301\x302\x5\x235\x11B\x2\x302"+ + "\x303\x5\x247\x124\x2\x303<\x3\x2\x2\x2\x304\x305\x5\x243\x122\x2\x305"+ + "\x306\x5\x235\x11B\x2\x306\x307\x5\x247\x124\x2\x307\x308\x5\x22F\x118"+ + "\x2\x308>\x3\x2\x2\x2\x309\x30A\x5\x243\x122\x2\x30A\x30B\x5\x249\x125"+ + "\x2\x30B\x30C\x5\x247\x124\x2\x30C\x30D\x5\x239\x11D\x2\x30D\x30E\x5\x243"+ + "\x122\x2\x30E\x30F\x5\x249\x125\x2\x30F\x310\x5\x247\x124\x2\x310\x311"+ + "\x5\x239\x11D\x2\x311@\x3\x2\x2\x2\x312\x313\x5\x243\x122\x2\x313\x314"+ + "\x5\x249\x125\x2\x314\x315\x5\x247\x124\x2\x315\x316\x5\x239\x11D\x2\x316"+ + "\x317\x5\x24B\x126\x2\x317\x318\x5\x253\x12A\x2\x318\x319\x5\x24F\x128"+ + "\x2\x319\x42\x3\x2\x2\x2\x31A\x31B\x5\x245\x123\x2\x31B\x31C\x5\x23D\x11F"+ + "\x2\x31C\x31D\x5\x233\x11A\x2\x31D\x31E\x5\x22F\x118\x2\x31E\x44\x3\x2"+ + "\x2\x2\x31F\x320\x5\x249\x125\x2\x320\x321\x5\x24B\x126\x2\x321\x322\x5"+ + "\x253\x12A\x2\x322\x323\x5\x23D\x11F\x2\x323\x324\x5\x249\x125\x2\x324"+ + "\x325\x5\x247\x124\x2\x325\x46\x3\x2\x2\x2\x326\x327\x5\x24B\x126\x2\x327"+ + "\x328\x5\x251\x129\x2\x328\x329\x5\x235\x11B\x2\x329\x32A\x5\x253\x12A"+ + "\x2\x32AH\x3\x2\x2\x2\x32B\x32C\x5\x251\x129\x2\x32C\x32D\x5\x231\x119"+ + "\x2\x32D\x32E\x5\x22D\x117\x2\x32E\x32F\x5\x243\x122\x2\x32F\x330\x5\x235"+ + "\x11B\x2\x330J\x3\x2\x2\x2\x331\x332\x5\x251\x129\x2\x332\x333\x5\x239"+ + "\x11D\x2\x333\x334\x5\x247\x124\x2\x334L\x3\x2\x2\x2\x335\x336\x5\x255"+ + "\x12B\x2\x336\x337\x5\x22F\x118\x2\x337\x338\x5\x249\x125\x2\x338\x339"+ + "\x5\x255\x12B\x2\x339\x33A\x5\x247\x124\x2\x33A\x33B\x5\x233\x11A\x2\x33B"+ + "N\x3\x2\x2\x2\x33C\x33D\a.\x2\x2\x33DP\x3\x2\x2\x2\x33E\x33F\a<\x2\x2"+ + "\x33FR\x3\x2\x2\x2\x340\x341\a=\x2\x2\x341T\x3\x2\x2\x2\x342\x343\a#\x2"+ + "\x2\x343V\x3\x2\x2\x2\x344\x345\a\x30\x2\x2\x345X\x3\x2\x2\x2\x346\x347"+ + "\a%\x2\x2\x347Z\x3\x2\x2\x2\x348\x349\a\x42\x2\x2\x349\\\x3\x2\x2\x2\x34A"+ + "\x34B\a\'\x2\x2\x34B^\x3\x2\x2\x2\x34C\x34D\a&\x2\x2\x34D`\x3\x2\x2\x2"+ + "\x34E\x34F\a(\x2\x2\x34F\x62\x3\x2\x2\x2\x350\x351\x5\x22D\x117\x2\x351"+ + "\x352\x5\x231\x119\x2\x352\x353\x5\x231\x119\x2\x353\x354\x5\x235\x11B"+ + "\x2\x354\x355\x5\x251\x129\x2\x355\x356\x5\x251\x129\x2\x356\x64\x3\x2"+ + "\x2\x2\x357\x358\x5\x22D\x117\x2\x358\x359\x5\x233\x11A\x2\x359\x35A\x5"+ + "\x233\x11A\x2\x35A\x35B\x5\x24F\x128\x2\x35B\x35C\x5\x235\x11B\x2\x35C"+ + "\x35D\x5\x251\x129\x2\x35D\x35E\x5\x251\x129\x2\x35E\x35F\x5\x249\x125"+ + "\x2\x35F\x360\x5\x237\x11C\x2\x360\x66\x3\x2\x2\x2\x361\x362\x5\x22D\x117"+ + "\x2\x362\x363\x5\x243\x122\x2\x363\x364\x5\x23D\x11F\x2\x364\x365\x5\x22D"+ + "\x117\x2\x365\x366\x5\x251\x129\x2\x366h\x3\x2\x2\x2\x367\x368\x5\x22D"+ + "\x117\x2\x368\x369\x5\x247\x124\x2\x369\x36A\x5\x233\x11A\x2\x36Aj\x3"+ + "\x2\x2\x2\x36B\x36C\x5\x22D\x117\x2\x36C\x36D\x5\x253\x12A\x2\x36D\x36E"+ + "\x5\x253\x12A\x2\x36E\x36F\x5\x24F\x128\x2\x36F\x370\x5\x23D\x11F\x2\x370"+ + "\x371\x5\x22F\x118\x2\x371\x372\x5\x255\x12B\x2\x372\x373\x5\x253\x12A"+ + "\x2\x373\x374\x5\x235\x11B\x2\x374l\x3\x2\x2\x2\x375\x376\x5\x22D\x117"+ + "\x2\x376\x377\x5\x24B\x126\x2\x377\x378\x5\x24B\x126\x2\x378\x379\x5\x235"+ + "\x11B\x2\x379\x37A\x5\x247\x124\x2\x37A\x37B\x5\x233\x11A\x2\x37Bn\x3"+ + "\x2\x2\x2\x37C\x37D\x5\x22D\x117\x2\x37D\x37E\x5\x251\x129\x2\x37Ep\x3"+ + "\x2\x2\x2\x37F\x380\x5\x22F\x118\x2\x380\x381\x5\x235\x11B\x2\x381\x382"+ + "\x5\x239\x11D\x2\x382\x383\x5\x23D\x11F\x2\x383\x384\x5\x247\x124\x2\x384"+ + "r\x3\x2\x2\x2\x385\x386\x5\x22F\x118\x2\x386\x387\x5\x23D\x11F\x2\x387"+ + "\x388\x5\x247\x124\x2\x388\x389\x5\x22D\x117\x2\x389\x38A\x5\x24F\x128"+ + "\x2\x38A\x38B\x5\x25D\x12F\x2\x38Bt\x3\x2\x2\x2\x38C\x38D\x5\x22F\x118"+ + "\x2\x38D\x38E\x5\x249\x125\x2\x38E\x38F\x5\x249\x125\x2\x38F\x390\x5\x243"+ + "\x122\x2\x390\x391\x5\x235\x11B\x2\x391\x392\x5\x22D\x117\x2\x392\x393"+ + "\x5\x247\x124\x2\x393v\x3\x2\x2\x2\x394\x395\x5\x22F\x118\x2\x395\x396"+ + "\x5\x25D\x12F\x2\x396\x397\x5\x257\x12C\x2\x397\x398\x5\x22D\x117\x2\x398"+ + "\x399\x5\x243\x122\x2\x399x\x3\x2\x2\x2\x39A\x39B\x5\x22F\x118\x2\x39B"+ + "\x39C\x5\x25D\x12F\x2\x39C\x39D\x5\x24F\x128\x2\x39D\x39E\x5\x235\x11B"+ + "\x2\x39E\x39F\x5\x237\x11C\x2\x39Fz\x3\x2\x2\x2\x3A0\x3A1\x5\x22F\x118"+ + "\x2\x3A1\x3A2\x5\x25D\x12F\x2\x3A2\x3A3\x5\x253\x12A\x2\x3A3\x3A4\x5\x235"+ + "\x11B\x2\x3A4|\x3\x2\x2\x2\x3A5\x3A6\x5\x231\x119\x2\x3A6\x3A7\x5\x22D"+ + "\x117\x2\x3A7\x3A8\x5\x243\x122\x2\x3A8\x3A9\x5\x243\x122\x2\x3A9~\x3"+ + "\x2\x2\x2\x3AA\x3AB\x5\x231\x119\x2\x3AB\x3AC\x5\x22D\x117\x2\x3AC\x3AD"+ + "\x5\x251\x129\x2\x3AD\x3AE\x5\x235\x11B\x2\x3AE\x80\x3\x2\x2\x2\x3AF\x3B0"+ + "\x5\x231\x119\x2\x3B0\x3B1\x5\x243\x122\x2\x3B1\x3B2\x5\x22D\x117\x2\x3B2"+ + "\x3B3\x5\x251\x129\x2\x3B3\x3B4\x5\x251\x129\x2\x3B4\x82\x3\x2\x2\x2\x3B5"+ + "\x3B6\x5\x231\x119\x2\x3B6\x3B7\x5\x243\x122\x2\x3B7\x3B8\x5\x249\x125"+ + "\x2\x3B8\x3B9\x5\x251\x129\x2\x3B9\x3BA\x5\x235\x11B\x2\x3BA\x84\x3\x2"+ + "\x2\x2\x3BB\x3BC\x5\x231\x119\x2\x3BC\x3BD\x5\x249\x125\x2\x3BD\x3BE\x5"+ + "\x247\x124\x2\x3BE\x3BF\x5\x251\x129\x2\x3BF\x3C0\x5\x253\x12A\x2\x3C0"+ + "\x86\x3\x2\x2\x2\x3C1\x3C2\x5\x233\x11A\x2\x3C2\x3C3\x5\x22D\x117\x2\x3C3"+ + "\x3C4\x5\x253\x12A\x2\x3C4\x3C5\x5\x22D\x117\x2\x3C5\x3C6\x5\x22F\x118"+ + "\x2\x3C6\x3C7\x5\x22D\x117\x2\x3C7\x3C8\x5\x251\x129\x2\x3C8\x3C9\x5\x235"+ + "\x11B\x2\x3C9\x88\x3\x2\x2\x2\x3CA\x3CB\x5\x233\x11A\x2\x3CB\x3CC\x5\x22D"+ + "\x117\x2\x3CC\x3CD\x5\x253\x12A\x2\x3CD\x3CE\x5\x235\x11B\x2\x3CE\x8A"+ + "\x3\x2\x2\x2\x3CF\x3D0\x5\x233\x11A\x2\x3D0\x3D1\x5\x235\x11B\x2\x3D1"+ + "\x3D2\x5\x231\x119\x2\x3D2\x3D3\x5\x243\x122\x2\x3D3\x3D4\x5\x22D\x117"+ + "\x2\x3D4\x3D5\x5\x24F\x128\x2\x3D5\x3D6\x5\x235\x11B\x2\x3D6\x8C\x3\x2"+ + "\x2\x2\x3D7\x3D8\x5\x233\x11A\x2\x3D8\x3D9\x5\x235\x11B\x2\x3D9\x3DA\x5"+ + "\x237\x11C\x2\x3DA\x3DB\x5\x22F\x118\x2\x3DB\x3DC\x5\x249\x125\x2\x3DC"+ + "\x3DD\x5\x249\x125\x2\x3DD\x3DE\x5\x243\x122\x2\x3DE\x8E\x3\x2\x2\x2\x3DF"+ + "\x3E0\x5\x233\x11A\x2\x3E0\x3E1\x5\x235\x11B\x2\x3E1\x3E2\x5\x237\x11C"+ + "\x2\x3E2\x3E3\x5\x22F\x118\x2\x3E3\x3E4\x5\x25D\x12F\x2\x3E4\x3E5\x5\x253"+ + "\x12A\x2\x3E5\x3E6\x5\x235\x11B\x2\x3E6\x90\x3\x2\x2\x2\x3E7\x3E8\x5\x233"+ + "\x11A\x2\x3E8\x3E9\x5\x235\x11B\x2\x3E9\x3EA\x5\x237\x11C\x2\x3EA\x3EB"+ + "\x5\x233\x11A\x2\x3EB\x3EC\x5\x22D\x117\x2\x3EC\x3ED\x5\x253\x12A\x2\x3ED"+ + "\x3EE\x5\x235\x11B\x2\x3EE\x92\x3\x2\x2\x2\x3EF\x3F0\x5\x233\x11A\x2\x3F0"+ + "\x3F1\x5\x235\x11B\x2\x3F1\x3F2\x5\x237\x11C\x2\x3F2\x3F3\x5\x233\x11A"+ + "\x2\x3F3\x3F4\x5\x22F\x118\x2\x3F4\x3F5\x5\x243\x122\x2\x3F5\x94\x3\x2"+ + "\x2\x2\x3F6\x3F7\x5\x233\x11A\x2\x3F7\x3F8\x5\x235\x11B\x2\x3F8\x3F9\x5"+ + "\x237\x11C\x2\x3F9\x3FA\x5\x231\x119\x2\x3FA\x3FB\x5\x255\x12B\x2\x3FB"+ + "\x3FC\x5\x24F\x128\x2\x3FC\x96\x3\x2\x2\x2\x3FD\x3FE\x5\x233\x11A\x2\x3FE"+ + "\x3FF\x5\x235\x11B\x2\x3FF\x400\x5\x237\x11C\x2\x400\x401\x5\x23D\x11F"+ + "\x2\x401\x402\x5\x247\x124\x2\x402\x403\x5\x253\x12A\x2\x403\x98\x3\x2"+ + "\x2\x2\x404\x405\x5\x233\x11A\x2\x405\x406\x5\x235\x11B\x2\x406\x407\x5"+ + "\x237\x11C\x2\x407\x408\x5\x243\x122\x2\x408\x409\x5\x247\x124\x2\x409"+ + "\x40A\x5\x239\x11D\x2\x40A\x9A\x3\x2\x2\x2\x40B\x40C\x5\x233\x11A\x2\x40C"+ + "\x40D\x5\x235\x11B\x2\x40D\x40E\x5\x237\x11C\x2\x40E\x40F\x5\x243\x122"+ + "\x2\x40F\x410\x5\x247\x124\x2\x410\x411\x5\x239\x11D\x2\x411\x412\x5\x243"+ + "\x122\x2\x412\x413\x5\x247\x124\x2\x413\x414\x5\x239\x11D\x2\x414\x9C"+ + "\x3\x2\x2\x2\x415\x416\x5\x233\x11A\x2\x416\x417\x5\x235\x11B\x2\x417"+ + "\x418\x5\x237\x11C\x2\x418\x419\x5\x243\x122\x2\x419\x41A\x5\x247\x124"+ + "\x2\x41A\x41B\x5\x239\x11D\x2\x41B\x41C\x5\x24B\x126\x2\x41C\x41D\x5\x253"+ + "\x12A\x2\x41D\x41E\x5\x24F\x128\x2\x41E\x9E\x3\x2\x2\x2\x41F\x420\x5\x233"+ + "\x11A\x2\x420\x421\x5\x235\x11B\x2\x421\x422\x5\x237\x11C\x2\x422\x423"+ + "\x5\x249\x125\x2\x423\x424\x5\x22F\x118\x2\x424\x425\x5\x23F\x120\x2\x425"+ + "\xA0\x3\x2\x2\x2\x426\x427\x5\x233\x11A\x2\x427\x428\x5\x235\x11B\x2\x428"+ + "\x429\x5\x237\x11C\x2\x429\x42A\x5\x251\x129\x2\x42A\x42B\x5\x247\x124"+ + "\x2\x42B\x42C\x5\x239\x11D\x2\x42C\xA2\x3\x2\x2\x2\x42D\x42E\x5\x233\x11A"+ + "\x2\x42E\x42F\x5\x235\x11B\x2\x42F\x430\x5\x237\x11C\x2\x430\x431\x5\x251"+ + "\x129\x2\x431\x432\x5\x253\x12A\x2\x432\x433\x5\x24F\x128\x2\x433\xA4"+ + "\x3\x2\x2\x2\x434\x435\x5\x233\x11A\x2\x435\x436\x5\x235\x11B\x2\x436"+ + "\x437\x5\x237\x11C\x2\x437\x438\x5\x257\x12C\x2\x438\x439\x5\x22D\x117"+ + "\x2\x439\x43A\x5\x24F\x128\x2\x43A\xA6\x3\x2\x2\x2\x43B\x43C\x5\x233\x11A"+ + "\x2\x43C\x43D\x5\x23D\x11F\x2\x43D\x43E\x5\x245\x123\x2\x43E\xA8\x3\x2"+ + "\x2\x2\x43F\x440\x5\x233\x11A\x2\x440\x441\x5\x249\x125\x2\x441\xAA\x3"+ + "\x2\x2\x2\x442\x443\x5\x233\x11A\x2\x443\x444\x5\x249\x125\x2\x444\x445"+ + "\x5\x255\x12B\x2\x445\x446\x5\x22F\x118\x2\x446\x447\x5\x243\x122\x2\x447"+ + "\x448\x5\x235\x11B\x2\x448\xAC\x3\x2\x2\x2\x449\x44A\x5\x235\x11B\x2\x44A"+ + "\x44B\x5\x22D\x117\x2\x44B\x44C\x5\x231\x119\x2\x44C\x44D\x5\x23B\x11E"+ + "\x2\x44D\xAE\x3\x2\x2\x2\x44E\x44F\x5\x235\x11B\x2\x44F\x450\x5\x243\x122"+ + "\x2\x450\x451\x5\x251\x129\x2\x451\x452\x5\x235\x11B\x2\x452\xB0\x3\x2"+ + "\x2\x2\x453\x454\x5\x235\x11B\x2\x454\x455\x5\x243\x122\x2\x455\x456\x5"+ + "\x251\x129\x2\x456\x457\x5\x235\x11B\x2\x457\x458\x5\x23D\x11F\x2\x458"+ + "\x459\x5\x237\x11C\x2\x459\xB2\x3\x2\x2\x2\x45A\x45B\x5\x235\x11B\x2\x45B"+ + "\x45C\x5\x245\x123\x2\x45C\x45D\x5\x24B\x126\x2\x45D\x45E\x5\x253\x12A"+ + "\x2\x45E\x45F\x5\x25D\x12F\x2\x45F\xB4\x3\x2\x2\x2\x460\x461\x5\x235\x11B"+ + "\x2\x461\x462\x5\x247\x124\x2\x462\x464\x5\x233\x11A\x2\x463\x465\x5\x21F"+ + "\x110\x2\x464\x463\x3\x2\x2\x2\x465\x466\x3\x2\x2\x2\x466\x464\x3\x2\x2"+ + "\x2\x466\x467\x3\x2\x2\x2\x467\x468\x3\x2\x2\x2\x468\x469\x5\x235\x11B"+ + "\x2\x469\x46A\x5\x247\x124\x2\x46A\x46B\x5\x255\x12B\x2\x46B\x46C\x5\x245"+ + "\x123\x2\x46C\xB6\x3\x2\x2\x2\x46D\x46E\x5\x235\x11B\x2\x46E\x46F\x5\x247"+ + "\x124\x2\x46F\x472\x5\x233\x11A\x2\x470\x473\x5\x21F\x110\x2\x471\x473"+ + "\x5\x225\x113\x2\x472\x470\x3\x2\x2\x2\x472\x471\x3\x2\x2\x2\x473\x474"+ + "\x3\x2\x2\x2\x474\x472\x3\x2\x2\x2\x474\x475\x3\x2\x2\x2\x475\x476\x3"+ + "\x2\x2\x2\x476\x477\x5\x237\x11C\x2\x477\x478\x5\x255\x12B\x2\x478\x479"+ + "\x5\x247\x124\x2\x479\x47A\x5\x231\x119\x2\x47A\x47B\x5\x253\x12A\x2\x47B"+ + "\x47C\x5\x23D\x11F\x2\x47C\x47D\x5\x249\x125\x2\x47D\x47E\x5\x247\x124"+ + "\x2\x47E\xB8\x3\x2\x2\x2\x47F\x480\x5\x235\x11B\x2\x480\x481\x5\x247\x124"+ + "\x2\x481\x486\x5\x233\x11A\x2\x482\x485\x5\x21F\x110\x2\x483\x485\x5\x225"+ + "\x113\x2\x484\x482\x3\x2\x2\x2\x484\x483\x3\x2\x2\x2\x485\x488\x3\x2\x2"+ + "\x2\x486\x484\x3\x2\x2\x2\x486\x487\x3\x2\x2\x2\x487\x489\x3\x2\x2\x2"+ + "\x488\x486\x3\x2\x2\x2\x489\x48A\x5\x23D\x11F\x2\x48A\x48B\x5\x237\x11C"+ + "\x2\x48B\xBA\x3\x2\x2\x2\x48C\x48D\x5\x235\x11B\x2\x48D\x48E\x5\x247\x124"+ + "\x2\x48E\x491\x5\x233\x11A\x2\x48F\x492\x5\x21F\x110\x2\x490\x492\x5\x225"+ + "\x113\x2\x491\x48F\x3\x2\x2\x2\x491\x490\x3\x2\x2\x2\x492\x493\x3\x2\x2"+ + "\x2\x493\x491\x3\x2\x2\x2\x493\x494\x3\x2\x2\x2\x494\x495\x3\x2\x2\x2"+ + "\x495\x496\x5\x24B\x126\x2\x496\x497\x5\x24F\x128\x2\x497\x498\x5\x249"+ + "\x125\x2\x498\x499\x5\x24B\x126\x2\x499\x49A\x5\x235\x11B\x2\x49A\x49B"+ + "\x5\x24F\x128\x2\x49B\x49C\x5\x253\x12A\x2\x49C\x49D\x5\x25D\x12F\x2\x49D"+ + "\xBC\x3\x2\x2\x2\x49E\x49F\x5\x235\x11B\x2\x49F\x4A0\x5\x247\x124\x2\x4A0"+ + "\x4A3\x5\x233\x11A\x2\x4A1\x4A4\x5\x21F\x110\x2\x4A2\x4A4\x5\x225\x113"+ + "\x2\x4A3\x4A1\x3\x2\x2\x2\x4A3\x4A2\x3\x2\x2\x2\x4A4\x4A5\x3\x2\x2\x2"+ + "\x4A5\x4A3\x3\x2\x2\x2\x4A5\x4A6\x3\x2\x2\x2\x4A6\x4A7\x3\x2\x2\x2\x4A7"+ + "\x4A8\x5\x251\x129\x2\x4A8\x4A9\x5\x235\x11B\x2\x4A9\x4AA\x5\x243\x122"+ + "\x2\x4AA\x4AB\x5\x235\x11B\x2\x4AB\x4AC\x5\x231\x119\x2\x4AC\x4AD\x5\x253"+ + "\x12A\x2\x4AD\xBE\x3\x2\x2\x2\x4AE\x4AF\x5\x235\x11B\x2\x4AF\x4B0\x5\x247"+ + "\x124\x2\x4B0\x4B3\x5\x233\x11A\x2\x4B1\x4B4\x5\x21F\x110\x2\x4B2\x4B4"+ + "\x5\x225\x113\x2\x4B3\x4B1\x3\x2\x2\x2\x4B3\x4B2\x3\x2\x2\x2\x4B4\x4B5"+ + "\x3\x2\x2\x2\x4B5\x4B3\x3\x2\x2\x2\x4B5\x4B6\x3\x2\x2\x2\x4B6\x4B7\x3"+ + "\x2\x2\x2\x4B7\x4B8\x5\x251\x129\x2\x4B8\x4B9\x5\x255\x12B\x2\x4B9\x4BA"+ + "\x5\x22F\x118\x2\x4BA\xC0\x3\x2\x2\x2\x4BB\x4BC\x5\x235\x11B\x2\x4BC\x4BD"+ + "\x5\x247\x124\x2\x4BD\x4BF\x5\x233\x11A\x2\x4BE\x4C0\x5\x21F\x110\x2\x4BF"+ + "\x4BE\x3\x2\x2\x2\x4C0\x4C1\x3\x2\x2\x2\x4C1\x4BF\x3\x2\x2\x2\x4C1\x4C2"+ + "\x3\x2\x2\x2\x4C2\x4C3\x3\x2\x2\x2\x4C3\x4C4\x5\x253\x12A\x2\x4C4\x4C5"+ + "\x5\x25D\x12F\x2\x4C5\x4C6\x5\x24B\x126\x2\x4C6\x4C7\x5\x235\x11B\x2\x4C7"+ + "\xC2\x3\x2\x2\x2\x4C8\x4C9\x5\x235\x11B\x2\x4C9\x4CA\x5\x247\x124\x2\x4CA"+ + "\x4CD\x5\x233\x11A\x2\x4CB\x4CE\x5\x21F\x110\x2\x4CC\x4CE\x5\x225\x113"+ + "\x2\x4CD\x4CB\x3\x2\x2\x2\x4CD\x4CC\x3\x2\x2\x2\x4CE\x4CF\x3\x2\x2\x2"+ + "\x4CF\x4CD\x3\x2\x2\x2\x4CF\x4D0\x3\x2\x2\x2\x4D0\x4D1\x3\x2\x2\x2\x4D1"+ + "\x4D2\x5\x259\x12D\x2\x4D2\x4D3\x5\x23D\x11F\x2\x4D3\x4D4\x5\x253\x12A"+ + "\x2\x4D4\x4D5\x5\x23B\x11E\x2\x4D5\xC4\x3\x2\x2\x2\x4D6\x4D7\x5\x235\x11B"+ + "\x2\x4D7\x4D8\x5\x247\x124\x2\x4D8\x4D9\x5\x233\x11A\x2\x4D9\xC6\x3\x2"+ + "\x2\x2\x4DA\x4DB\x5\x235\x11B\x2\x4DB\x4DC\x5\x247\x124\x2\x4DC\x4DD\x5"+ + "\x255\x12B\x2\x4DD\x4DE\x5\x245\x123\x2\x4DE\xC8\x3\x2\x2\x2\x4DF\x4E0"+ + "\x5\x235\x11B\x2\x4E0\x4E1\x5\x24D\x127\x2\x4E1\x4E2\x5\x257\x12C\x2\x4E2"+ + "\xCA\x3\x2\x2\x2\x4E3\x4E4\x5\x235\x11B\x2\x4E4\x4E5\x5\x24F\x128\x2\x4E5"+ + "\x4E6\x5\x22D\x117\x2\x4E6\x4E7\x5\x251\x129\x2\x4E7\x4E8\x5\x235\x11B"+ + "\x2\x4E8\xCC\x3\x2\x2\x2\x4E9\x4EA\x5\x235\x11B\x2\x4EA\x4EB\x5\x24F\x128"+ + "\x2\x4EB\x4EC\x5\x24F\x128\x2\x4EC\x4ED\x5\x249\x125\x2\x4ED\x4EE\x5\x24F"+ + "\x128\x2\x4EE\xCE\x3\x2\x2\x2\x4EF\x4F0\x5\x235\x11B\x2\x4F0\x4F1\x5\x257"+ + "\x12C\x2\x4F1\x4F2\x5\x235\x11B\x2\x4F2\x4F3\x5\x247\x124\x2\x4F3\x4F4"+ + "\x5\x253\x12A\x2\x4F4\xD0\x3\x2\x2\x2\x4F5\x4F6\x5\x235\x11B\x2\x4F6\x4F7"+ + "\x5\x25B\x12E\x2\x4F7\x4F8\x5\x23D\x11F\x2\x4F8\x4FB\x5\x253\x12A\x2\x4F9"+ + "\x4FC\x5\x21F\x110\x2\x4FA\x4FC\x5\x225\x113\x2\x4FB\x4F9\x3\x2\x2\x2"+ + "\x4FB\x4FA\x3\x2\x2\x2\x4FC\x4FD\x3\x2\x2\x2\x4FD\x4FB\x3\x2\x2\x2\x4FD"+ + "\x4FE\x3\x2\x2\x2\x4FE\x4FF\x3\x2\x2\x2\x4FF\x500\x5\x233\x11A\x2\x500"+ + "\x501\x5\x249\x125\x2\x501\xD2\x3\x2\x2\x2\x502\x503\x5\x235\x11B\x2\x503"+ + "\x504\x5\x25B\x12E\x2\x504\x505\x5\x23D\x11F\x2\x505\x508\x5\x253\x12A"+ + "\x2\x506\x509\x5\x21F\x110\x2\x507\x509\x5\x225\x113\x2\x508\x506\x3\x2"+ + "\x2\x2\x508\x507\x3\x2\x2\x2\x509\x50A\x3\x2\x2\x2\x50A\x508\x3\x2\x2"+ + "\x2\x50A\x50B\x3\x2\x2\x2\x50B\x50C\x3\x2\x2\x2\x50C\x50D\x5\x237\x11C"+ + "\x2\x50D\x50E\x5\x249\x125\x2\x50E\x50F\x5\x24F\x128\x2\x50F\xD4\x3\x2"+ + "\x2\x2\x510\x511\x5\x235\x11B\x2\x511\x512\x5\x25B\x12E\x2\x512\x513\x5"+ + "\x23D\x11F\x2\x513\x516\x5\x253\x12A\x2\x514\x517\x5\x21F\x110\x2\x515"+ + "\x517\x5\x225\x113\x2\x516\x514\x3\x2\x2\x2\x516\x515\x3\x2\x2\x2\x517"+ + "\x518\x3\x2\x2\x2\x518\x516\x3\x2\x2\x2\x518\x519\x3\x2\x2\x2\x519\x51A"+ + "\x3\x2\x2\x2\x51A\x51B\x5\x237\x11C\x2\x51B\x51C\x5\x255\x12B\x2\x51C"+ + "\x51D\x5\x247\x124\x2\x51D\x51E\x5\x231\x119\x2\x51E\x51F\x5\x253\x12A"+ + "\x2\x51F\x520\x5\x23D\x11F\x2\x520\x521\x5\x249\x125\x2\x521\x522\x5\x247"+ + "\x124\x2\x522\xD6\x3\x2\x2\x2\x523\x524\x5\x235\x11B\x2\x524\x525\x5\x25B"+ + "\x12E\x2\x525\x526\x5\x23D\x11F\x2\x526\x529\x5\x253\x12A\x2\x527\x52A"+ + "\x5\x21F\x110\x2\x528\x52A\x5\x225\x113\x2\x529\x527\x3\x2\x2\x2\x529"+ + "\x528\x3\x2\x2\x2\x52A\x52B\x3\x2\x2\x2\x52B\x529\x3\x2\x2\x2\x52B\x52C"+ + "\x3\x2\x2\x2\x52C\x52D\x3\x2\x2\x2\x52D\x52E\x5\x24B\x126\x2\x52E\x52F"+ + "\x5\x24F\x128\x2\x52F\x530\x5\x249\x125\x2\x530\x531\x5\x24B\x126\x2\x531"+ + "\x532\x5\x235\x11B\x2\x532\x533\x5\x24F\x128\x2\x533\x534\x5\x253\x12A"+ + "\x2\x534\x535\x5\x25D\x12F\x2\x535\xD8\x3\x2\x2\x2\x536\x537\x5\x235\x11B"+ + "\x2\x537\x538\x5\x25B\x12E\x2\x538\x539\x5\x23D\x11F\x2\x539\x53C\x5\x253"+ + "\x12A\x2\x53A\x53D\x5\x21F\x110\x2\x53B\x53D\x5\x225\x113\x2\x53C\x53A"+ + "\x3\x2\x2\x2\x53C\x53B\x3\x2\x2\x2\x53D\x53E\x3\x2\x2\x2\x53E\x53C\x3"+ + "\x2\x2\x2\x53E\x53F\x3\x2\x2\x2\x53F\x540\x3\x2\x2\x2\x540\x541\x5\x251"+ + "\x129\x2\x541\x542\x5\x255\x12B\x2\x542\x543\x5\x22F\x118\x2\x543\xDA"+ + "\x3\x2\x2\x2\x544\x545\x5\x237\x11C\x2\x545\x546\x5\x22D\x117\x2\x546"+ + "\x547\x5\x243\x122\x2\x547\x548\x5\x251\x129\x2\x548\x549\x5\x235\x11B"+ + "\x2\x549\xDC\x3\x2\x2\x2\x54A\x54B\x5\x237\x11C\x2\x54B\x54C\x5\x24F\x128"+ + "\x2\x54C\x54D\x5\x23D\x11F\x2\x54D\x54E\x5\x235\x11B\x2\x54E\x54F\x5\x247"+ + "\x124\x2\x54F\x550\x5\x233\x11A\x2\x550\xDE\x3\x2\x2\x2\x551\x552\x5\x237"+ + "\x11C\x2\x552\x553\x5\x249\x125\x2\x553\x554\x5\x24F\x128\x2\x554\xE0"+ + "\x3\x2\x2\x2\x555\x556\x5\x237\x11C\x2\x556\x557\x5\x255\x12B\x2\x557"+ + "\x558\x5\x247\x124\x2\x558\x559\x5\x231\x119\x2\x559\x55A\x5\x253\x12A"+ + "\x2\x55A\x55B\x5\x23D\x11F\x2\x55B\x55C\x5\x249\x125\x2\x55C\x55D\x5\x247"+ + "\x124\x2\x55D\xE2\x3\x2\x2\x2\x55E\x55F\x5\x239\x11D\x2\x55F\x560\x5\x235"+ + "\x11B\x2\x560\x561\x5\x253\x12A\x2\x561\xE4\x3\x2\x2\x2\x562\x563\x5\x239"+ + "\x11D\x2\x563\x564\x5\x243\x122\x2\x564\x565\x5\x249\x125\x2\x565\x566"+ + "\x5\x22F\x118\x2\x566\x567\x5\x22D\x117\x2\x567\x568\x5\x243\x122\x2\x568"+ + "\xE6\x3\x2\x2\x2\x569\x56A\x5\x239\x11D\x2\x56A\x56B\x5\x249\x125\x2\x56B"+ + "\x56C\x5\x251\x129\x2\x56C\x56D\x5\x255\x12B\x2\x56D\x56E\x5\x22F\x118"+ + "\x2\x56E\xE8\x3\x2\x2\x2\x56F\x570\x5\x239\x11D\x2\x570\x571\x5\x249\x125"+ + "\x2\x571\x572\x5\x253\x12A\x2\x572\x573\x5\x249\x125\x2\x573\xEA\x3\x2"+ + "\x2\x2\x574\x575\x5\x23D\x11F\x2\x575\x576\x5\x237\x11C\x2\x576\xEC\x3"+ + "\x2\x2\x2\x577\x578\x5\x23D\x11F\x2\x578\x579\x5\x245\x123\x2\x579\x57A"+ + "\x5\x24B\x126\x2\x57A\xEE\x3\x2\x2\x2\x57B\x57C\x5\x23D\x11F\x2\x57C\x57D"+ + "\x5\x245\x123\x2\x57D\x57E\x5\x24B\x126\x2\x57E\x57F\x5\x243\x122\x2\x57F"+ + "\x580\x5\x235\x11B\x2\x580\x581\x5\x245\x123\x2\x581\x582\x5\x235\x11B"+ + "\x2\x582\x583\x5\x247\x124\x2\x583\x584\x5\x253\x12A\x2\x584\x585\x5\x251"+ + "\x129\x2\x585\xF0\x3\x2\x2\x2\x586\x587\x5\x23D\x11F\x2\x587\x588\x5\x247"+ + "\x124\x2\x588\xF2\x3\x2\x2\x2\x589\x58A\x5\x23D\x11F\x2\x58A\x58B\x5\x247"+ + "\x124\x2\x58B\x58C\x5\x24B\x126\x2\x58C\x58D\x5\x255\x12B\x2\x58D\x58E"+ + "\x5\x253\x12A\x2\x58E\xF4\x3\x2\x2\x2\x58F\x590\x5\x23D\x11F\x2\x590\x591"+ + "\x5\x251\x129\x2\x591\xF6\x3\x2\x2\x2\x592\x593\x5\x23D\x11F\x2\x593\x594"+ + "\x5\x247\x124\x2\x594\x595\x5\x253\x12A\x2\x595\x596\x5\x235\x11B\x2\x596"+ + "\x597\x5\x239\x11D\x2\x597\x598\x5\x235\x11B\x2\x598\x599\x5\x24F\x128"+ + "\x2\x599\xF8\x3\x2\x2\x2\x59A\x59B\x5\x243\x122\x2\x59B\x59C\x5\x249\x125"+ + "\x2\x59C\x59D\x5\x231\x119\x2\x59D\x59E\x5\x241\x121\x2\x59E\xFA\x3\x2"+ + "\x2\x2\x59F\x5A0\x5\x243\x122\x2\x5A0\x5A1\x5\x249\x125\x2\x5A1\x5A2\x5"+ + "\x247\x124\x2\x5A2\x5A3\x5\x239\x11D\x2\x5A3\xFC\x3\x2\x2\x2\x5A4\x5A5"+ + "\x5\x243\x122\x2\x5A5\x5A6\x5\x249\x125\x2\x5A6\x5A7\x5\x249\x125\x2\x5A7"+ + "\x5A8\x5\x24B\x126\x2\x5A8\xFE\x3\x2\x2\x2\x5A9\x5AA\x5\x243\x122\x2\x5AA"+ + "\x5AB\x5\x235\x11B\x2\x5AB\x5AC\x5\x253\x12A\x2\x5AC\x100\x3\x2\x2\x2"+ + "\x5AD\x5AE\x5\x243\x122\x2\x5AE\x5AF\x5\x23D\x11F\x2\x5AF\x5B0\x5\x22F"+ + "\x118\x2\x5B0\x102\x3\x2\x2\x2\x5B1\x5B2\x5\x243\x122\x2\x5B2\x5B3\x5"+ + "\x23D\x11F\x2\x5B3\x5B4\x5\x241\x121\x2\x5B4\x5B5\x5\x235\x11B\x2\x5B5"+ + "\x104\x3\x2\x2\x2\x5B6\x5B7\x5\x243\x122\x2\x5B7\x5B8\x5\x23D\x11F\x2"+ + "\x5B8\x5B9\x5\x247\x124\x2\x5B9\x5BC\x5\x235\x11B\x2\x5BA\x5BD\x5\x21F"+ + "\x110\x2\x5BB\x5BD\x5\x225\x113\x2\x5BC\x5BA\x3\x2\x2\x2\x5BC\x5BB\x3"+ + "\x2\x2\x2\x5BD\x5BE\x3\x2\x2\x2\x5BE\x5BC\x3\x2\x2\x2\x5BE\x5BF\x3\x2"+ + "\x2\x2\x5BF\x5C0\x3\x2\x2\x2\x5C0\x5C1\x5\x23D\x11F\x2\x5C1\x5C2\x5\x247"+ + "\x124\x2\x5C2\x5C3\x5\x24B\x126\x2\x5C3\x5C4\x5\x255\x12B\x2\x5C4\x5C5"+ + "\x5\x253\x12A\x2\x5C5\x106\x3\x2\x2\x2\x5C6\x5C7\x5\x243\x122\x2\x5C7"+ + "\x5C8\x5\x249\x125\x2\x5C8\x5C9\x5\x231\x119\x2\x5C9\x5CC\x5\x241\x121"+ + "\x2\x5CA\x5CD\x5\x21F\x110\x2\x5CB\x5CD\x5\x225\x113\x2\x5CC\x5CA\x3\x2"+ + "\x2\x2\x5CC\x5CB\x3\x2\x2\x2\x5CD\x5CE\x3\x2\x2\x2\x5CE\x5CC\x3\x2\x2"+ + "\x2\x5CE\x5CF\x3\x2\x2\x2\x5CF\x5D0\x3\x2\x2\x2\x5D0\x5D1\x5\x24F\x128"+ + "\x2\x5D1\x5D2\x5\x235\x11B\x2\x5D2\x5D3\x5\x22D\x117\x2\x5D3\x5D4\x5\x233"+ + "\x11A\x2\x5D4\x108\x3\x2\x2\x2\x5D5\x5D6\x5\x243\x122\x2\x5D6\x5D7\x5"+ + "\x249\x125\x2\x5D7\x5D8\x5\x231\x119\x2\x5D8\x5DB\x5\x241\x121\x2\x5D9"+ + "\x5DC\x5\x21F\x110\x2\x5DA\x5DC\x5\x225\x113\x2\x5DB\x5D9\x3\x2\x2\x2"+ + "\x5DB\x5DA\x3\x2\x2\x2\x5DC\x5DD\x3\x2\x2\x2\x5DD\x5DB\x3\x2\x2\x2\x5DD"+ + "\x5DE\x3\x2\x2\x2\x5DE\x5DF\x3\x2\x2\x2\x5DF\x5E0\x5\x259\x12D\x2\x5E0"+ + "\x5E1\x5\x24F\x128\x2\x5E1\x5E2\x5\x23D\x11F\x2\x5E2\x5E3\x5\x253\x12A"+ + "\x2\x5E3\x5E4\x5\x235\x11B\x2\x5E4\x10A\x3\x2\x2\x2\x5E5\x5E6\x5\x243"+ + "\x122\x2\x5E6\x5E7\x5\x249\x125\x2\x5E7\x5E8\x5\x231\x119\x2\x5E8\x5EB"+ + "\x5\x241\x121\x2\x5E9\x5EC\x5\x21F\x110\x2\x5EA\x5EC\x5\x225\x113\x2\x5EB"+ + "\x5E9\x3\x2\x2\x2\x5EB\x5EA\x3\x2\x2\x2\x5EC\x5ED\x3\x2\x2\x2\x5ED\x5EB"+ + "\x3\x2\x2\x2\x5ED\x5EE\x3\x2\x2\x2\x5EE\x5EF\x3\x2\x2\x2\x5EF\x5F0\x5"+ + "\x24F\x128\x2\x5F0\x5F1\x5\x235\x11B\x2\x5F1\x5F2\x5\x22D\x117\x2\x5F2"+ + "\x5F5\x5\x233\x11A\x2\x5F3\x5F6\x5\x21F\x110\x2\x5F4\x5F6\x5\x225\x113"+ + "\x2\x5F5\x5F3\x3\x2\x2\x2\x5F5\x5F4\x3\x2\x2\x2\x5F6\x5F7\x3\x2\x2\x2"+ + "\x5F7\x5F5\x3\x2\x2\x2\x5F7\x5F8\x3\x2\x2\x2\x5F8\x5F9\x3\x2\x2\x2\x5F9"+ + "\x5FA\x5\x259\x12D\x2\x5FA\x5FB\x5\x24F\x128\x2\x5FB\x5FC\x5\x23D\x11F"+ + "\x2\x5FC\x5FD\x5\x253\x12A\x2\x5FD\x5FE\x5\x235\x11B\x2\x5FE\x10C\x3\x2"+ + "\x2\x2\x5FF\x600\x5\x243\x122\x2\x600\x601\x5\x251\x129\x2\x601\x602\x5"+ + "\x235\x11B\x2\x602\x603\x5\x253\x12A\x2\x603\x10E\x3\x2\x2\x2\x604\x605"+ + "\x5\x245\x123\x2\x605\x606\x5\x235\x11B\x2\x606\x110\x3\x2\x2\x2\x607"+ + "\x608\x5\x245\x123\x2\x608\x609\x5\x23D\x11F\x2\x609\x60A\x5\x233\x11A"+ + "\x2\x60A\x112\x3\x2\x2\x2\x60B\x60C\x5\x245\x123\x2\x60C\x60D\x5\x249"+ + "\x125\x2\x60D\x60E\x5\x233\x11A\x2\x60E\x114\x3\x2\x2\x2\x60F\x610\x5"+ + "\x247\x124\x2\x610\x611\x5\x22D\x117\x2\x611\x612\x5\x245\x123\x2\x612"+ + "\x613\x5\x235\x11B\x2\x613\x116\x3\x2\x2\x2\x614\x615\x5\x247\x124\x2"+ + "\x615\x616\x5\x235\x11B\x2\x616\x617\x5\x25B\x12E\x2\x617\x618\x5\x253"+ + "\x12A\x2\x618\x118\x3\x2\x2\x2\x619\x61A\x5\x247\x124\x2\x61A\x61B\x5"+ + "\x235\x11B\x2\x61B\x61C\x5\x259\x12D\x2\x61C\x11A\x3\x2\x2\x2\x61D\x61E"+ + "\x5\x247\x124\x2\x61E\x61F\x5\x249\x125\x2\x61F\x620\x5\x253\x12A\x2\x620"+ + "\x11C\x3\x2\x2\x2\x621\x622\x5\x247\x124\x2\x622\x623\x5\x249\x125\x2"+ + "\x623\x624\x5\x253\x12A\x2\x624\x625\x5\x23B\x11E\x2\x625\x626\x5\x23D"+ + "\x11F\x2\x626\x627\x5\x247\x124\x2\x627\x628\x5\x239\x11D\x2\x628\x11E"+ + "\x3\x2\x2\x2\x629\x62A\x5\x247\x124\x2\x62A\x62B\x5\x255\x12B\x2\x62B"+ + "\x62C\x5\x243\x122\x2\x62C\x62D\x5\x243\x122\x2\x62D\x120\x3\x2\x2\x2"+ + "\x62E\x62F\x5\x249\x125\x2\x62F\x630\x5\x22F\x118\x2\x630\x631\x5\x23F"+ + "\x120\x2\x631\x632\x5\x235\x11B\x2\x632\x633\x5\x231\x119\x2\x633\x634"+ + "\x5\x253\x12A\x2\x634\x122\x3\x2\x2\x2\x635\x636\x5\x249\x125\x2\x636"+ + "\x637\x5\x247\x124\x2\x637\x124\x3\x2\x2\x2\x638\x639\x5\x249\x125\x2"+ + "\x639\x63C\x5\x247\x124\x2\x63A\x63D\x5\x21F\x110\x2\x63B\x63D\x5\x225"+ + "\x113\x2\x63C\x63A\x3\x2\x2\x2\x63C\x63B\x3\x2\x2\x2\x63D\x63E\x3\x2\x2"+ + "\x2\x63E\x63C\x3\x2\x2\x2\x63E\x63F\x3\x2\x2\x2\x63F\x640\x3\x2\x2\x2"+ + "\x640\x641\x5\x235\x11B\x2\x641\x642\x5\x24F\x128\x2\x642\x643\x5\x24F"+ + "\x128\x2\x643\x644\x5\x249\x125\x2\x644\x645\x5\x24F\x128\x2\x645\x126"+ + "\x3\x2\x2\x2\x646\x647\x5\x249\x125\x2\x647\x64A\x5\x247\x124\x2\x648"+ + "\x64B\x5\x21F\x110\x2\x649\x64B\x5\x225\x113\x2\x64A\x648\x3\x2\x2\x2"+ + "\x64A\x649\x3\x2\x2\x2\x64B\x64C\x3\x2\x2\x2\x64C\x64A\x3\x2\x2\x2\x64C"+ + "\x64D\x3\x2\x2\x2\x64D\x64E\x3\x2\x2\x2\x64E\x64F\x5\x243\x122\x2\x64F"+ + "\x650\x5\x249\x125\x2\x650\x651\x5\x231\x119\x2\x651\x652\x5\x22D\x117"+ + "\x2\x652\x655\x5\x243\x122\x2\x653\x656\x5\x21F\x110\x2\x654\x656\x5\x225"+ + "\x113\x2\x655\x653\x3\x2\x2\x2\x655\x654\x3\x2\x2\x2\x656\x657\x3\x2\x2"+ + "\x2\x657\x655\x3\x2\x2\x2\x657\x658\x3\x2\x2\x2\x658\x659\x3\x2\x2\x2"+ + "\x659\x65A\x5\x235\x11B\x2\x65A\x65B\x5\x24F\x128\x2\x65B\x65C\x5\x24F"+ + "\x128\x2\x65C\x65D\x5\x249\x125\x2\x65D\x65E\x5\x24F\x128\x2\x65E\x128"+ + "\x3\x2\x2\x2\x65F\x660\x5\x249\x125\x2\x660\x661\x5\x24B\x126\x2\x661"+ + "\x662\x5\x235\x11B\x2\x662\x663\x5\x247\x124\x2\x663\x12A\x3\x2\x2\x2"+ + "\x664\x665\x5\x249\x125\x2\x665\x666\x5\x24B\x126\x2\x666\x667\x5\x253"+ + "\x12A\x2\x667\x668\x5\x23D\x11F\x2\x668\x669\x5\x249\x125\x2\x669\x66A"+ + "\x5\x247\x124\x2\x66A\x66B\x5\x22D\x117\x2\x66B\x66C\x5\x243\x122\x2\x66C"+ + "\x12C\x3\x2\x2\x2\x66D\x66E\x5\x249\x125\x2\x66E\x66F\x5\x24B\x126\x2"+ + "\x66F\x670\x5\x253\x12A\x2\x670\x671\x5\x23D\x11F\x2\x671\x672\x5\x249"+ + "\x125\x2\x672\x675\x5\x247\x124\x2\x673\x676\x5\x21F\x110\x2\x674\x676"+ + "\x5\x225\x113\x2\x675\x673\x3\x2\x2\x2\x675\x674\x3\x2\x2\x2\x676\x677"+ + "\x3\x2\x2\x2\x677\x675\x3\x2\x2\x2\x677\x678\x3\x2\x2\x2\x678\x679\x3"+ + "\x2\x2\x2\x679\x67A\x5\x22F\x118\x2\x67A\x67B\x5\x22D\x117\x2\x67B\x67C"+ + "\x5\x251\x129\x2\x67C\x67D\x5\x235\x11B\x2\x67D\x12E\x3\x2\x2\x2\x67E"+ + "\x67F\x5\x249\x125\x2\x67F\x680\x5\x24B\x126\x2\x680\x681\x5\x253\x12A"+ + "\x2\x681\x682\x5\x23D\x11F\x2\x682\x683\x5\x249\x125\x2\x683\x686\x5\x247"+ + "\x124\x2\x684\x687\x5\x21F\x110\x2\x685\x687\x5\x225\x113\x2\x686\x684"+ + "\x3\x2\x2\x2\x686\x685\x3\x2\x2\x2\x687\x688\x3\x2\x2\x2\x688\x686\x3"+ + "\x2\x2\x2\x688\x689\x3\x2\x2\x2\x689\x68A\x3\x2\x2\x2\x68A\x68B\x5\x235"+ + "\x11B\x2\x68B\x68C\x5\x25B\x12E\x2\x68C\x68D\x5\x24B\x126\x2\x68D\x68E"+ + "\x5\x243\x122\x2\x68E\x68F\x5\x23D\x11F\x2\x68F\x690\x5\x231\x119\x2\x690"+ + "\x691\x5\x23D\x11F\x2\x691\x692\x5\x253\x12A\x2\x692\x130\x3\x2\x2\x2"+ + "\x693\x694\x5\x249\x125\x2\x694\x695\x5\x24B\x126\x2\x695\x696\x5\x253"+ + "\x12A\x2\x696\x697\x5\x23D\x11F\x2\x697\x698\x5\x249\x125\x2\x698\x69B"+ + "\x5\x247\x124\x2\x699\x69C\x5\x21F\x110\x2\x69A\x69C\x5\x225\x113\x2\x69B"+ + "\x699\x3\x2\x2\x2\x69B\x69A\x3\x2\x2\x2\x69C\x69D\x3\x2\x2\x2\x69D\x69B"+ + "\x3\x2\x2\x2\x69D\x69E\x3\x2\x2\x2\x69E\x69F\x3\x2\x2\x2\x69F\x6A0\x5"+ + "\x231\x119\x2\x6A0\x6A1\x5\x249\x125\x2\x6A1\x6A2\x5\x245\x123\x2\x6A2"+ + "\x6A3\x5\x24B\x126\x2\x6A3\x6A4\x5\x22D\x117\x2\x6A4\x6A5\x5\x24F\x128"+ + "\x2\x6A5\x6A6\x5\x235\x11B\x2\x6A6\x132\x3\x2\x2\x2\x6A7\x6A8\x5\x249"+ + "\x125\x2\x6A8\x6A9\x5\x24B\x126\x2\x6A9\x6AA\x5\x253\x12A\x2\x6AA\x6AB"+ + "\x5\x23D\x11F\x2\x6AB\x6AC\x5\x249\x125\x2\x6AC\x6AF\x5\x247\x124\x2\x6AD"+ + "\x6B0\x5\x21F\x110\x2\x6AE\x6B0\x5\x225\x113\x2\x6AF\x6AD\x3\x2\x2\x2"+ + "\x6AF\x6AE\x3\x2\x2\x2\x6B0\x6B1\x3\x2\x2\x2\x6B1\x6AF\x3\x2\x2\x2\x6B1"+ + "\x6B2\x3\x2\x2\x2\x6B2\x6B3\x3\x2\x2\x2\x6B3\x6B4\x5\x24B\x126\x2\x6B4"+ + "\x6B5\x5\x24F\x128\x2\x6B5\x6B6\x5\x23D\x11F\x2\x6B6\x6B7\x5\x257\x12C"+ + "\x2\x6B7\x6B8\x5\x22D\x117\x2\x6B8\x6B9\x5\x253\x12A\x2\x6B9\x6BC\x5\x235"+ + "\x11B\x2\x6BA\x6BD\x5\x21F\x110\x2\x6BB\x6BD\x5\x225\x113\x2\x6BC\x6BA"+ + "\x3\x2\x2\x2\x6BC\x6BB\x3\x2\x2\x2\x6BD\x6BE\x3\x2\x2\x2\x6BE\x6BC\x3"+ + "\x2\x2\x2\x6BE\x6BF\x3\x2\x2\x2\x6BF\x6C0\x3\x2\x2\x2\x6C0\x6C1\x5\x245"+ + "\x123\x2\x6C1\x6C2\x5\x249\x125\x2\x6C2\x6C3\x5\x233\x11A\x2\x6C3\x6C4"+ + "\x5\x255\x12B\x2\x6C4\x6C5\x5\x243\x122\x2\x6C5\x6C6\x5\x235\x11B\x2\x6C6"+ + "\x134\x3\x2\x2\x2\x6C7\x6C8\x5\x249\x125\x2\x6C8\x6C9\x5\x24F\x128\x2"+ + "\x6C9\x136\x3\x2\x2\x2\x6CA\x6CB\x5\x249\x125\x2\x6CB\x6CC\x5\x255\x12B"+ + "\x2\x6CC\x6CD\x5\x253\x12A\x2\x6CD\x6CE\x5\x24B\x126\x2\x6CE\x6CF\x5\x255"+ + "\x12B\x2\x6CF\x6D0\x5\x253\x12A\x2\x6D0\x138\x3\x2\x2\x2\x6D1\x6D2\x5"+ + "\x24B\x126\x2\x6D2\x6D3\x5\x22D\x117\x2\x6D3\x6D4\x5\x24F\x128\x2\x6D4"+ + "\x6D5\x5\x22D\x117\x2\x6D5\x6D6\x5\x245\x123\x2\x6D6\x6D7\x5\x22D\x117"+ + "\x2\x6D7\x6D8\x5\x24F\x128\x2\x6D8\x6D9\x5\x24F\x128\x2\x6D9\x6DA\x5\x22D"+ + "\x117\x2\x6DA\x6DB\x5\x25D\x12F\x2\x6DB\x13A\x3\x2\x2\x2\x6DC\x6DD\x5"+ + "\x24B\x126\x2\x6DD\x6DE\x5\x24F\x128\x2\x6DE\x6DF\x5\x235\x11B\x2\x6DF"+ + "\x6E0\x5\x251\x129\x2\x6E0\x6E1\x5\x235\x11B\x2\x6E1\x6E2\x5\x24F\x128"+ + "\x2\x6E2\x6E3\x5\x257\x12C\x2\x6E3\x6E4\x5\x235\x11B\x2\x6E4\x13C\x3\x2"+ + "\x2\x2\x6E5\x6E6\x5\x24B\x126\x2\x6E6\x6E7\x5\x24F\x128\x2\x6E7\x6E8\x5"+ + "\x23D\x11F\x2\x6E8\x6E9\x5\x247\x124\x2\x6E9\x6EA\x5\x253\x12A\x2\x6EA"+ + "\x13E\x3\x2\x2\x2\x6EB\x6EC\x5\x24B\x126\x2\x6EC\x6ED\x5\x24F\x128\x2"+ + "\x6ED\x6EE\x5\x23D\x11F\x2\x6EE\x6EF\x5\x257\x12C\x2\x6EF\x6F0\x5\x22D"+ + "\x117\x2\x6F0\x6F1\x5\x253\x12A\x2\x6F1\x6F2\x5\x235\x11B\x2\x6F2\x140"+ + "\x3\x2\x2\x2\x6F3\x6F4\x5\x24B\x126\x2\x6F4\x6F5\x5\x24F\x128\x2\x6F5"+ + "\x6F6\x5\x249\x125\x2\x6F6\x6F7\x5\x24B\x126\x2\x6F7\x6F8\x5\x235\x11B"+ + "\x2\x6F8\x6F9\x5\x24F\x128\x2\x6F9\x6FA\x5\x253\x12A\x2\x6FA\x6FD\x5\x25D"+ + "\x12F\x2\x6FB\x6FE\x5\x21F\x110\x2\x6FC\x6FE\x5\x225\x113\x2\x6FD\x6FB"+ + "\x3\x2\x2\x2\x6FD\x6FC\x3\x2\x2\x2\x6FE\x6FF\x3\x2\x2\x2\x6FF\x6FD\x3"+ + "\x2\x2\x2\x6FF\x700\x3\x2\x2\x2\x700\x701\x3\x2\x2\x2\x701\x702\x5\x239"+ + "\x11D\x2\x702\x703\x5\x235\x11B\x2\x703\x704\x5\x253\x12A\x2\x704\x142"+ + "\x3\x2\x2\x2\x705\x706\x5\x24B\x126\x2\x706\x707\x5\x24F\x128\x2\x707"+ + "\x708\x5\x249\x125\x2\x708\x709\x5\x24B\x126\x2\x709\x70A\x5\x235\x11B"+ + "\x2\x70A\x70B\x5\x24F\x128\x2\x70B\x70C\x5\x253\x12A\x2\x70C\x70F\x5\x25D"+ + "\x12F\x2\x70D\x710\x5\x21F\x110\x2\x70E\x710\x5\x225\x113\x2\x70F\x70D"+ + "\x3\x2\x2\x2\x70F\x70E\x3\x2\x2\x2\x710\x711\x3\x2\x2\x2\x711\x70F\x3"+ + "\x2\x2\x2\x711\x712\x3\x2\x2\x2\x712\x713\x3\x2\x2\x2\x713\x714\x5\x243"+ + "\x122\x2\x714\x715\x5\x235\x11B\x2\x715\x716\x5\x253\x12A\x2\x716\x144"+ + "\x3\x2\x2\x2\x717\x718\x5\x24B\x126\x2\x718\x719\x5\x24F\x128\x2\x719"+ + "\x71A\x5\x249\x125\x2\x71A\x71B\x5\x24B\x126\x2\x71B\x71C\x5\x235\x11B"+ + "\x2\x71C\x71D\x5\x24F\x128\x2\x71D\x71E\x5\x253\x12A\x2\x71E\x721\x5\x25D"+ + "\x12F\x2\x71F\x722\x5\x21F\x110\x2\x720\x722\x5\x225\x113\x2\x721\x71F"+ + "\x3\x2\x2\x2\x721\x720\x3\x2\x2\x2\x722\x723\x3\x2\x2\x2\x723\x721\x3"+ + "\x2\x2\x2\x723\x724\x3\x2\x2\x2\x724\x725\x3\x2\x2\x2\x725\x726\x5\x251"+ + "\x129\x2\x726\x727\x5\x235\x11B\x2\x727\x728\x5\x253\x12A\x2\x728\x146"+ + "\x3\x2\x2\x2\x729\x72A\x5\x24B\x126\x2\x72A\x72B\x5\x253\x12A\x2\x72B"+ + "\x72C\x5\x24F\x128\x2\x72C\x72D\x5\x251\x129\x2\x72D\x72E\x5\x22D\x117"+ + "\x2\x72E\x72F\x5\x237\x11C\x2\x72F\x730\x5\x235\x11B\x2\x730\x148\x3\x2"+ + "\x2\x2\x731\x732\x5\x24B\x126\x2\x732\x733\x5\x255\x12B\x2\x733\x734\x5"+ + "\x22F\x118\x2\x734\x735\x5\x243\x122\x2\x735\x736\x5\x23D\x11F\x2\x736"+ + "\x737\x5\x231\x119\x2\x737\x14A\x3\x2\x2\x2\x738\x739\x5\x24B\x126\x2"+ + "\x739\x73A\x5\x255\x12B\x2\x73A\x73B\x5\x253\x12A\x2\x73B\x14C\x3\x2\x2"+ + "\x2\x73C\x73D\x5\x24F\x128\x2\x73D\x73E\x5\x22D\x117\x2\x73E\x73F\x5\x247"+ + "\x124\x2\x73F\x740\x5\x233\x11A\x2\x740\x741\x5\x249\x125\x2\x741\x742"+ + "\x5\x245\x123\x2\x742\x14E\x3\x2\x2\x2\x743\x744\x5\x24F\x128\x2\x744"+ + "\x745\x5\x22D\x117\x2\x745\x746\x5\x23D\x11F\x2\x746\x747\x5\x251\x129"+ + "\x2\x747\x748\x5\x235\x11B\x2\x748\x749\x5\x235\x11B\x2\x749\x74A\x5\x257"+ + "\x12C\x2\x74A\x74B\x5\x235\x11B\x2\x74B\x74C\x5\x247\x124\x2\x74C\x74D"+ + "\x5\x253\x12A\x2\x74D\x150\x3\x2\x2\x2\x74E\x74F\x5\x24F\x128\x2\x74F"+ + "\x750\x5\x235\x11B\x2\x750\x751\x5\x22D\x117\x2\x751\x752\x5\x233\x11A"+ + "\x2\x752\x152\x3\x2\x2\x2\x753\x754\x5\x24F\x128\x2\x754\x755\x5\x235"+ + "\x11B\x2\x755\x756\x5\x22D\x117\x2\x756\x759\x5\x233\x11A\x2\x757\x75A"+ + "\x5\x21F\x110\x2\x758\x75A\x5\x225\x113\x2\x759\x757\x3\x2\x2\x2\x759"+ + "\x758\x3\x2\x2\x2\x75A\x75B\x3\x2\x2\x2\x75B\x759\x3\x2\x2\x2\x75B\x75C"+ + "\x3\x2\x2\x2\x75C\x75D\x3\x2\x2\x2\x75D\x75E\x5\x259\x12D\x2\x75E\x75F"+ + "\x5\x24F\x128\x2\x75F\x760\x5\x23D\x11F\x2\x760\x761\x5\x253\x12A\x2\x761"+ + "\x762\x5\x235\x11B\x2\x762\x154\x3\x2\x2\x2\x763\x764\x5\x24F\x128\x2"+ + "\x764\x765\x5\x235\x11B\x2\x765\x766\x5\x233\x11A\x2\x766\x767\x5\x23D"+ + "\x11F\x2\x767\x768\x5\x245\x123\x2\x768\x156\x3\x2\x2\x2\x769\x76A\x5"+ + "\x24F\x128\x2\x76A\x76B\x5\x235\x11B\x2\x76B\x76C\x5\x245\x123\x2\x76C"+ + "\x158\x3\x2\x2\x2\x76D\x76E\x5\x24F\x128\x2\x76E\x76F\x5\x235\x11B\x2"+ + "\x76F\x770\x5\x251\x129\x2\x770\x771\x5\x235\x11B\x2\x771\x772\x5\x253"+ + "\x12A\x2\x772\x15A\x3\x2\x2\x2\x773\x774\x5\x24F\x128\x2\x774\x775\x5"+ + "\x235\x11B\x2\x775\x776\x5\x251\x129\x2\x776\x777\x5\x255\x12B\x2\x777"+ + "\x778\x5\x245\x123\x2\x778\x779\x5\x235\x11B\x2\x779\x15C\x3\x2\x2\x2"+ + "\x77A\x77B\x5\x24F\x128\x2\x77B\x77C\x5\x235\x11B\x2\x77C\x77D\x5\x253"+ + "\x12A\x2\x77D\x77E\x5\x255\x12B\x2\x77E\x77F\x5\x24F\x128\x2\x77F\x780"+ + "\x5\x247\x124\x2\x780\x15E\x3\x2\x2\x2\x781\x782\x5\x24F\x128\x2\x782"+ + "\x783\x5\x251\x129\x2\x783\x784\x5\x235\x11B\x2\x784\x785\x5\x253\x12A"+ + "\x2\x785\x160\x3\x2\x2\x2\x786\x787\x5\x251\x129\x2\x787\x788\x5\x235"+ + "\x11B\x2\x788\x789\x5\x235\x11B\x2\x789\x78A\x5\x241\x121\x2\x78A\x162"+ + "\x3\x2\x2\x2\x78B\x78C\x5\x251\x129\x2\x78C\x78D\x5\x235\x11B\x2\x78D"+ + "\x78E\x5\x243\x122\x2\x78E\x78F\x5\x235\x11B\x2\x78F\x790\x5\x231\x119"+ + "\x2\x790\x791\x5\x253\x12A\x2\x791\x164\x3\x2\x2\x2\x792\x793\x5\x251"+ + "\x129\x2\x793\x794\x5\x235\x11B\x2\x794\x795\x5\x253\x12A\x2\x795\x166"+ + "\x3\x2\x2\x2\x796\x797\x5\x251\x129\x2\x797\x798\x5\x23B\x11E\x2\x798"+ + "\x799\x5\x22D\x117\x2\x799\x79A\x5\x24F\x128\x2\x79A\x79B\x5\x235\x11B"+ + "\x2\x79B\x79C\x5\x233\x11A\x2\x79C\x168\x3\x2\x2\x2\x79D\x79E\x5\x251"+ + "\x129\x2\x79E\x79F\x5\x23D\x11F\x2\x79F\x7A0\x5\x247\x124\x2\x7A0\x7A1"+ + "\x5\x239\x11D\x2\x7A1\x7A2\x5\x243\x122\x2\x7A2\x7A3\x5\x235\x11B\x2\x7A3"+ + "\x16A\x3\x2\x2\x2\x7A4\x7A5\x5\x251\x129\x2\x7A5\x7A6\x5\x24B\x126\x2"+ + "\x7A6\x7A7\x5\x231\x119\x2\x7A7\x16C\x3\x2\x2\x2\x7A8\x7A9\x5\x251\x129"+ + "\x2\x7A9\x7AA\x5\x253\x12A\x2\x7AA\x7AB\x5\x22D\x117\x2\x7AB\x7AC\x5\x253"+ + "\x12A\x2\x7AC\x7AD\x5\x23D\x11F\x2\x7AD\x7AE\x5\x231\x119\x2\x7AE\x16E"+ + "\x3\x2\x2\x2\x7AF\x7B0\x5\x251\x129\x2\x7B0\x7B1\x5\x253\x12A\x2\x7B1"+ + "\x7B2\x5\x235\x11B\x2\x7B2\x7B3\x5\x24B\x126\x2\x7B3\x170\x3\x2\x2\x2"+ + "\x7B4\x7B5\x5\x251\x129\x2\x7B5\x7B6\x5\x253\x12A\x2\x7B6\x7B7\x5\x249"+ + "\x125\x2\x7B7\x7B8\x5\x24B\x126\x2\x7B8\x172\x3\x2\x2\x2\x7B9\x7BA\x5"+ + "\x251\x129\x2\x7BA\x7BB\x5\x253\x12A\x2\x7BB\x7BC\x5\x24F\x128\x2\x7BC"+ + "\x7BD\x5\x23D\x11F\x2\x7BD\x7BE\x5\x247\x124\x2\x7BE\x7BF\x5\x239\x11D"+ + "\x2\x7BF\x174\x3\x2\x2\x2\x7C0\x7C1\x5\x251\x129\x2\x7C1\x7C2\x5\x255"+ + "\x12B\x2\x7C2\x7C3\x5\x22F\x118\x2\x7C3\x176\x3\x2\x2\x2\x7C4\x7C5\x5"+ + "\x253\x12A\x2\x7C5\x7C6\x5\x22D\x117\x2\x7C6\x7C7\x5\x22F\x118\x2\x7C7"+ + "\x178\x3\x2\x2\x2\x7C8\x7C9\x5\x253\x12A\x2\x7C9\x7CA\x5\x235\x11B\x2"+ + "\x7CA\x7CB\x5\x25B\x12E\x2\x7CB\x7CC\x5\x253\x12A\x2\x7CC\x17A\x3\x2\x2"+ + "\x2\x7CD\x7CE\x5\x253\x12A\x2\x7CE\x7CF\x5\x23B\x11E\x2\x7CF\x7D0\x5\x235"+ + "\x11B\x2\x7D0\x7D1\x5\x247\x124\x2\x7D1\x17C\x3\x2\x2\x2\x7D2\x7D3\x5"+ + "\x253\x12A\x2\x7D3\x7D4\x5\x249\x125\x2\x7D4\x17E\x3\x2\x2\x2\x7D5\x7D6"+ + "\x5\x253\x12A\x2\x7D6\x7D7\x5\x24F\x128\x2\x7D7\x7D8\x5\x255\x12B\x2\x7D8"+ + "\x7D9\x5\x235\x11B\x2\x7D9\x180\x3\x2\x2\x2\x7DA\x7DB\x5\x253\x12A\x2"+ + "\x7DB\x7DC\x5\x25D\x12F\x2\x7DC\x7DD\x5\x24B\x126\x2\x7DD\x7DE\x5\x235"+ + "\x11B\x2\x7DE\x182\x3\x2\x2\x2\x7DF\x7E0\x5\x253\x12A\x2\x7E0\x7E1\x5"+ + "\x25D\x12F\x2\x7E1\x7E2\x5\x24B\x126\x2\x7E2\x7E3\x5\x235\x11B\x2\x7E3"+ + "\x7E4\x5\x249\x125\x2\x7E4\x7E5\x5\x237\x11C\x2\x7E5\x184\x3\x2\x2\x2"+ + "\x7E6\x7E7\x5\x255\x12B\x2\x7E7\x7E8\x5\x247\x124\x2\x7E8\x7E9\x5\x243"+ + "\x122\x2\x7E9\x7EA\x5\x249\x125\x2\x7EA\x7EB\x5\x231\x119\x2\x7EB\x7EC"+ + "\x5\x241\x121\x2\x7EC\x186\x3\x2\x2\x2\x7ED\x7EE\x5\x255\x12B\x2\x7EE"+ + "\x7EF\x5\x247\x124\x2\x7EF\x7F0\x5\x253\x12A\x2\x7F0\x7F1\x5\x23D\x11F"+ + "\x2\x7F1\x7F2\x5\x243\x122\x2\x7F2\x188\x3\x2\x2\x2\x7F3\x7F4\x5\x257"+ + "\x12C\x2\x7F4\x7F5\x5\x22D\x117\x2\x7F5\x7F6\x5\x24F\x128\x2\x7F6\x7F7"+ + "\x5\x23D\x11F\x2\x7F7\x7F8\x5\x22D\x117\x2\x7F8\x7F9\x5\x247\x124\x2\x7F9"+ + "\x7FA\x5\x253\x12A\x2\x7FA\x18A\x3\x2\x2\x2\x7FB\x7FC\x5\x257\x12C\x2"+ + "\x7FC\x7FD\x5\x235\x11B\x2\x7FD\x7FE\x5\x24F\x128\x2\x7FE\x7FF\x5\x251"+ + "\x129\x2\x7FF\x800\x5\x23D\x11F\x2\x800\x801\x5\x249\x125\x2\x801\x802"+ + "\x5\x247\x124\x2\x802\x18C\x3\x2\x2\x2\x803\x804\x5\x259\x12D\x2\x804"+ + "\x805\x5\x235\x11B\x2\x805\x806\x5\x247\x124\x2\x806\x807\x5\x233\x11A"+ + "\x2\x807\x18E\x3\x2\x2\x2\x808\x809\x5\x259\x12D\x2\x809\x80A\x5\x23B"+ + "\x11E\x2\x80A\x80B\x5\x23D\x11F\x2\x80B\x80C\x5\x243\x122\x2\x80C\x80D"+ + "\x5\x235\x11B\x2\x80D\x190\x3\x2\x2\x2\x80E\x80F\x5\x259\x12D\x2\x80F"+ + "\x810\x5\x23D\x11F\x2\x810\x811\x5\x233\x11A\x2\x811\x812\x5\x253\x12A"+ + "\x2\x812\x813\x5\x23B\x11E\x2\x813\x192\x3\x2\x2\x2\x814\x815\x5\x259"+ + "\x12D\x2\x815\x816\x5\x23D\x11F\x2\x816\x817\x5\x253\x12A\x2\x817\x818"+ + "\x5\x23B\x11E\x2\x818\x194\x3\x2\x2\x2\x819\x81A\x5\x259\x12D\x2\x81A"+ + "\x81B\x5\x23D\x11F\x2\x81B\x81C\x5\x253\x12A\x2\x81C\x81D\x5\x23B\x11E"+ + "\x2\x81D\x81E\x5\x235\x11B\x2\x81E\x81F\x5\x257\x12C\x2\x81F\x820\x5\x235"+ + "\x11B\x2\x820\x821\x5\x247\x124\x2\x821\x822\x5\x253\x12A\x2\x822\x823"+ + "\x5\x251\x129\x2\x823\x196\x3\x2\x2\x2\x824\x825\x5\x259\x12D\x2\x825"+ + "\x826\x5\x24F\x128\x2\x826\x827\x5\x23D\x11F\x2\x827\x828\x5\x253\x12A"+ + "\x2\x828\x829\x5\x235\x11B\x2\x829\x198\x3\x2\x2\x2\x82A\x82B\x5\x25B"+ + "\x12E\x2\x82B\x82C\x5\x249\x125\x2\x82C\x82D\x5\x24F\x128\x2\x82D\x19A"+ + "\x3\x2\x2\x2\x82E\x82F\a<\x2\x2\x82F\x830\a?\x2\x2\x830\x19C\x3\x2\x2"+ + "\x2\x831\x832\a\x31\x2\x2\x832\x19E\x3\x2\x2\x2\x833\x834\a^\x2\x2\x834"+ + "\x1A0\x3\x2\x2\x2\x835\x836\a?\x2\x2\x836\x1A2\x3\x2\x2\x2\x837\x838\a"+ + "@\x2\x2\x838\x83C\a?\x2\x2\x839\x83A\a?\x2\x2\x83A\x83C\a@\x2\x2\x83B"+ + "\x837\x3\x2\x2\x2\x83B\x839\x3\x2\x2\x2\x83C\x1A4\x3\x2\x2\x2\x83D\x83E"+ + "\a@\x2\x2\x83E\x1A6\x3\x2\x2\x2\x83F\x840\a>\x2\x2\x840\x844\a?\x2\x2"+ + "\x841\x842\a?\x2\x2\x842\x844\a>\x2\x2\x843\x83F\x3\x2\x2\x2\x843\x841"+ + "\x3\x2\x2\x2\x844\x1A8\x3\x2\x2\x2\x845\x846\a*\x2\x2\x846\x1AA\x3\x2"+ + "\x2\x2\x847\x848\a>\x2\x2\x848\x1AC\x3\x2\x2\x2\x849\x84A\a/\x2\x2\x84A"+ + "\x1AE\x3\x2\x2\x2\x84B\x84C\a,\x2\x2\x84C\x1B0\x3\x2\x2\x2\x84D\x84E\a"+ + ">\x2\x2\x84E\x852\a@\x2\x2\x84F\x850\a@\x2\x2\x850\x852\a>\x2\x2\x851"+ + "\x84D\x3\x2\x2\x2\x851\x84F\x3\x2\x2\x2\x852\x1B2\x3\x2\x2\x2\x853\x854"+ + "\a-\x2\x2\x854\x1B4\x3\x2\x2\x2\x855\x856\a`\x2\x2\x856\x1B6\x3\x2\x2"+ + "\x2\x857\x858\a+\x2\x2\x858\x1B8\x3\x2\x2\x2\x859\x85A\a]\x2\x2\x85A\x1BA"+ + "\x3\x2\x2\x2\x85B\x85C\a_\x2\x2\x85C\x1BC\x3\x2\x2\x2\x85D\x863\a$\x2"+ + "\x2\x85E\x862\n\x2\x2\x2\x85F\x860\a$\x2\x2\x860\x862\a$\x2\x2\x861\x85E"+ + "\x3\x2\x2\x2\x861\x85F\x3\x2\x2\x2\x862\x865\x3\x2\x2\x2\x863\x861\x3"+ + "\x2\x2\x2\x863\x864\x3\x2\x2\x2\x864\x866\x3\x2\x2\x2\x865\x863\x3\x2"+ + "\x2\x2\x866\x867\a$\x2\x2\x867\x1BE\x3\x2\x2\x2\x868\x869\a(\x2\x2\x869"+ + "\x86A\aQ\x2\x2\x86A\x86C\x3\x2\x2\x2\x86B\x86D\t\x3\x2\x2\x86C\x86B\x3"+ + "\x2\x2\x2\x86D\x86E\x3\x2\x2\x2\x86E\x86C\x3\x2\x2\x2\x86E\x86F\x3\x2"+ + "\x2\x2\x86F\x871\x3\x2\x2\x2\x870\x872\x5\x1C9\xE5\x2\x871\x870\x3\x2"+ + "\x2\x2\x871\x872\x3\x2\x2\x2\x872\x1C0\x3\x2\x2\x2\x873\x874\a(\x2\x2"+ + "\x874\x875\aJ\x2\x2\x875\x877\x3\x2\x2\x2\x876\x878\t\x4\x2\x2\x877\x876"+ + "\x3\x2\x2\x2\x878\x879\x3\x2\x2\x2\x879\x877\x3\x2\x2\x2\x879\x87A\x3"+ + "\x2\x2\x2\x87A\x87C\x3\x2\x2\x2\x87B\x87D\x5\x1C9\xE5\x2\x87C\x87B\x3"+ + "\x2\x2\x2\x87C\x87D\x3\x2\x2\x2\x87D\x1C2\x3\x2\x2\x2\x87E\x880\x5\x1C5"+ + "\xE3\x2\x87F\x881\x5\x1CB\xE6\x2\x880\x87F\x3\x2\x2\x2\x880\x881\x3\x2"+ + "\x2\x2\x881\x886\x3\x2\x2\x2\x882\x883\x5\x1D3\xEA\x2\x883\x884\x5\x1CB"+ + "\xE6\x2\x884\x886\x3\x2\x2\x2\x885\x87E\x3\x2\x2\x2\x885\x882\x3\x2\x2"+ + "\x2\x886\x1C4\x3\x2\x2\x2\x887\x888\x5\x1D3\xEA\x2\x888\x889\x5\x1CD\xE7"+ + "\x2\x889\x898\x3\x2\x2\x2\x88A\x88B\x5\x1D3\xEA\x2\x88B\x88D\a\x30\x2"+ + "\x2\x88C\x88E\x5\x1D3\xEA\x2\x88D\x88C\x3\x2\x2\x2\x88D\x88E\x3\x2\x2"+ + "\x2\x88E\x890\x3\x2\x2\x2\x88F\x891\x5\x1CD\xE7\x2\x890\x88F\x3\x2\x2"+ + "\x2\x890\x891\x3\x2\x2\x2\x891\x898\x3\x2\x2\x2\x892\x893\a\x30\x2\x2"+ + "\x893\x895\x5\x1D3\xEA\x2\x894\x896\x5\x1CD\xE7\x2\x895\x894\x3\x2\x2"+ + "\x2\x895\x896\x3\x2\x2\x2\x896\x898\x3\x2\x2\x2\x897\x887\x3\x2\x2\x2"+ + "\x897\x88A\x3\x2\x2\x2\x897\x892\x3\x2\x2\x2\x898\x1C6\x3\x2\x2\x2\x899"+ + "\x89B\x5\x1D3\xEA\x2\x89A\x89C\x5\x1C9\xE5\x2\x89B\x89A\x3\x2\x2\x2\x89B"+ + "\x89C\x3\x2\x2\x2\x89C\x1C8\x3\x2\x2\x2\x89D\x89E\t\x5\x2\x2\x89E\x1CA"+ + "\x3\x2\x2\x2\x89F\x8A0\t\x6\x2\x2\x8A0\x1CC\x3\x2\x2\x2\x8A1\x8A3\x5\x1CF"+ + "\xE8\x2\x8A2\x8A4\x5\x1D1\xE9\x2\x8A3\x8A2\x3\x2\x2\x2\x8A3\x8A4\x3\x2"+ + "\x2\x2\x8A4\x8A6\x3\x2\x2\x2\x8A5\x8A7\x5\x229\x115\x2\x8A6\x8A5\x3\x2"+ + "\x2\x2\x8A7\x8A8\x3\x2\x2\x2\x8A8\x8A6\x3\x2\x2\x2\x8A8\x8A9\x3\x2\x2"+ + "\x2\x8A9\x1CE\x3\x2\x2\x2\x8AA\x8AB\t\a\x2\x2\x8AB\x1D0\x3\x2\x2\x2\x8AC"+ + "\x8AD\t\b\x2\x2\x8AD\x1D2\x3\x2\x2\x2\x8AE\x8B0\x5\x229\x115\x2\x8AF\x8AE"+ + "\x3\x2\x2\x2\x8B0\x8B1\x3\x2\x2\x2\x8B1\x8AF\x3\x2\x2\x2\x8B1\x8B2\x3"+ + "\x2\x2\x2\x8B2\x1D4\x3\x2\x2\x2\x8B3\x8BA\x5Y-\x2\x8B4\x8B7\x5\x21F\x110"+ + "\x2\x8B5\x8B7\x5\x225\x113\x2\x8B6\x8B4\x3\x2\x2\x2\x8B6\x8B5\x3\x2\x2"+ + "\x2\x8B7\x8B8\x3\x2\x2\x2\x8B8\x8B6\x3\x2\x2\x2\x8B8\x8B9\x3\x2\x2\x2"+ + "\x8B9\x8BB\x3\x2\x2\x2\x8BA\x8B6\x3\x2\x2\x2\x8BA\x8BB\x3\x2\x2\x2\x8BB"+ + "\x8BC\x3\x2\x2\x2\x8BC\x8BD\x5\x1D7\xEC\x2\x8BD\x8BE\x5Y-\x2\x8BE\x1D6"+ + "\x3\x2\x2\x2\x8BF\x8C1\x5\x1D9\xED\x2\x8C0\x8C2\x5\x21F\x110\x2\x8C1\x8C0"+ + "\x3\x2\x2\x2\x8C1\x8C2\x3\x2\x2\x2\x8C2\x8C3\x3\x2\x2\x2\x8C3\x8C4\x5"+ + "\x1E5\xF3\x2\x8C4\x8C8\x3\x2\x2\x2\x8C5\x8C8\x5\x1D9\xED\x2\x8C6\x8C8"+ + "\x5\x1E5\xF3\x2\x8C7\x8BF\x3\x2\x2\x2\x8C7\x8C5\x3\x2\x2\x2\x8C7\x8C6"+ + "\x3\x2\x2\x2\x8C8\x1D8\x3\x2\x2\x2\x8C9\x8CA\x5\x1DB\xEE\x2\x8CA\x8CB"+ + "\x5\x1DD\xEF\x2\x8CB\x8CF\x5\x1DB\xEE\x2\x8CC\x8CD\x5\x1DD\xEF\x2\x8CD"+ + "\x8CE\x5\x1DB\xEE\x2\x8CE\x8D0\x3\x2\x2\x2\x8CF\x8CC\x3\x2\x2\x2\x8CF"+ + "\x8D0\x3\x2\x2\x2\x8D0\x1DA\x3\x2\x2\x2\x8D1\x8D3\x5\x229\x115\x2\x8D2"+ + "\x8D1\x3\x2\x2\x2\x8D3\x8D4\x3\x2\x2\x2\x8D4\x8D2\x3\x2\x2\x2\x8D4\x8D5"+ + "\x3\x2\x2\x2\x8D5\x8D8\x3\x2\x2\x2\x8D6\x8D8\x5\x1DF\xF0\x2\x8D7\x8D2"+ + "\x3\x2\x2\x2\x8D7\x8D6\x3\x2\x2\x2\x8D8\x1DC\x3\x2\x2\x2\x8D9\x8DB\x5"+ + "\x21F\x110\x2\x8DA\x8D9\x3\x2\x2\x2\x8DA\x8DB\x3\x2\x2\x2\x8DB\x8DD\x3"+ + "\x2\x2\x2\x8DC\x8DE\t\t\x2\x2\x8DD\x8DC\x3\x2\x2\x2\x8DD\x8DE\x3\x2\x2"+ + "\x2\x8DE\x8E0\x3\x2\x2\x2\x8DF\x8E1\x5\x21F\x110\x2\x8E0\x8DF\x3\x2\x2"+ + "\x2\x8E0\x8E1\x3\x2\x2\x2\x8E1\x1DE\x3\x2\x2\x2\x8E2\x8E5\x5\x1E1\xF1"+ + "\x2\x8E3\x8E5\x5\x1E3\xF2\x2\x8E4\x8E2\x3\x2\x2\x2\x8E4\x8E3\x3\x2\x2"+ + "\x2\x8E5\x1E0\x3\x2\x2\x2\x8E6\x8F3\x5\x1EB\xF6\x2\x8E7\x8F3\x5\x1ED\xF7"+ + "\x2\x8E8\x8F3\x5\x1EF\xF8\x2\x8E9\x8F3\x5\x1F1\xF9\x2\x8EA\x8F3\x5\x1F3"+ + "\xFA\x2\x8EB\x8F3\x5\x1F5\xFB\x2\x8EC\x8F3\x5\x1F7\xFC\x2\x8ED\x8F3\x5"+ + "\x1F9\xFD\x2\x8EE\x8F3\x5\x1FB\xFE\x2\x8EF\x8F3\x5\x1FD\xFF\x2\x8F0\x8F3"+ + "\x5\x1FF\x100\x2\x8F1\x8F3\x5\x201\x101\x2\x8F2\x8E6\x3\x2\x2\x2\x8F2"+ + "\x8E7\x3\x2\x2\x2\x8F2\x8E8\x3\x2\x2\x2\x8F2\x8E9\x3\x2\x2\x2\x8F2\x8EA"+ + "\x3\x2\x2\x2\x8F2\x8EB\x3\x2\x2\x2\x8F2\x8EC\x3\x2\x2\x2\x8F2\x8ED\x3"+ + "\x2\x2\x2\x8F2\x8EE\x3\x2\x2\x2\x8F2\x8EF\x3\x2\x2\x2\x8F2\x8F0\x3\x2"+ + "\x2\x2\x8F2\x8F1\x3\x2\x2\x2\x8F3\x1E2\x3\x2\x2\x2\x8F4\x900\x5\x203\x102"+ + "\x2\x8F5\x900\x5\x205\x103\x2\x8F6\x900\x5\x207\x104\x2\x8F7\x900\x5\x209"+ + "\x105\x2\x8F8\x900\x5\x20B\x106\x2\x8F9\x900\x5\x20D\x107\x2\x8FA\x900"+ + "\x5\x20F\x108\x2\x8FB\x900\x5\x211\x109\x2\x8FC\x900\x5\x213\x10A\x2\x8FD"+ + "\x900\x5\x215\x10B\x2\x8FE\x900\x5\x217\x10C\x2\x8FF\x8F4\x3\x2\x2\x2"+ + "\x8FF\x8F5\x3\x2\x2\x2\x8FF\x8F6\x3\x2\x2\x2\x8FF\x8F7\x3\x2\x2\x2\x8FF"+ + "\x8F8\x3\x2\x2\x2\x8FF\x8F9\x3\x2\x2\x2\x8FF\x8FA\x3\x2\x2\x2\x8FF\x8FB"+ + "\x3\x2\x2\x2\x8FF\x8FC\x3\x2\x2\x2\x8FF\x8FD\x3\x2\x2\x2\x8FF\x8FE\x3"+ + "\x2\x2\x2\x900\x1E4\x3\x2\x2\x2\x901\x903\x5\x229\x115\x2\x902\x901\x3"+ + "\x2\x2\x2\x903\x904\x3\x2\x2\x2\x904\x902\x3\x2\x2\x2\x904\x905\x3\x2"+ + "\x2\x2\x905\x906\x3\x2\x2\x2\x906\x907\x5\x1E9\xF5\x2\x907\x91F\x3\x2"+ + "\x2\x2\x908\x90A\x5\x229\x115\x2\x909\x908\x3\x2\x2\x2\x90A\x90B\x3\x2"+ + "\x2\x2\x90B\x909\x3\x2\x2\x2\x90B\x90C\x3\x2\x2\x2\x90C\x90D\x3\x2\x2"+ + "\x2\x90D\x90F\x5\x1E7\xF4\x2\x90E\x910\x5\x229\x115\x2\x90F\x90E\x3\x2"+ + "\x2\x2\x910\x911\x3\x2\x2\x2\x911\x90F\x3\x2\x2\x2\x911\x912\x3\x2\x2"+ + "\x2\x912\x919\x3\x2\x2\x2\x913\x915\x5\x1E7\xF4\x2\x914\x916\x5\x229\x115"+ + "\x2\x915\x914\x3\x2\x2\x2\x916\x917\x3\x2\x2\x2\x917\x915\x3\x2\x2\x2"+ + "\x917\x918\x3\x2\x2\x2\x918\x91A\x3\x2\x2\x2\x919\x913\x3\x2\x2\x2\x919"+ + "\x91A\x3\x2\x2\x2\x91A\x91C\x3\x2\x2\x2\x91B\x91D\x5\x1E9\xF5\x2\x91C"+ + "\x91B\x3\x2\x2\x2\x91C\x91D\x3\x2\x2\x2\x91D\x91F\x3\x2\x2\x2\x91E\x902"+ + "\x3\x2\x2\x2\x91E\x909\x3\x2\x2\x2\x91F\x1E6\x3\x2\x2\x2\x920\x922\x5"+ + "\x21F\x110\x2\x921\x920\x3\x2\x2\x2\x921\x922\x3\x2\x2\x2\x922\x923\x3"+ + "\x2\x2\x2\x923\x925\t\n\x2\x2\x924\x926\x5\x21F\x110\x2\x925\x924\x3\x2"+ + "\x2\x2\x925\x926\x3\x2\x2\x2\x926\x1E8\x3\x2\x2\x2\x927\x929\x5\x21F\x110"+ + "\x2\x928\x927\x3\x2\x2\x2\x928\x929\x3\x2\x2\x2\x929\x932\x3\x2\x2\x2"+ + "\x92A\x92B\x5\x22D\x117\x2\x92B\x92C\x5\x245\x123\x2\x92C\x933\x3\x2\x2"+ + "\x2\x92D\x92E\x5\x24B\x126\x2\x92E\x92F\x5\x245\x123\x2\x92F\x933\x3\x2"+ + "\x2\x2\x930\x933\x5\x22D\x117\x2\x931\x933\x5\x24B\x126\x2\x932\x92A\x3"+ + "\x2\x2\x2\x932\x92D\x3\x2\x2\x2\x932\x930\x3\x2\x2\x2\x932\x931\x3\x2"+ + "\x2\x2\x933\x1EA\x3\x2\x2\x2\x934\x935\x5\x23F\x120\x2\x935\x936\x5\x22D"+ + "\x117\x2\x936\x937\x5\x247\x124\x2\x937\x938\x5\x255\x12B\x2\x938\x939"+ + "\x5\x22D\x117\x2\x939\x93A\x5\x24F\x128\x2\x93A\x93B\x5\x25D\x12F\x2\x93B"+ + "\x1EC\x3\x2\x2\x2\x93C\x93D\x5\x237\x11C\x2\x93D\x93E\x5\x235\x11B\x2"+ + "\x93E\x93F\x5\x22F\x118\x2\x93F\x940\x5\x24F\x128\x2\x940\x941\x5\x255"+ + "\x12B\x2\x941\x942\x5\x22D\x117\x2\x942\x943\x5\x24F\x128\x2\x943\x944"+ + "\x5\x25D\x12F\x2\x944\x1EE\x3\x2\x2\x2\x945\x946\x5\x245\x123\x2\x946"+ + "\x947\x5\x22D\x117\x2\x947\x948\x5\x24F\x128\x2\x948\x949\x5\x231\x119"+ + "\x2\x949\x94A\x5\x23B\x11E\x2\x94A\x1F0\x3\x2\x2\x2\x94B\x94C\x5\x22D"+ + "\x117\x2\x94C\x94D\x5\x24B\x126\x2\x94D\x94E\x5\x24F\x128\x2\x94E\x94F"+ + "\x5\x23D\x11F\x2\x94F\x950\x5\x243\x122\x2\x950\x1F2\x3\x2\x2\x2\x951"+ + "\x952\x5\x245\x123\x2\x952\x953\x5\x22D\x117\x2\x953\x954\x5\x25D\x12F"+ + "\x2\x954\x1F4\x3\x2\x2\x2\x955\x956\x5\x23F\x120\x2\x956\x957\x5\x255"+ + "\x12B\x2\x957\x958\x5\x247\x124\x2\x958\x959\x5\x235\x11B\x2\x959\x1F6"+ + "\x3\x2\x2\x2\x95A\x95B\x5\x23F\x120\x2\x95B\x95C\x5\x255\x12B\x2\x95C"+ + "\x95D\x5\x243\x122\x2\x95D\x95E\x5\x25D\x12F\x2\x95E\x1F8\x3\x2\x2\x2"+ + "\x95F\x960\x5\x22D\x117\x2\x960\x961\x5\x255\x12B\x2\x961\x962\x5\x239"+ + "\x11D\x2\x962\x963\x5\x255\x12B\x2\x963\x964\x5\x251\x129\x2\x964\x965"+ + "\x5\x253\x12A\x2\x965\x1FA\x3\x2\x2\x2\x966\x967\x5\x251\x129\x2\x967"+ + "\x968\x5\x235\x11B\x2\x968\x969\x5\x24B\x126\x2\x969\x96A\x5\x253\x12A"+ + "\x2\x96A\x96B\x5\x235\x11B\x2\x96B\x96C\x5\x245\x123\x2\x96C\x96D\x5\x22F"+ + "\x118\x2\x96D\x96E\x5\x235\x11B\x2\x96E\x96F\x5\x24F\x128\x2\x96F\x1FC"+ + "\x3\x2\x2\x2\x970\x971\x5\x249\x125\x2\x971\x972\x5\x231\x119\x2\x972"+ + "\x973\x5\x253\x12A\x2\x973\x974\x5\x249\x125\x2\x974\x975\x5\x22F\x118"+ + "\x2\x975\x976\x5\x235\x11B\x2\x976\x977\x5\x24F\x128\x2\x977\x1FE\x3\x2"+ + "\x2\x2\x978\x979\x5\x247\x124\x2\x979\x97A\x5\x249\x125\x2\x97A\x97B\x5"+ + "\x257\x12C\x2\x97B\x97C\x5\x235\x11B\x2\x97C\x97D\x5\x245\x123\x2\x97D"+ + "\x97E\x5\x22F\x118\x2\x97E\x97F\x5\x235\x11B\x2\x97F\x980\x5\x24F\x128"+ + "\x2\x980\x200\x3\x2\x2\x2\x981\x982\x5\x233\x11A\x2\x982\x983\x5\x235"+ + "\x11B\x2\x983\x984\x5\x231\x119\x2\x984\x985\x5\x235\x11B\x2\x985\x986"+ + "\x5\x245\x123\x2\x986\x987\x5\x22F\x118\x2\x987\x988\x5\x235\x11B\x2\x988"+ + "\x989\x5\x24F\x128\x2\x989\x202\x3\x2\x2\x2\x98A\x98B\x5\x23F\x120\x2"+ + "\x98B\x98C\x5\x22D\x117\x2\x98C\x98D\x5\x247\x124\x2\x98D\x204\x3\x2\x2"+ + "\x2\x98E\x98F\x5\x237\x11C\x2\x98F\x990\x5\x235\x11B\x2\x990\x991\x5\x22F"+ + "\x118\x2\x991\x206\x3\x2\x2\x2\x992\x993\x5\x245\x123\x2\x993\x994\x5"+ + "\x22D\x117\x2\x994\x995\x5\x24F\x128\x2\x995\x208\x3\x2\x2\x2\x996\x997"+ + "\x5\x22D\x117\x2\x997\x998\x5\x24B\x126\x2\x998\x999\x5\x24F\x128\x2\x999"+ + "\x20A\x3\x2\x2\x2\x99A\x99B\x5\x23F\x120\x2\x99B\x99C\x5\x255\x12B\x2"+ + "\x99C\x99D\x5\x247\x124\x2\x99D\x20C\x3\x2\x2\x2\x99E\x99F\x5\x23F\x120"+ + "\x2\x99F\x9A0\x5\x255\x12B\x2\x9A0\x9A1\x5\x243\x122\x2\x9A1\x20E\x3\x2"+ + "\x2\x2\x9A2\x9A3\x5\x22D\x117\x2\x9A3\x9A4\x5\x255\x12B\x2\x9A4\x9A5\x5"+ + "\x239\x11D\x2\x9A5\x210\x3\x2\x2\x2\x9A6\x9A7\x5\x251\x129\x2\x9A7\x9A8"+ + "\x5\x235\x11B\x2\x9A8\x9A9\x5\x24B\x126\x2\x9A9\x212\x3\x2\x2\x2\x9AA"+ + "\x9AB\x5\x249\x125\x2\x9AB\x9AC\x5\x231\x119\x2\x9AC\x9AD\x5\x253\x12A"+ + "\x2\x9AD\x214\x3\x2\x2\x2\x9AE\x9AF\x5\x247\x124\x2\x9AF\x9B0\x5\x249"+ + "\x125\x2\x9B0\x9B1\x5\x257\x12C\x2\x9B1\x216\x3\x2\x2\x2\x9B2\x9B3\x5"+ + "\x233\x11A\x2\x9B3\x9B4\x5\x235\x11B\x2\x9B4\x9B5\x5\x231\x119\x2\x9B5"+ + "\x218\x3\x2\x2\x2\x9B6\x9B7\a\xF\x2\x2\x9B7\x9BA\a\f\x2\x2\x9B8\x9BA\t"+ + "\v\x2\x2\x9B9\x9B6\x3\x2\x2\x2\x9B9\x9B8\x3\x2\x2\x2\x9BA\x21A\x3\x2\x2"+ + "\x2\x9BB\x9BC\a)\x2\x2\x9BC\x21C\x3\x2\x2\x2\x9BD\x9BE\a\x61\x2\x2\x9BE"+ + "\x21E\x3\x2\x2\x2\x9BF\x9C0\t\f\x2\x2\x9C0\x220\x3\x2\x2\x2\x9C1\x9C3"+ + "\a}\x2\x2\x9C2\x9C4\t\x4\x2\x2\x9C3\x9C2\x3\x2\x2\x2\x9C4\x9C5\x3\x2\x2"+ + "\x2\x9C5\x9C3\x3\x2\x2\x2\x9C5\x9C6\x3\x2\x2\x2\x9C6\x9C7\x3\x2\x2\x2"+ + "\x9C7\x9C9\a/\x2\x2\x9C8\x9CA\t\x4\x2\x2\x9C9\x9C8\x3\x2\x2\x2\x9CA\x9CB"+ + "\x3\x2\x2\x2\x9CB\x9C9\x3\x2\x2\x2\x9CB\x9CC\x3\x2\x2\x2\x9CC\x9CD\x3"+ + "\x2\x2\x2\x9CD\x9CF\a/\x2\x2\x9CE\x9D0\t\x4\x2\x2\x9CF\x9CE\x3\x2\x2\x2"+ + "\x9D0\x9D1\x3\x2\x2\x2\x9D1\x9CF\x3\x2\x2\x2\x9D1\x9D2\x3\x2\x2\x2\x9D2"+ + "\x9D3\x3\x2\x2\x2\x9D3\x9D5\a/\x2\x2\x9D4\x9D6\t\x4\x2\x2\x9D5\x9D4\x3"+ + "\x2\x2\x2\x9D6\x9D7\x3\x2\x2\x2\x9D7\x9D5\x3\x2\x2\x2\x9D7\x9D8\x3\x2"+ + "\x2\x2\x9D8\x9D9\x3\x2\x2\x2\x9D9\x9DB\a/\x2\x2\x9DA\x9DC\t\x4\x2\x2\x9DB"+ + "\x9DA\x3\x2\x2\x2\x9DC\x9DD\x3\x2\x2\x2\x9DD\x9DB\x3\x2\x2\x2\x9DD\x9DE"+ + "\x3\x2\x2\x2\x9DE\x9DF\x3\x2\x2\x2\x9DF\x9E0\a\x7F\x2\x2\x9E0\x222\x3"+ + "\x2\x2\x2\x9E1\x9E5\n\r\x2\x2\x9E2\x9E4\n\xE\x2\x2\x9E3\x9E2\x3\x2\x2"+ + "\x2\x9E4\x9E7\x3\x2\x2\x2\x9E5\x9E3\x3\x2\x2\x2\x9E5\x9E6\x3\x2\x2\x2"+ + "\x9E6\x224\x3\x2\x2\x2\x9E7\x9E5\x3\x2\x2\x2\x9E8\x9EA\t\f\x2\x2\x9E9"+ + "\x9E8\x3\x2\x2\x2\x9EA\x9ED\x3\x2\x2\x2\x9EB\x9E9\x3\x2\x2\x2\x9EB\x9EC"+ + "\x3\x2\x2\x2\x9EC\x9EE\x3\x2\x2\x2\x9ED\x9EB\x3\x2\x2\x2\x9EE\x9F2\x5"+ + "\x21D\x10F\x2\x9EF\x9F1\t\f\x2\x2\x9F0\x9EF\x3\x2\x2\x2\x9F1\x9F4\x3\x2"+ + "\x2\x2\x9F2\x9F0\x3\x2\x2\x2\x9F2\x9F3\x3\x2\x2\x2\x9F3\x9F6\x3\x2\x2"+ + "\x2\x9F4\x9F2\x3\x2\x2\x2\x9F5\x9F7\a\xF\x2\x2\x9F6\x9F5\x3\x2\x2\x2\x9F6"+ + "\x9F7\x3\x2\x2\x2\x9F7\x9F8\x3\x2\x2\x2\x9F8\x9F9\a\f\x2\x2\x9F9\x226"+ + "\x3\x2\x2\x2\x9FA\x9FB\t\xF\x2\x2\x9FB\x228\x3\x2\x2\x2\x9FC\x9FD\t\x10"+ + "\x2\x2\x9FD\x22A\x3\x2\x2\x2\x9FE\x9FF\t\x11\x2\x2\x9FF\x22C\x3\x2\x2"+ + "\x2\xA00\xA01\t\x12\x2\x2\xA01\x22E\x3\x2\x2\x2\xA02\xA03\t\x13\x2\x2"+ + "\xA03\x230\x3\x2\x2\x2\xA04\xA05\t\x14\x2\x2\xA05\x232\x3\x2\x2\x2\xA06"+ + "\xA07\t\x15\x2\x2\xA07\x234\x3\x2\x2\x2\xA08\xA09\t\x16\x2\x2\xA09\x236"+ + "\x3\x2\x2\x2\xA0A\xA0B\t\x17\x2\x2\xA0B\x238\x3\x2\x2\x2\xA0C\xA0D\t\x18"+ + "\x2\x2\xA0D\x23A\x3\x2\x2\x2\xA0E\xA0F\t\x19\x2\x2\xA0F\x23C\x3\x2\x2"+ + "\x2\xA10\xA11\t\x1A\x2\x2\xA11\x23E\x3\x2\x2\x2\xA12\xA13\t\x1B\x2\x2"+ + "\xA13\x240\x3\x2\x2\x2\xA14\xA15\t\x1C\x2\x2\xA15\x242\x3\x2\x2\x2\xA16"+ + "\xA17\t\x1D\x2\x2\xA17\x244\x3\x2\x2\x2\xA18\xA19\t\x1E\x2\x2\xA19\x246"+ + "\x3\x2\x2\x2\xA1A\xA1B\t\x1F\x2\x2\xA1B\x248\x3\x2\x2\x2\xA1C\xA1D\t "+ + "\x2\x2\xA1D\x24A\x3\x2\x2\x2\xA1E\xA1F\t!\x2\x2\xA1F\x24C\x3\x2\x2\x2"+ + "\xA20\xA21\t\"\x2\x2\xA21\x24E\x3\x2\x2\x2\xA22\xA23\t#\x2\x2\xA23\x250"+ + "\x3\x2\x2\x2\xA24\xA25\t$\x2\x2\xA25\x252\x3\x2\x2\x2\xA26\xA27\t%\x2"+ + "\x2\xA27\x254\x3\x2\x2\x2\xA28\xA29\t&\x2\x2\xA29\x256\x3\x2\x2\x2\xA2A"+ + "\xA2B\t\'\x2\x2\xA2B\x258\x3\x2\x2\x2\xA2C\xA2D\t(\x2\x2\xA2D\x25A\x3"+ + "\x2\x2\x2\xA2E\xA2F\t)\x2\x2\xA2F\x25C\x3\x2\x2\x2\xA30\xA31\t*\x2\x2"+ + "\xA31\x25E\x3\x2\x2\x2\xA32\xA33\t+\x2\x2\xA33\x260\x3\x2\x2\x2\xA34\xA35"+ + "\v\x2\x2\x2\xA35\x262\x3\x2\x2\x2s\x2\x466\x472\x474\x484\x486\x491\x493"+ + "\x4A3\x4A5\x4B3\x4B5\x4C1\x4CD\x4CF\x4FB\x4FD\x508\x50A\x516\x518\x529"+ + "\x52B\x53C\x53E\x5BC\x5BE\x5CC\x5CE\x5DB\x5DD\x5EB\x5ED\x5F5\x5F7\x63C"+ + "\x63E\x64A\x64C\x655\x657\x675\x677\x686\x688\x69B\x69D\x6AF\x6B1\x6BC"+ + "\x6BE\x6FD\x6FF\x70F\x711\x721\x723\x759\x75B\x83B\x843\x851\x861\x863"+ + "\x86E\x871\x879\x87C\x880\x885\x88D\x890\x895\x897\x89B\x8A3\x8A8\x8B1"+ + "\x8B6\x8B8\x8BA\x8C1\x8C7\x8CF\x8D4\x8D7\x8DA\x8DD\x8E0\x8E4\x8F2\x8FF"+ + "\x904\x90B\x911\x917\x919\x91C\x91E\x921\x925\x928\x932\x9B9\x9C5\x9CB"+ + "\x9D1\x9D7\x9DD\x9E5\x9EB\x9F2\x9F6\x2"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Grammar/VBALexer.g4 b/Rubberduck.Parsing/Grammar/VBALexer.g4 index 022b3b3ee3..50748355bd 100644 --- a/Rubberduck.Parsing/Grammar/VBALexer.g4 +++ b/Rubberduck.Parsing/Grammar/VBALexer.g4 @@ -50,8 +50,6 @@ LENB : L E N B; LONGLONG : L O N G L O N G; LONGPTR : L O N G P T R; MIDB : M I D B; -// MIDBTYPESUFFIX : M I D B '$'; -// MIDTYPESUFFIX : M I D '$'; OPTION : O P T I O N; PSET : P S E T; SCALE : S C A L E; diff --git a/Rubberduck.Parsing/Grammar/VBAParser.cs b/Rubberduck.Parsing/Grammar/VBAParser.cs index 4a13c52fba..faeee95441 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.cs +++ b/Rubberduck.Parsing/Grammar/VBAParser.cs @@ -29,75 +29,74 @@ namespace Rubberduck.Parsing.Grammar { [System.CLSCompliant(false)] public partial class VBAParser : Parser { public const int - PRINT=160, ELSEIF=90, CBYTE=7, CLOSE=67, STATIC=184, MINUS=216, OPTION_EXPLICIT=153, - L_SQUARE_BRACKET=222, DOEVENTS=23, DATELITERAL=229, ERROR=104, NOTHING=144, - EACH=88, SUB=188, STOP=186, LPAREN=214, MID=138, CVERR=21, AS=57, END_PROPERTY=95, - AT=47, DATABASE=69, GOSUB=117, CSNG=17, POW=220, DOLLAR=49, PROPERTY_LET=163, - THEN=191, XOR=206, EXIT_FOR=107, DEFINT=77, UNLOCK=196, CALL=64, LOCK_READ=133, - SET=180, BF=5, LOCK_READ_WRITE=135, ABS=1, LSET=136, RAISEEVENT=169, MIDBTYPESUFFIX=34, - SEEK=178, LONG=127, CBOOL=6, LIB=130, DIM=85, APPEND=56, OPEN=150, DIV=208, - PROPERTY_SET=164, CDBL=10, PERCENT=48, END_SELECT=96, STRING=187, SGN=39, - REM=173, TO=192, DEFDBL=75, BYVAL=61, FRIEND=112, LOOP=128, CLASS=66, - DO=86, VARIANT=198, END_WITH=99, DEFBOOL=72, OPTIONAL=151, ADDRESSOF=52, - CONST=68, RSET=177, INTEGER=125, CDEC=11, ATTRIBUTE=55, OUTPUT=157, FOR=113, - PTRSAFE=165, EQ=210, BOOLEAN=60, CIRCLE=13, NAME=140, END_FUNCTION=93, - DEFSNG=82, DEFBYTE=73, NOT=143, CINT=12, END=100, PRESERVE=159, ON_LOCAL_ERROR=149, - FLOATLITERAL=227, BINARY=59, B_CHAR=4, LENB=30, RETURN=176, EXCLAMATIONPOINT=44, - NEXT=141, GLOBAL=116, INPUTB=26, IDENTIFIER=235, WS=233, EMPTY=91, CURRENCY=19, - CCUR=8, MOD=139, WITHEVENTS=204, COLON=42, DEFLNGLNG=79, STEP=185, OPTION_BASE=152, - GT=212, PUT=167, WITH=203, CSTR=18, LOCK_WRITE=134, LINE_CONTINUATION=236, - TYPEOF=195, DEFVAR=84, DEFLNG=78, UBOUND=40, FALSE=111, ERRORCHAR=237, - UNDERSCORE=232, INTEGERLITERAL=228, END_IF=94, LOCK=126, TEXT=190, SINGLEQUOTE=231, - MULT=217, SEMICOLON=43, BYTE=63, HEXLITERAL=226, ELSE=89, IF=119, TYPE=194, - AMPERSAND=50, DEFLNGPTR=80, ENUM=101, DEFOBJ=81, IN=122, OPTION=36, DOT=45, - EXIT_DO=106, GUIDLITERAL=234, IS=124, EQV=102, WEND=200, FUNCTION=114, - HASH=46, CASE=65, GEQ=211, GET=115, PUBLIC=166, ON_ERROR=148, EXIT=24, - MIDB=33, END_ENUM=92, GOTO=118, INTDIV=209, LONGPTR=32, WIDTH=202, BEGIN=58, - EXIT_SUB=110, ASSIGN=207, WRITE=205, DOUBLE=87, EXIT_PROPERTY=109, COMMA=41, - RANDOM=168, PROPERTY_GET=162, SELECT=179, PRIVATE=161, ERASE=103, TAB=189, - BYREF=62, VERSION=199, NEQ=218, END_TYPE=98, NEW=142, ARRAY=3, INPUT=123, - SINGLE=182, ALIAS=53, SPC=183, LT=215, RESET=174, END_SUB=97, EVENT=105, - READ_WRITE=171, OPTION_COMPARE=154, ME=137, SCALE=38, CDATE=9, MIDTYPESUFFIX=35, - NULL=145, NEWLINE=230, TRUE=193, RPAREN=221, OBJECT=146, IMP=120, STRINGLITERAL=224, - OCTLITERAL=225, READ=170, DATE=70, LIKE=131, AND=54, OPTION_PRIVATE_MODULE=155, - CLNGLNG=15, PLUS=219, ANY=2, RESUME=175, INT=27, SHARED=181, EXIT_FUNCTION=108, - PSET=37, ACCESS=51, LINE_INPUT=132, ON=147, OR=156, PARAMARRAY=158, LBOUND=28, - R_SQUARE_BRACKET=223, IMPLEMENTS=121, UNTIL=197, DEBUG=22, DEFCUR=76, - CLNGPTR=16, LONGLONG=31, DECLARE=71, DEFDATE=74, FIX=25, LEN=29, REDIM=172, - LEQ=213, DEFSTR=83, LET=129, WHILE=201, CVAR=20, CLNG=14, LOAD=238, RESUME_NEXT=239; + PRINT=158, ELSEIF=88, CBYTE=7, CLOSE=65, STATIC=182, MINUS=214, OPTION_EXPLICIT=151, + L_SQUARE_BRACKET=220, DOEVENTS=23, DATELITERAL=227, ERROR=102, NOTHING=142, + EACH=86, SUB=186, STOP=184, LPAREN=212, MID=136, CVERR=21, AS=55, END_PROPERTY=93, + AT=45, DATABASE=67, GOSUB=115, CSNG=17, POW=218, DOLLAR=47, PROPERTY_LET=161, + THEN=189, XOR=204, EXIT_FOR=105, DEFINT=75, UNLOCK=194, CALL=62, LOCK_READ=131, + SET=178, BF=5, LOCK_READ_WRITE=133, ABS=1, LSET=134, RAISEEVENT=167, SEEK=176, + LONG=125, CBOOL=6, LIB=128, DIM=83, APPEND=54, OPEN=148, DIV=206, PROPERTY_SET=162, + CDBL=10, PERCENT=46, END_SELECT=94, STRING=185, SGN=37, REM=171, TO=190, + DEFDBL=73, BYVAL=59, FRIEND=110, LOOP=126, CLASS=64, DO=84, VARIANT=196, + END_WITH=97, DEFBOOL=70, OPTIONAL=149, ADDRESSOF=50, CONST=66, RSET=175, + INTEGER=123, CDEC=11, ATTRIBUTE=53, OUTPUT=155, FOR=111, PTRSAFE=163, + EQ=208, BOOLEAN=58, CIRCLE=13, NAME=138, END_FUNCTION=91, DEFSNG=80, DEFBYTE=71, + NOT=141, CINT=12, END=98, PRESERVE=157, ON_LOCAL_ERROR=147, FLOATLITERAL=225, + BINARY=57, B_CHAR=4, LENB=30, RETURN=174, EXCLAMATIONPOINT=42, NEXT=139, + GLOBAL=114, INPUTB=26, IDENTIFIER=233, WS=231, EMPTY=89, CURRENCY=19, + CCUR=8, MOD=137, WITHEVENTS=202, COLON=40, DEFLNGLNG=77, STEP=183, OPTION_BASE=150, + GT=210, PUT=165, WITH=201, CSTR=18, LOCK_WRITE=132, LINE_CONTINUATION=234, + TYPEOF=193, DEFVAR=82, DEFLNG=76, UBOUND=38, FALSE=109, ERRORCHAR=235, + UNDERSCORE=230, INTEGERLITERAL=226, END_IF=92, LOCK=124, TEXT=188, SINGLEQUOTE=229, + MULT=215, SEMICOLON=41, BYTE=61, HEXLITERAL=224, ELSE=87, IF=117, TYPE=192, + AMPERSAND=48, DEFLNGPTR=78, ENUM=99, DEFOBJ=79, IN=120, OPTION=34, DOT=43, + EXIT_DO=104, GUIDLITERAL=232, IS=122, EQV=100, WEND=198, FUNCTION=112, + HASH=44, CASE=63, GEQ=209, GET=113, PUBLIC=164, ON_ERROR=146, EXIT=24, + MIDB=33, END_ENUM=90, GOTO=116, INTDIV=207, LONGPTR=32, WIDTH=200, BEGIN=56, + EXIT_SUB=108, ASSIGN=205, WRITE=203, DOUBLE=85, EXIT_PROPERTY=107, COMMA=39, + RANDOM=166, PROPERTY_GET=160, SELECT=177, PRIVATE=159, ERASE=101, TAB=187, + BYREF=60, VERSION=197, NEQ=216, END_TYPE=96, NEW=140, ARRAY=3, INPUT=121, + SINGLE=180, ALIAS=51, SPC=181, LT=213, RESET=172, END_SUB=95, EVENT=103, + READ_WRITE=169, OPTION_COMPARE=152, ME=135, SCALE=36, CDATE=9, NULL=143, + NEWLINE=228, TRUE=191, RPAREN=219, OBJECT=144, IMP=118, STRINGLITERAL=222, + OCTLITERAL=223, READ=168, DATE=68, LIKE=129, AND=52, OPTION_PRIVATE_MODULE=153, + CLNGLNG=15, PLUS=217, ANY=2, RESUME=173, INT=27, SHARED=179, EXIT_FUNCTION=106, + PSET=35, ACCESS=49, LINE_INPUT=130, ON=145, OR=154, PARAMARRAY=156, LBOUND=28, + R_SQUARE_BRACKET=221, IMPLEMENTS=119, UNTIL=195, DEBUG=22, DEFCUR=74, + CLNGPTR=16, LONGLONG=31, DECLARE=69, DEFDATE=72, FIX=25, LEN=29, REDIM=170, + LEQ=211, DEFSTR=81, LET=127, WHILE=199, CVAR=20, CLNG=14; public static readonly string[] tokenNames = { "", "ABS", "ANY", "ARRAY", "B_CHAR", "BF", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", "CSTR", "CURRENCY", "CVAR", "CVERR", "DEBUG", "DOEVENTS", "EXIT", "FIX", "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", - "MIDB", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", - "SGN", "UBOUND", "','", "':'", "';'", "'!'", "'.'", "'#'", "'@'", "'%'", - "'$'", "'&'", "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", - "AS", "BEGIN", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", - "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", - "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", - "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", - "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", - "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", - "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", - "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", - "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", - "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", - "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", - "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "OBJECT", "ON", "ON_ERROR", - "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", - "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", - "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", - "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", "READ_WRITE", - "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", "SELECT", - "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", - "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOCK", - "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", - "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", "LEQ", "'('", - "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "'['", "']'", "STRINGLITERAL", - "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", "DATELITERAL", - "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", - "ERRORCHAR", "LOAD", "RESUME_NEXT" + "MIDB", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "','", "':'", "';'", + "'!'", "'.'", "'#'", "'@'", "'%'", "'$'", "'&'", "ACCESS", "ADDRESSOF", + "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", "BINARY", "BOOLEAN", + "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", + "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", + "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", + "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", + "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", + "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", + "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", + "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", + "IN", "INPUT", "IS", "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", + "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", + "ME", "MID", "MOD", "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "OBJECT", + "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", + "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", + "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", + "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", + "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", + "WITHEVENTS", "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", + "LEQ", "'('", "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "'['", + "']'", "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", + "DATELITERAL", "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", + "LINE_CONTINUATION", "ERRORCHAR" }; public const int RULE_startRule = 0, RULE_module = 1, RULE_moduleHeader = 2, RULE_moduleConfig = 3, @@ -2381,7 +2380,7 @@ public FileModeContext fileMode() { { State = 699; _la = _input.La(1); - if ( !(_la==APPEND || _la==BINARY || ((((_la - 123)) & ~0x3f) == 0 && ((1L << (_la - 123)) & ((1L << (INPUT - 123)) | (1L << (OUTPUT - 123)) | (1L << (RANDOM - 123)))) != 0)) ) { + if ( !(_la==APPEND || _la==BINARY || ((((_la - 121)) & ~0x3f) == 0 && ((1L << (_la - 121)) & ((1L << (INPUT - 121)) | (1L << (OUTPUT - 121)) | (1L << (RANDOM - 121)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2483,7 +2482,7 @@ public AccessContext access() { { State = 705; _la = _input.La(1); - if ( !(((((_la - 170)) & ~0x3f) == 0 && ((1L << (_la - 170)) & ((1L << (READ - 170)) | (1L << (READ_WRITE - 170)) | (1L << (WRITE - 170)))) != 0)) ) { + if ( !(((((_la - 168)) & ~0x3f) == 0 && ((1L << (_la - 168)) & ((1L << (READ - 168)) | (1L << (READ_WRITE - 168)) | (1L << (WRITE - 168)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2535,7 +2534,7 @@ public LockContext @lock() { { State = 707; _la = _input.La(1); - if ( !(((((_la - 133)) & ~0x3f) == 0 && ((1L << (_la - 133)) & ((1L << (LOCK_READ - 133)) | (1L << (LOCK_WRITE - 133)) | (1L << (LOCK_READ_WRITE - 133)) | (1L << (SHARED - 133)))) != 0)) ) { + if ( !(((((_la - 131)) & ~0x3f) == 0 && ((1L << (_la - 131)) & ((1L << (LOCK_READ - 131)) | (1L << (LOCK_WRITE - 131)) | (1L << (LOCK_READ_WRITE - 131)) | (1L << (SHARED - 131)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -5354,7 +5353,7 @@ public ConstStmtContext constStmt() { { State = 1027; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1024; visibility(); State = 1025; whiteSpace(); @@ -5554,7 +5553,7 @@ public DeclareStmtContext declareStmt() { { State = 1063; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1060; visibility(); State = 1061; whiteSpace(); @@ -6104,7 +6103,7 @@ public DefTypeContext defType() { { State = 1178; _la = _input.La(1); - if ( !(((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (DEFBOOL - 72)) | (1L << (DEFBYTE - 72)) | (1L << (DEFDATE - 72)) | (1L << (DEFDBL - 72)) | (1L << (DEFCUR - 72)) | (1L << (DEFINT - 72)) | (1L << (DEFLNG - 72)) | (1L << (DEFLNGLNG - 72)) | (1L << (DEFLNGPTR - 72)) | (1L << (DEFOBJ - 72)) | (1L << (DEFSNG - 72)) | (1L << (DEFSTR - 72)) | (1L << (DEFVAR - 72)))) != 0)) ) { + if ( !(((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (DEFBOOL - 70)) | (1L << (DEFBYTE - 70)) | (1L << (DEFDATE - 70)) | (1L << (DEFDBL - 70)) | (1L << (DEFCUR - 70)) | (1L << (DEFINT - 70)) | (1L << (DEFLNG - 70)) | (1L << (DEFLNGLNG - 70)) | (1L << (DEFLNGPTR - 70)) | (1L << (DEFOBJ - 70)) | (1L << (DEFSNG - 70)) | (1L << (DEFSTR - 70)) | (1L << (DEFVAR - 70)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -6730,7 +6729,7 @@ public EnumerationStmtContext enumerationStmt() { { State = 1245; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1242; visibility(); State = 1243; whiteSpace(); @@ -6744,7 +6743,7 @@ public EnumerationStmtContext enumerationStmt() { State = 1254; _errHandler.Sync(this); _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (L_SQUARE_BRACKET - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)) | (1L << (L_SQUARE_BRACKET - 193)) | (1L << (IDENTIFIER - 193)))) != 0)) { { { State = 1251; enumerationStmt_Constant(); @@ -7089,7 +7088,7 @@ public EventStmtContext eventStmt() { { State = 1297; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1294; visibility(); State = 1295; whiteSpace(); @@ -7157,7 +7156,7 @@ public ExitStmtContext exitStmt() { { State = 1307; _la = _input.La(1); - if ( !(((((_la - 106)) & ~0x3f) == 0 && ((1L << (_la - 106)) & ((1L << (EXIT_DO - 106)) | (1L << (EXIT_FOR - 106)) | (1L << (EXIT_FUNCTION - 106)) | (1L << (EXIT_PROPERTY - 106)) | (1L << (EXIT_SUB - 106)))) != 0)) ) { + if ( !(((((_la - 104)) & ~0x3f) == 0 && ((1L << (_la - 104)) & ((1L << (EXIT_DO - 104)) | (1L << (EXIT_FOR - 104)) | (1L << (EXIT_FUNCTION - 104)) | (1L << (EXIT_PROPERTY - 104)) | (1L << (EXIT_SUB - 104)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -7409,7 +7408,7 @@ public FunctionStmtContext functionStmt() { { State = 1351; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1348; visibility(); State = 1349; whiteSpace(); @@ -8989,7 +8988,7 @@ public PropertyGetStmtContext propertyGetStmt() { { State = 1603; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1600; visibility(); State = 1601; whiteSpace(); @@ -9104,7 +9103,7 @@ public PropertySetStmtContext propertySetStmt() { { State = 1630; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1627; visibility(); State = 1628; whiteSpace(); @@ -9210,7 +9209,7 @@ public PropertyLetStmtContext propertyLetStmt() { { State = 1652; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { State = 1649; visibility(); State = 1650; whiteSpace(); @@ -9455,9 +9454,14 @@ public EventArgumentListContext eventArgumentList() { } public partial class EventArgumentContext : ParserRuleContext { + public ITerminalNode BYREF() { return GetToken(VBAParser.BYREF, 0); } + public WhiteSpaceContext whiteSpace() { + return GetRuleContext(0); + } public ExpressionContext expression() { return GetRuleContext(0); } + public ITerminalNode BYVAL() { return GetToken(VBAParser.BYVAL, 0); } public EventArgumentContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -9482,10 +9486,25 @@ public override TResult Accept(IParseTreeVisitor visitor) { public EventArgumentContext eventArgument() { EventArgumentContext _localctx = new EventArgumentContext(_ctx, State); EnterRule(_localctx, 236, RULE_eventArgument); + int _la; try { EnterOuterAlt(_localctx, 1); { - State = 1704; expression(0); + State = 1706; + switch ( Interpreter.AdaptivePredict(_input,205,_ctx) ) { + case 1: + { + State = 1704; + _la = _input.La(1); + if ( !(_la==BYVAL || _la==BYREF) ) { + _errHandler.RecoverInline(this); + } + Consume(); + State = 1705; whiteSpace(); + } + break; + } + State = 1708; expression(0); } } catch (RecognitionException re) { @@ -9538,18 +9557,18 @@ public RedimStmtContext redimStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1706; Match(REDIM); - State = 1707; whiteSpace(); - State = 1710; - switch ( Interpreter.AdaptivePredict(_input,205,_ctx) ) { + State = 1710; Match(REDIM); + State = 1711; whiteSpace(); + State = 1714; + switch ( Interpreter.AdaptivePredict(_input,206,_ctx) ) { case 1: { - State = 1708; Match(PRESERVE); - State = 1709; whiteSpace(); + State = 1712; Match(PRESERVE); + State = 1713; whiteSpace(); } break; } - State = 1712; redimDeclarationList(); + State = 1716; redimDeclarationList(); } } catch (RecognitionException re) { @@ -9609,38 +9628,38 @@ public RedimDeclarationListContext redimDeclarationList() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1714; redimVariableDeclaration(); - State = 1725; + State = 1718; redimVariableDeclaration(); + State = 1729; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,208,_ctx); + _alt = Interpreter.AdaptivePredict(_input,209,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1716; + State = 1720; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1715; whiteSpace(); + State = 1719; whiteSpace(); } } - State = 1718; Match(COMMA); - State = 1720; - switch ( Interpreter.AdaptivePredict(_input,207,_ctx) ) { + State = 1722; Match(COMMA); + State = 1724; + switch ( Interpreter.AdaptivePredict(_input,208,_ctx) ) { case 1: { - State = 1719; whiteSpace(); + State = 1723; whiteSpace(); } break; } - State = 1722; redimVariableDeclaration(); + State = 1726; redimVariableDeclaration(); } } } - State = 1727; + State = 1731; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,208,_ctx); + _alt = Interpreter.AdaptivePredict(_input,209,_ctx); } } } @@ -9692,13 +9711,13 @@ public RedimVariableDeclarationContext redimVariableDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1728; expression(0); - State = 1732; - switch ( Interpreter.AdaptivePredict(_input,209,_ctx) ) { + State = 1732; expression(0); + State = 1736; + switch ( Interpreter.AdaptivePredict(_input,210,_ctx) ) { case 1: { - State = 1729; whiteSpace(); - State = 1730; asTypeClause(); + State = 1733; whiteSpace(); + State = 1734; asTypeClause(); } break; } @@ -9769,17 +9788,8 @@ public MidStatementContext midStatement() { try { EnterOuterAlt(_localctx, 1); { - State = 1734; modeSpecifier(); - State = 1735; Match(LPAREN); - State = 1737; - _la = _input.La(1); - if (_la==WS || _la==LINE_CONTINUATION) { - { - State = 1736; whiteSpace(); - } - } - - State = 1739; lExpression(0); + State = 1738; modeSpecifier(); + State = 1739; Match(LPAREN); State = 1741; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { @@ -9788,7 +9798,7 @@ public MidStatementContext midStatement() { } } - State = 1743; Match(COMMA); + State = 1743; lExpression(0); State = 1745; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { @@ -9797,7 +9807,7 @@ public MidStatementContext midStatement() { } } - State = 1747; lExpression(0); + State = 1747; Match(COMMA); State = 1749; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { @@ -9806,50 +9816,59 @@ public MidStatementContext midStatement() { } } - State = 1759; + State = 1751; lExpression(0); + State = 1753; + _la = _input.La(1); + if (_la==WS || _la==LINE_CONTINUATION) { + { + State = 1752; whiteSpace(); + } + } + + State = 1763; _la = _input.La(1); if (_la==COMMA) { { - State = 1751; Match(COMMA); - State = 1753; + State = 1755; Match(COMMA); + State = 1757; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1752; whiteSpace(); + State = 1756; whiteSpace(); } } - State = 1755; lExpression(0); - State = 1757; + State = 1759; lExpression(0); + State = 1761; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1756; whiteSpace(); + State = 1760; whiteSpace(); } } } } - State = 1761; Match(RPAREN); - State = 1763; + State = 1765; Match(RPAREN); + State = 1767; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1762; whiteSpace(); + State = 1766; whiteSpace(); } } - State = 1765; Match(ASSIGN); - State = 1767; - switch ( Interpreter.AdaptivePredict(_input,218,_ctx) ) { + State = 1769; Match(ASSIGN); + State = 1771; + switch ( Interpreter.AdaptivePredict(_input,219,_ctx) ) { case 1: { - State = 1766; whiteSpace(); + State = 1770; whiteSpace(); } break; } - State = 1769; expression(0); + State = 1773; expression(0); } } catch (RecognitionException re) { @@ -9864,9 +9883,8 @@ public MidStatementContext midStatement() { } public partial class ModeSpecifierContext : ParserRuleContext { - public ITerminalNode MIDTYPESUFFIX() { return GetToken(VBAParser.MIDTYPESUFFIX, 0); } - public ITerminalNode MIDBTYPESUFFIX() { return GetToken(VBAParser.MIDBTYPESUFFIX, 0); } public ITerminalNode MIDB() { return GetToken(VBAParser.MIDB, 0); } + public ITerminalNode DOLLAR() { return GetToken(VBAParser.DOLLAR, 0); } public ITerminalNode MID() { return GetToken(VBAParser.MID, 0); } public ModeSpecifierContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) @@ -9896,12 +9914,20 @@ public ModeSpecifierContext modeSpecifier() { try { EnterOuterAlt(_localctx, 1); { - State = 1771; + State = 1775; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX))) != 0) || _la==MID) ) { + if ( !(_la==MIDB || _la==MID) ) { _errHandler.RecoverInline(this); } Consume(); + State = 1777; + _la = _input.La(1); + if (_la==DOLLAR) { + { + State = 1776; Match(DOLLAR); + } + } + } } catch (RecognitionException re) { @@ -9946,7 +9972,7 @@ public IntegerExpressionContext integerExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 1773; expression(0); + State = 1779; expression(0); } } catch (RecognitionException re) { @@ -9996,14 +10022,14 @@ public CallStmtContext callStmt() { CallStmtContext _localctx = new CallStmtContext(_ctx, State); EnterRule(_localctx, 250, RULE_callStmt); try { - State = 1785; + State = 1791; switch (_input.La(1)) { case CALL: EnterOuterAlt(_localctx, 1); { - State = 1775; Match(CALL); - State = 1776; whiteSpace(); - State = 1777; expression(0); + State = 1781; Match(CALL); + State = 1782; whiteSpace(); + State = 1783; expression(0); } break; case ABS: @@ -10037,8 +10063,6 @@ public CallStmtContext callStmt() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -10137,17 +10161,15 @@ public CallStmtContext callStmt() { case WS: case IDENTIFIER: case LINE_CONTINUATION: - case LOAD: - case RESUME_NEXT: EnterOuterAlt(_localctx, 2); { - State = 1779; expression(0); - State = 1783; - switch ( Interpreter.AdaptivePredict(_input,219,_ctx) ) { + State = 1785; expression(0); + State = 1789; + switch ( Interpreter.AdaptivePredict(_input,221,_ctx) ) { case 1: { - State = 1780; whiteSpace(); - State = 1781; argumentList(); + State = 1786; whiteSpace(); + State = 1787; argumentList(); } break; } @@ -10204,17 +10226,17 @@ public ResumeStmtContext resumeStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1787; Match(RESUME); - State = 1793; - switch ( Interpreter.AdaptivePredict(_input,222,_ctx) ) { + State = 1793; Match(RESUME); + State = 1799; + switch ( Interpreter.AdaptivePredict(_input,224,_ctx) ) { case 1: { - State = 1788; whiteSpace(); - State = 1791; + State = 1794; whiteSpace(); + State = 1797; switch (_input.La(1)) { case NEXT: { - State = 1789; Match(NEXT); + State = 1795; Match(NEXT); } break; case ABS: @@ -10248,8 +10270,6 @@ public ResumeStmtContext resumeStmt() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -10348,10 +10368,8 @@ public ResumeStmtContext resumeStmt() { case WS: case IDENTIFIER: case LINE_CONTINUATION: - case LOAD: - case RESUME_NEXT: { - State = 1790; expression(0); + State = 1796; expression(0); } break; default: @@ -10402,7 +10420,7 @@ public ReturnStmtContext returnStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1795; Match(RETURN); + State = 1801; Match(RETURN); } } catch (RecognitionException re) { @@ -10459,27 +10477,27 @@ public RsetStmtContext rsetStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1797; Match(RSET); - State = 1798; whiteSpace(); - State = 1799; expression(0); - State = 1801; + State = 1803; Match(RSET); + State = 1804; whiteSpace(); + State = 1805; expression(0); + State = 1807; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1800; whiteSpace(); + State = 1806; whiteSpace(); } } - State = 1803; Match(EQ); - State = 1805; - switch ( Interpreter.AdaptivePredict(_input,224,_ctx) ) { + State = 1809; Match(EQ); + State = 1811; + switch ( Interpreter.AdaptivePredict(_input,226,_ctx) ) { case 1: { - State = 1804; whiteSpace(); + State = 1810; whiteSpace(); } break; } - State = 1807; expression(0); + State = 1813; expression(0); } } catch (RecognitionException re) { @@ -10522,7 +10540,7 @@ public StopStmtContext stopStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1809; Match(STOP); + State = 1815; Match(STOP); } } catch (RecognitionException re) { @@ -10578,13 +10596,13 @@ public NameStmtContext nameStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1811; Match(NAME); - State = 1812; whiteSpace(); - State = 1813; expression(0); - State = 1814; whiteSpace(); - State = 1815; Match(AS); - State = 1816; whiteSpace(); - State = 1817; expression(0); + State = 1817; Match(NAME); + State = 1818; whiteSpace(); + State = 1819; expression(0); + State = 1820; whiteSpace(); + State = 1821; Match(AS); + State = 1822; whiteSpace(); + State = 1823; expression(0); } } catch (RecognitionException re) { @@ -10652,50 +10670,50 @@ public SelectCaseStmtContext selectCaseStmt() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1819; Match(SELECT); - State = 1821; + State = 1825; Match(SELECT); + State = 1827; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1820; whiteSpace(); + State = 1826; whiteSpace(); } } - State = 1823; Match(CASE); - State = 1825; - switch ( Interpreter.AdaptivePredict(_input,226,_ctx) ) { + State = 1829; Match(CASE); + State = 1831; + switch ( Interpreter.AdaptivePredict(_input,228,_ctx) ) { case 1: { - State = 1824; whiteSpace(); + State = 1830; whiteSpace(); } break; } - State = 1827; selectExpression(); - State = 1828; endOfStatement(); - State = 1832; + State = 1833; selectExpression(); + State = 1834; endOfStatement(); + State = 1838; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,227,_ctx); + _alt = Interpreter.AdaptivePredict(_input,229,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1829; caseClause(); + State = 1835; caseClause(); } } } - State = 1834; + State = 1840; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,227,_ctx); + _alt = Interpreter.AdaptivePredict(_input,229,_ctx); } - State = 1836; + State = 1842; _la = _input.La(1); if (_la==CASE) { { - State = 1835; caseElseClause(); + State = 1841; caseElseClause(); } } - State = 1838; Match(END_SELECT); + State = 1844; Match(END_SELECT); } } catch (RecognitionException re) { @@ -10740,7 +10758,7 @@ public SelectExpressionContext selectExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 1840; expression(0); + State = 1846; expression(0); } } catch (RecognitionException re) { @@ -10807,43 +10825,43 @@ public CaseClauseContext caseClause() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1842; Match(CASE); - State = 1843; whiteSpace(); - State = 1844; rangeClause(); - State = 1855; + State = 1848; Match(CASE); + State = 1849; whiteSpace(); + State = 1850; rangeClause(); + State = 1861; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,231,_ctx); + _alt = Interpreter.AdaptivePredict(_input,233,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1846; + State = 1852; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1845; whiteSpace(); + State = 1851; whiteSpace(); } } - State = 1848; Match(COMMA); - State = 1850; - switch ( Interpreter.AdaptivePredict(_input,230,_ctx) ) { + State = 1854; Match(COMMA); + State = 1856; + switch ( Interpreter.AdaptivePredict(_input,232,_ctx) ) { case 1: { - State = 1849; whiteSpace(); + State = 1855; whiteSpace(); } break; } - State = 1852; rangeClause(); + State = 1858; rangeClause(); } } } - State = 1857; + State = 1863; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,231,_ctx); + _alt = Interpreter.AdaptivePredict(_input,233,_ctx); } - State = 1858; endOfStatement(); - State = 1859; block(); + State = 1864; endOfStatement(); + State = 1865; block(); } } catch (RecognitionException re) { @@ -10897,18 +10915,18 @@ public CaseElseClauseContext caseElseClause() { try { EnterOuterAlt(_localctx, 1); { - State = 1861; Match(CASE); - State = 1863; + State = 1867; Match(CASE); + State = 1869; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1862; whiteSpace(); + State = 1868; whiteSpace(); } } - State = 1865; Match(ELSE); - State = 1866; endOfStatement(); - State = 1867; block(); + State = 1871; Match(ELSE); + State = 1872; endOfStatement(); + State = 1873; block(); } } catch (RecognitionException re) { @@ -10969,55 +10987,55 @@ public RangeClauseContext rangeClause() { EnterRule(_localctx, 270, RULE_rangeClause); int _la; try { - State = 1888; - switch ( Interpreter.AdaptivePredict(_input,236,_ctx) ) { + State = 1894; + switch ( Interpreter.AdaptivePredict(_input,238,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 1873; - switch ( Interpreter.AdaptivePredict(_input,234,_ctx) ) { + State = 1879; + switch ( Interpreter.AdaptivePredict(_input,236,_ctx) ) { case 1: { - State = 1869; Match(IS); - State = 1871; + State = 1875; Match(IS); + State = 1877; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1870; whiteSpace(); + State = 1876; whiteSpace(); } } } break; } - State = 1875; comparisonOperator(); - State = 1877; - switch ( Interpreter.AdaptivePredict(_input,235,_ctx) ) { + State = 1881; comparisonOperator(); + State = 1883; + switch ( Interpreter.AdaptivePredict(_input,237,_ctx) ) { case 1: { - State = 1876; whiteSpace(); + State = 1882; whiteSpace(); } break; } - State = 1879; expression(0); + State = 1885; expression(0); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 1881; selectStartValue(); - State = 1882; whiteSpace(); - State = 1883; Match(TO); - State = 1884; whiteSpace(); - State = 1885; selectEndValue(); + State = 1887; selectStartValue(); + State = 1888; whiteSpace(); + State = 1889; Match(TO); + State = 1890; whiteSpace(); + State = 1891; selectEndValue(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 1887; expression(0); + State = 1893; expression(0); } break; } @@ -11064,7 +11082,7 @@ public SelectStartValueContext selectStartValue() { try { EnterOuterAlt(_localctx, 1); { - State = 1890; expression(0); + State = 1896; expression(0); } } catch (RecognitionException re) { @@ -11109,7 +11127,7 @@ public SelectEndValueContext selectEndValue() { try { EnterOuterAlt(_localctx, 1); { - State = 1892; expression(0); + State = 1898; expression(0); } } catch (RecognitionException re) { @@ -11166,27 +11184,27 @@ public SetStmtContext setStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1894; Match(SET); - State = 1895; whiteSpace(); - State = 1896; lExpression(0); - State = 1898; + State = 1900; Match(SET); + State = 1901; whiteSpace(); + State = 1902; lExpression(0); + State = 1904; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1897; whiteSpace(); + State = 1903; whiteSpace(); } } - State = 1900; Match(EQ); - State = 1902; - switch ( Interpreter.AdaptivePredict(_input,238,_ctx) ) { + State = 1906; Match(EQ); + State = 1908; + switch ( Interpreter.AdaptivePredict(_input,240,_ctx) ) { case 1: { - State = 1901; whiteSpace(); + State = 1907; whiteSpace(); } break; } - State = 1904; expression(0); + State = 1910; expression(0); } } catch (RecognitionException re) { @@ -11253,53 +11271,53 @@ public SubStmtContext subStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 1909; + State = 1915; _la = _input.La(1); - if (((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) { + if (((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) { { - State = 1906; visibility(); - State = 1907; whiteSpace(); + State = 1912; visibility(); + State = 1913; whiteSpace(); } } - State = 1913; + State = 1919; _la = _input.La(1); if (_la==STATIC) { { - State = 1911; Match(STATIC); - State = 1912; whiteSpace(); + State = 1917; Match(STATIC); + State = 1918; whiteSpace(); } } - State = 1915; Match(SUB); - State = 1917; + State = 1921; Match(SUB); + State = 1923; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1916; whiteSpace(); + State = 1922; whiteSpace(); } } - State = 1919; subroutineName(); - State = 1924; - switch ( Interpreter.AdaptivePredict(_input,243,_ctx) ) { + State = 1925; subroutineName(); + State = 1930; + switch ( Interpreter.AdaptivePredict(_input,245,_ctx) ) { case 1: { - State = 1921; + State = 1927; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1920; whiteSpace(); + State = 1926; whiteSpace(); } } - State = 1923; argList(); + State = 1929; argList(); } break; } - State = 1926; endOfStatement(); - State = 1927; block(); - State = 1928; Match(END_SUB); + State = 1932; endOfStatement(); + State = 1933; block(); + State = 1934; Match(END_SUB); } } catch (RecognitionException re) { @@ -11344,7 +11362,7 @@ public SubroutineNameContext subroutineName() { try { EnterOuterAlt(_localctx, 1); { - State = 1930; identifier(); + State = 1936; identifier(); } } catch (RecognitionException re) { @@ -11395,21 +11413,21 @@ public PublicTypeDeclarationContext publicTypeDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1934; + State = 1940; _la = _input.La(1); if (_la==GLOBAL || _la==PUBLIC) { { - State = 1932; + State = 1938; _la = _input.La(1); if ( !(_la==GLOBAL || _la==PUBLIC) ) { _errHandler.RecoverInline(this); } Consume(); - State = 1933; whiteSpace(); + State = 1939; whiteSpace(); } } - State = 1936; udtDeclaration(); + State = 1942; udtDeclaration(); } } catch (RecognitionException re) { @@ -11458,9 +11476,9 @@ public PrivateTypeDeclarationContext privateTypeDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1938; Match(PRIVATE); - State = 1939; whiteSpace(); - State = 1940; udtDeclaration(); + State = 1944; Match(PRIVATE); + State = 1945; whiteSpace(); + State = 1946; udtDeclaration(); } } catch (RecognitionException re) { @@ -11519,13 +11537,13 @@ public UdtDeclarationContext udtDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1942; Match(TYPE); - State = 1943; whiteSpace(); - State = 1944; untypedIdentifier(); - State = 1945; endOfStatement(); - State = 1946; udtMemberList(); - State = 1947; endOfStatement(); - State = 1948; Match(END_TYPE); + State = 1948; Match(TYPE); + State = 1949; whiteSpace(); + State = 1950; untypedIdentifier(); + State = 1951; endOfStatement(); + State = 1952; udtMemberList(); + State = 1953; endOfStatement(); + State = 1954; Match(END_TYPE); } } catch (RecognitionException re) { @@ -11580,22 +11598,22 @@ public UdtMemberListContext udtMemberList() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1950; udtMember(); - State = 1956; + State = 1956; udtMember(); + State = 1962; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,245,_ctx); + _alt = Interpreter.AdaptivePredict(_input,247,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1951; endOfStatement(); - State = 1952; udtMember(); + State = 1957; endOfStatement(); + State = 1958; udtMember(); } } } - State = 1958; + State = 1964; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,245,_ctx); + _alt = Interpreter.AdaptivePredict(_input,247,_ctx); } } } @@ -11642,19 +11660,19 @@ public UdtMemberContext udtMember() { UdtMemberContext _localctx = new UdtMemberContext(_ctx, State); EnterRule(_localctx, 290, RULE_udtMember); try { - State = 1961; - switch ( Interpreter.AdaptivePredict(_input,246,_ctx) ) { + State = 1967; + switch ( Interpreter.AdaptivePredict(_input,248,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 1959; reservedNameMemberDeclaration(); + State = 1965; reservedNameMemberDeclaration(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 1960; untypedNameMemberDeclaration(); + State = 1966; untypedNameMemberDeclaration(); } break; } @@ -11708,16 +11726,16 @@ public UntypedNameMemberDeclarationContext untypedNameMemberDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1963; untypedIdentifier(); - State = 1965; + State = 1969; untypedIdentifier(); + State = 1971; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1964; whiteSpace(); + State = 1970; whiteSpace(); } } - State = 1967; optionalArrayClause(); + State = 1973; optionalArrayClause(); } } catch (RecognitionException re) { @@ -11768,9 +11786,9 @@ public ReservedNameMemberDeclarationContext reservedNameMemberDeclaration() { try { EnterOuterAlt(_localctx, 1); { - State = 1969; unrestrictedIdentifier(); - State = 1970; whiteSpace(); - State = 1971; asTypeClause(); + State = 1975; unrestrictedIdentifier(); + State = 1976; whiteSpace(); + State = 1977; asTypeClause(); } } catch (RecognitionException re) { @@ -11822,16 +11840,16 @@ public OptionalArrayClauseContext optionalArrayClause() { try { EnterOuterAlt(_localctx, 1); { - State = 1976; + State = 1982; _la = _input.La(1); if (_la==LPAREN) { { - State = 1973; arrayDim(); - State = 1974; whiteSpace(); + State = 1979; arrayDim(); + State = 1980; whiteSpace(); } } - State = 1978; asTypeClause(); + State = 1984; asTypeClause(); } } catch (RecognitionException re) { @@ -11885,32 +11903,32 @@ public ArrayDimContext arrayDim() { try { EnterOuterAlt(_localctx, 1); { - State = 1980; Match(LPAREN); - State = 1982; - switch ( Interpreter.AdaptivePredict(_input,249,_ctx) ) { + State = 1986; Match(LPAREN); + State = 1988; + switch ( Interpreter.AdaptivePredict(_input,251,_ctx) ) { case 1: { - State = 1981; whiteSpace(); + State = 1987; whiteSpace(); } break; } - State = 1985; - switch ( Interpreter.AdaptivePredict(_input,250,_ctx) ) { + State = 1991; + switch ( Interpreter.AdaptivePredict(_input,252,_ctx) ) { case 1: { - State = 1984; boundsList(); + State = 1990; boundsList(); } break; } - State = 1988; + State = 1994; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1987; whiteSpace(); + State = 1993; whiteSpace(); } } - State = 1990; Match(RPAREN); + State = 1996; Match(RPAREN); } } catch (RecognitionException re) { @@ -11970,38 +11988,38 @@ public BoundsListContext boundsList() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 1992; dimSpec(); - State = 2003; + State = 1998; dimSpec(); + State = 2009; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,254,_ctx); + _alt = Interpreter.AdaptivePredict(_input,256,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 1994; + State = 2000; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 1993; whiteSpace(); + State = 1999; whiteSpace(); } } - State = 1996; Match(COMMA); - State = 1998; - switch ( Interpreter.AdaptivePredict(_input,253,_ctx) ) { + State = 2002; Match(COMMA); + State = 2004; + switch ( Interpreter.AdaptivePredict(_input,255,_ctx) ) { case 1: { - State = 1997; whiteSpace(); + State = 2003; whiteSpace(); } break; } - State = 2000; dimSpec(); + State = 2006; dimSpec(); } } } - State = 2005; + State = 2011; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,254,_ctx); + _alt = Interpreter.AdaptivePredict(_input,256,_ctx); } } } @@ -12053,23 +12071,23 @@ public DimSpecContext dimSpec() { try { EnterOuterAlt(_localctx, 1); { - State = 2010; - switch ( Interpreter.AdaptivePredict(_input,256,_ctx) ) { + State = 2016; + switch ( Interpreter.AdaptivePredict(_input,258,_ctx) ) { case 1: { - State = 2006; lowerBound(); - State = 2008; - switch ( Interpreter.AdaptivePredict(_input,255,_ctx) ) { + State = 2012; lowerBound(); + State = 2014; + switch ( Interpreter.AdaptivePredict(_input,257,_ctx) ) { case 1: { - State = 2007; whiteSpace(); + State = 2013; whiteSpace(); } break; } } break; } - State = 2012; upperBound(); + State = 2018; upperBound(); } } catch (RecognitionException re) { @@ -12119,16 +12137,16 @@ public LowerBoundContext lowerBound() { try { EnterOuterAlt(_localctx, 1); { - State = 2014; constantExpression(); - State = 2016; + State = 2020; constantExpression(); + State = 2022; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2015; whiteSpace(); + State = 2021; whiteSpace(); } } - State = 2018; Match(TO); + State = 2024; Match(TO); } } catch (RecognitionException re) { @@ -12173,7 +12191,7 @@ public UpperBoundContext upperBound() { try { EnterOuterAlt(_localctx, 1); { - State = 2020; constantExpression(); + State = 2026; constantExpression(); } } catch (RecognitionException re) { @@ -12218,7 +12236,7 @@ public ConstantExpressionContext constantExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 2022; expression(0); + State = 2028; expression(0); } } catch (RecognitionException re) { @@ -12275,16 +12293,16 @@ public VariableStmtContext variableStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 2027; + State = 2033; switch (_input.La(1)) { case DIM: { - State = 2024; Match(DIM); + State = 2030; Match(DIM); } break; case STATIC: { - State = 2025; Match(STATIC); + State = 2031; Match(STATIC); } break; case FRIEND: @@ -12292,23 +12310,23 @@ public VariableStmtContext variableStmt() { case PRIVATE: case PUBLIC: { - State = 2026; visibility(); + State = 2032; visibility(); } break; default: throw new NoViableAltException(this); } - State = 2029; whiteSpace(); - State = 2032; - switch ( Interpreter.AdaptivePredict(_input,259,_ctx) ) { + State = 2035; whiteSpace(); + State = 2038; + switch ( Interpreter.AdaptivePredict(_input,261,_ctx) ) { case 1: { - State = 2030; Match(WITHEVENTS); - State = 2031; whiteSpace(); + State = 2036; Match(WITHEVENTS); + State = 2037; whiteSpace(); } break; } - State = 2034; variableListStmt(); + State = 2040; variableListStmt(); } } catch (RecognitionException re) { @@ -12368,38 +12386,38 @@ public VariableListStmtContext variableListStmt() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2036; variableSubStmt(); - State = 2047; + State = 2042; variableSubStmt(); + State = 2053; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,262,_ctx); + _alt = Interpreter.AdaptivePredict(_input,264,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2038; + State = 2044; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2037; whiteSpace(); + State = 2043; whiteSpace(); } } - State = 2040; Match(COMMA); - State = 2042; + State = 2046; Match(COMMA); + State = 2048; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2041; whiteSpace(); + State = 2047; whiteSpace(); } } - State = 2044; variableSubStmt(); + State = 2050; variableSubStmt(); } } } - State = 2049; + State = 2055; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,262,_ctx); + _alt = Interpreter.AdaptivePredict(_input,264,_ctx); } } } @@ -12460,62 +12478,62 @@ public VariableSubStmtContext variableSubStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 2050; identifier(); - State = 2068; - switch ( Interpreter.AdaptivePredict(_input,268,_ctx) ) { + State = 2056; identifier(); + State = 2074; + switch ( Interpreter.AdaptivePredict(_input,270,_ctx) ) { case 1: { - State = 2052; + State = 2058; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2051; whiteSpace(); + State = 2057; whiteSpace(); } } - State = 2054; Match(LPAREN); - State = 2056; - switch ( Interpreter.AdaptivePredict(_input,264,_ctx) ) { + State = 2060; Match(LPAREN); + State = 2062; + switch ( Interpreter.AdaptivePredict(_input,266,_ctx) ) { case 1: { - State = 2055; whiteSpace(); + State = 2061; whiteSpace(); } break; } - State = 2062; + State = 2068; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (EMPTY - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (LPAREN - 195)) | (1L << (MINUS - 195)) | (1L << (L_SQUARE_BRACKET - 195)) | (1L << (STRINGLITERAL - 195)) | (1L << (OCTLITERAL - 195)) | (1L << (HEXLITERAL - 195)) | (1L << (FLOATLITERAL - 195)) | (1L << (INTEGERLITERAL - 195)) | (1L << (DATELITERAL - 195)) | (1L << (WS - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (LINE_CONTINUATION - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (EMPTY - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)) | (1L << (LPAREN - 193)) | (1L << (MINUS - 193)) | (1L << (L_SQUARE_BRACKET - 193)) | (1L << (STRINGLITERAL - 193)) | (1L << (OCTLITERAL - 193)) | (1L << (HEXLITERAL - 193)) | (1L << (FLOATLITERAL - 193)) | (1L << (INTEGERLITERAL - 193)) | (1L << (DATELITERAL - 193)) | (1L << (WS - 193)) | (1L << (IDENTIFIER - 193)) | (1L << (LINE_CONTINUATION - 193)))) != 0)) { { - State = 2058; subscripts(); - State = 2060; + State = 2064; subscripts(); + State = 2066; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2059; whiteSpace(); + State = 2065; whiteSpace(); } } } } - State = 2064; Match(RPAREN); - State = 2066; - switch ( Interpreter.AdaptivePredict(_input,267,_ctx) ) { + State = 2070; Match(RPAREN); + State = 2072; + switch ( Interpreter.AdaptivePredict(_input,269,_ctx) ) { case 1: { - State = 2065; whiteSpace(); + State = 2071; whiteSpace(); } break; } } break; } - State = 2073; - switch ( Interpreter.AdaptivePredict(_input,269,_ctx) ) { + State = 2079; + switch ( Interpreter.AdaptivePredict(_input,271,_ctx) ) { case 1: { - State = 2070; whiteSpace(); - State = 2071; asTypeClause(); + State = 2076; whiteSpace(); + State = 2077; asTypeClause(); } break; } @@ -12574,12 +12592,12 @@ public WhileWendStmtContext whileWendStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 2075; Match(WHILE); - State = 2076; whiteSpace(); - State = 2077; expression(0); - State = 2078; endOfStatement(); - State = 2079; block(); - State = 2080; Match(WEND); + State = 2081; Match(WHILE); + State = 2082; whiteSpace(); + State = 2083; expression(0); + State = 2084; endOfStatement(); + State = 2085; block(); + State = 2086; Match(WEND); } } catch (RecognitionException re) { @@ -12635,12 +12653,12 @@ public WithStmtContext withStmt() { try { EnterOuterAlt(_localctx, 1); { - State = 2082; Match(WITH); - State = 2083; whiteSpace(); - State = 2084; expression(0); - State = 2085; endOfStatement(); - State = 2086; block(); - State = 2087; Match(END_WITH); + State = 2088; Match(WITH); + State = 2089; whiteSpace(); + State = 2090; expression(0); + State = 2091; endOfStatement(); + State = 2092; block(); + State = 2093; Match(END_WITH); } } catch (RecognitionException re) { @@ -12713,90 +12731,90 @@ public LineSpecialFormContext lineSpecialForm() { try { EnterOuterAlt(_localctx, 1); { - State = 2089; expression(0); - State = 2090; whiteSpace(); - State = 2095; + State = 2095; expression(0); + State = 2096; whiteSpace(); + State = 2101; _la = _input.La(1); if (_la==STEP) { { - State = 2091; Match(STEP); - State = 2093; + State = 2097; Match(STEP); + State = 2099; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2092; whiteSpace(); + State = 2098; whiteSpace(); } } } } - State = 2097; tuple(); - State = 2098; Match(MINUS); - State = 2103; + State = 2103; tuple(); + State = 2104; Match(MINUS); + State = 2109; _la = _input.La(1); if (_la==STEP) { { - State = 2099; Match(STEP); - State = 2101; + State = 2105; Match(STEP); + State = 2107; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2100; whiteSpace(); + State = 2106; whiteSpace(); } } } } - State = 2105; tuple(); - State = 2107; - switch ( Interpreter.AdaptivePredict(_input,274,_ctx) ) { + State = 2111; tuple(); + State = 2113; + switch ( Interpreter.AdaptivePredict(_input,276,_ctx) ) { case 1: { - State = 2106; whiteSpace(); + State = 2112; whiteSpace(); } break; } - State = 2114; - switch ( Interpreter.AdaptivePredict(_input,276,_ctx) ) { + State = 2120; + switch ( Interpreter.AdaptivePredict(_input,278,_ctx) ) { case 1: { - State = 2109; Match(COMMA); - State = 2111; - switch ( Interpreter.AdaptivePredict(_input,275,_ctx) ) { + State = 2115; Match(COMMA); + State = 2117; + switch ( Interpreter.AdaptivePredict(_input,277,_ctx) ) { case 1: { - State = 2110; whiteSpace(); + State = 2116; whiteSpace(); } break; } - State = 2113; expression(0); + State = 2119; expression(0); } break; } - State = 2117; - switch ( Interpreter.AdaptivePredict(_input,277,_ctx) ) { + State = 2123; + switch ( Interpreter.AdaptivePredict(_input,279,_ctx) ) { case 1: { - State = 2116; whiteSpace(); + State = 2122; whiteSpace(); } break; } - State = 2124; + State = 2130; _la = _input.La(1); if (_la==COMMA) { { - State = 2119; Match(COMMA); - State = 2121; + State = 2125; Match(COMMA); + State = 2127; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2120; whiteSpace(); + State = 2126; whiteSpace(); } } - State = 2123; lineSpecialFormOption(); + State = 2129; lineSpecialFormOption(); } } @@ -12865,51 +12883,51 @@ public CircleSpecialFormContext circleSpecialForm() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2134; + State = 2140; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (EMPTY - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (LPAREN - 195)) | (1L << (MINUS - 195)) | (1L << (L_SQUARE_BRACKET - 195)) | (1L << (STRINGLITERAL - 195)) | (1L << (OCTLITERAL - 195)) | (1L << (HEXLITERAL - 195)) | (1L << (FLOATLITERAL - 195)) | (1L << (INTEGERLITERAL - 195)) | (1L << (DATELITERAL - 195)) | (1L << (WS - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (LINE_CONTINUATION - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (EMPTY - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)) | (1L << (LPAREN - 193)) | (1L << (MINUS - 193)) | (1L << (L_SQUARE_BRACKET - 193)) | (1L << (STRINGLITERAL - 193)) | (1L << (OCTLITERAL - 193)) | (1L << (HEXLITERAL - 193)) | (1L << (FLOATLITERAL - 193)) | (1L << (INTEGERLITERAL - 193)) | (1L << (DATELITERAL - 193)) | (1L << (WS - 193)) | (1L << (IDENTIFIER - 193)) | (1L << (LINE_CONTINUATION - 193)))) != 0)) { { - State = 2126; expression(0); - State = 2128; + State = 2132; expression(0); + State = 2134; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2127; whiteSpace(); + State = 2133; whiteSpace(); } } - State = 2130; Match(DOT); - State = 2132; + State = 2136; Match(DOT); + State = 2138; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2131; whiteSpace(); + State = 2137; whiteSpace(); } } } } - State = 2136; Match(CIRCLE); - State = 2137; whiteSpace(); - State = 2142; + State = 2142; Match(CIRCLE); + State = 2143; whiteSpace(); + State = 2148; _la = _input.La(1); if (_la==STEP) { { - State = 2138; Match(STEP); - State = 2140; + State = 2144; Match(STEP); + State = 2146; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2139; whiteSpace(); + State = 2145; whiteSpace(); } } } } - State = 2144; tuple(); - State = 2153; + State = 2150; tuple(); + State = 2159; _errHandler.Sync(this); _alt = 1; do { @@ -12917,33 +12935,33 @@ public CircleSpecialFormContext circleSpecialForm() { case 1: { { - State = 2146; + State = 2152; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2145; whiteSpace(); + State = 2151; whiteSpace(); } } - State = 2148; Match(COMMA); - State = 2150; - switch ( Interpreter.AdaptivePredict(_input,286,_ctx) ) { + State = 2154; Match(COMMA); + State = 2156; + switch ( Interpreter.AdaptivePredict(_input,288,_ctx) ) { case 1: { - State = 2149; whiteSpace(); + State = 2155; whiteSpace(); } break; } - State = 2152; expression(0); + State = 2158; expression(0); } } break; default: throw new NoViableAltException(this); } - State = 2155; + State = 2161; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,287,_ctx); + _alt = Interpreter.AdaptivePredict(_input,289,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } } @@ -13005,52 +13023,52 @@ public ScaleSpecialFormContext scaleSpecialForm() { try { EnterOuterAlt(_localctx, 1); { - State = 2165; + State = 2171; _la = _input.La(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (EMPTY - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (LPAREN - 195)) | (1L << (MINUS - 195)) | (1L << (L_SQUARE_BRACKET - 195)) | (1L << (STRINGLITERAL - 195)) | (1L << (OCTLITERAL - 195)) | (1L << (HEXLITERAL - 195)) | (1L << (FLOATLITERAL - 195)) | (1L << (INTEGERLITERAL - 195)) | (1L << (DATELITERAL - 195)) | (1L << (WS - 195)) | (1L << (IDENTIFIER - 195)) | (1L << (LINE_CONTINUATION - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (EMPTY - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)) | (1L << (LPAREN - 193)) | (1L << (MINUS - 193)) | (1L << (L_SQUARE_BRACKET - 193)) | (1L << (STRINGLITERAL - 193)) | (1L << (OCTLITERAL - 193)) | (1L << (HEXLITERAL - 193)) | (1L << (FLOATLITERAL - 193)) | (1L << (INTEGERLITERAL - 193)) | (1L << (DATELITERAL - 193)) | (1L << (WS - 193)) | (1L << (IDENTIFIER - 193)) | (1L << (LINE_CONTINUATION - 193)))) != 0)) { { - State = 2157; expression(0); - State = 2159; + State = 2163; expression(0); + State = 2165; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2158; whiteSpace(); + State = 2164; whiteSpace(); } } - State = 2161; Match(DOT); - State = 2163; + State = 2167; Match(DOT); + State = 2169; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2162; whiteSpace(); + State = 2168; whiteSpace(); } } } } - State = 2167; Match(SCALE); - State = 2168; whiteSpace(); - State = 2169; tuple(); - State = 2171; + State = 2173; Match(SCALE); + State = 2174; whiteSpace(); + State = 2175; tuple(); + State = 2177; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2170; whiteSpace(); + State = 2176; whiteSpace(); } } - State = 2173; Match(MINUS); - State = 2175; + State = 2179; Match(MINUS); + State = 2181; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2174; whiteSpace(); + State = 2180; whiteSpace(); } } - State = 2177; tuple(); + State = 2183; tuple(); } } catch (RecognitionException re) { @@ -13108,43 +13126,43 @@ public TupleContext tuple() { try { EnterOuterAlt(_localctx, 1); { - State = 2179; Match(LPAREN); - State = 2181; - switch ( Interpreter.AdaptivePredict(_input,293,_ctx) ) { + State = 2185; Match(LPAREN); + State = 2187; + switch ( Interpreter.AdaptivePredict(_input,295,_ctx) ) { case 1: { - State = 2180; whiteSpace(); + State = 2186; whiteSpace(); } break; } - State = 2183; expression(0); - State = 2185; + State = 2189; expression(0); + State = 2191; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2184; whiteSpace(); + State = 2190; whiteSpace(); } } - State = 2187; Match(COMMA); - State = 2189; - switch ( Interpreter.AdaptivePredict(_input,295,_ctx) ) { + State = 2193; Match(COMMA); + State = 2195; + switch ( Interpreter.AdaptivePredict(_input,297,_ctx) ) { case 1: { - State = 2188; whiteSpace(); + State = 2194; whiteSpace(); } break; } - State = 2191; expression(0); - State = 2193; + State = 2197; expression(0); + State = 2199; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2192; whiteSpace(); + State = 2198; whiteSpace(); } } - State = 2195; Match(RPAREN); + State = 2201; Match(RPAREN); } } catch (RecognitionException re) { @@ -13189,7 +13207,7 @@ public LineSpecialFormOptionContext lineSpecialFormOption() { try { EnterOuterAlt(_localctx, 1); { - State = 2197; + State = 2203; _la = _input.La(1); if ( !(_la==B_CHAR || _la==BF) ) { _errHandler.RecoverInline(this); @@ -13254,38 +13272,38 @@ public SubscriptsContext subscripts() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2199; subscript(); - State = 2210; + State = 2205; subscript(); + State = 2216; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,299,_ctx); + _alt = Interpreter.AdaptivePredict(_input,301,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2201; + State = 2207; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2200; whiteSpace(); + State = 2206; whiteSpace(); } } - State = 2203; Match(COMMA); - State = 2205; - switch ( Interpreter.AdaptivePredict(_input,298,_ctx) ) { + State = 2209; Match(COMMA); + State = 2211; + switch ( Interpreter.AdaptivePredict(_input,300,_ctx) ) { case 1: { - State = 2204; whiteSpace(); + State = 2210; whiteSpace(); } break; } - State = 2207; subscript(); + State = 2213; subscript(); } } } - State = 2212; + State = 2218; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,299,_ctx); + _alt = Interpreter.AdaptivePredict(_input,301,_ctx); } } } @@ -13341,18 +13359,18 @@ public SubscriptContext subscript() { try { EnterOuterAlt(_localctx, 1); { - State = 2218; - switch ( Interpreter.AdaptivePredict(_input,300,_ctx) ) { + State = 2224; + switch ( Interpreter.AdaptivePredict(_input,302,_ctx) ) { case 1: { - State = 2213; expression(0); - State = 2214; whiteSpace(); - State = 2215; Match(TO); - State = 2216; whiteSpace(); + State = 2219; expression(0); + State = 2220; whiteSpace(); + State = 2221; Match(TO); + State = 2222; whiteSpace(); } break; } - State = 2220; expression(0); + State = 2226; expression(0); } } catch (RecognitionException re) { @@ -13401,7 +13419,7 @@ public UnrestrictedIdentifierContext unrestrictedIdentifier() { UnrestrictedIdentifierContext _localctx = new UnrestrictedIdentifierContext(_ctx, State); EnterRule(_localctx, 334, RULE_unrestrictedIdentifier); try { - State = 2225; + State = 2231; switch (_input.La(1)) { case ABS: case ANY: @@ -13434,8 +13452,6 @@ public UnrestrictedIdentifierContext unrestrictedIdentifier() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -13520,11 +13536,9 @@ public UnrestrictedIdentifierContext unrestrictedIdentifier() { case XOR: case L_SQUARE_BRACKET: case IDENTIFIER: - case LOAD: - case RESUME_NEXT: EnterOuterAlt(_localctx, 1); { - State = 2222; identifier(); + State = 2228; identifier(); } break; case EXIT: @@ -13591,13 +13605,13 @@ public UnrestrictedIdentifierContext unrestrictedIdentifier() { case WITH: EnterOuterAlt(_localctx, 2); { - State = 2223; statementKeyword(); + State = 2229; statementKeyword(); } break; case AS: EnterOuterAlt(_localctx, 3); { - State = 2224; markerKeyword(); + State = 2230; markerKeyword(); } break; default: @@ -13647,19 +13661,19 @@ public IdentifierContext identifier() { IdentifierContext _localctx = new IdentifierContext(_ctx, State); EnterRule(_localctx, 336, RULE_identifier); try { - State = 2229; - switch ( Interpreter.AdaptivePredict(_input,302,_ctx) ) { + State = 2235; + switch ( Interpreter.AdaptivePredict(_input,304,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2227; typedIdentifier(); + State = 2233; typedIdentifier(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2228; untypedIdentifier(); + State = 2234; untypedIdentifier(); } break; } @@ -13706,7 +13720,7 @@ public UntypedIdentifierContext untypedIdentifier() { try { EnterOuterAlt(_localctx, 1); { - State = 2231; identifierValue(); + State = 2237; identifierValue(); } } catch (RecognitionException re) { @@ -13754,8 +13768,8 @@ public TypedIdentifierContext typedIdentifier() { try { EnterOuterAlt(_localctx, 1); { - State = 2233; untypedIdentifier(); - State = 2234; typeHint(); + State = 2239; untypedIdentifier(); + State = 2240; typeHint(); } } catch (RecognitionException re) { @@ -13803,12 +13817,12 @@ public IdentifierValueContext identifierValue() { IdentifierValueContext _localctx = new IdentifierValueContext(_ctx, State); EnterRule(_localctx, 342, RULE_identifierValue); try { - State = 2240; + State = 2246; switch (_input.La(1)) { case IDENTIFIER: EnterOuterAlt(_localctx, 1); { - State = 2236; Match(IDENTIFIER); + State = 2242; Match(IDENTIFIER); } break; case ABS: @@ -13841,8 +13855,6 @@ public IdentifierValueContext identifierValue() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -13925,23 +13937,21 @@ public IdentifierValueContext identifierValue() { case WITHEVENTS: case WRITE: case XOR: - case LOAD: - case RESUME_NEXT: EnterOuterAlt(_localctx, 2); { - State = 2237; keyword(); + State = 2243; keyword(); } break; case L_SQUARE_BRACKET: EnterOuterAlt(_localctx, 3); { - State = 2238; foreignName(); + State = 2244; foreignName(); } break; case BF: EnterOuterAlt(_localctx, 4); { - State = 2239; Match(BF); + State = 2245; Match(BF); } break; default: @@ -13996,21 +14006,21 @@ public ForeignNameContext foreignName() { try { EnterOuterAlt(_localctx, 1); { - State = 2242; Match(L_SQUARE_BRACKET); - State = 2246; + State = 2248; Match(L_SQUARE_BRACKET); + State = 2252; _errHandler.Sync(this); _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (NEWLINE - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (LOAD - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (NEWLINE - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)))) != 0)) { { { - State = 2243; foreignIdentifier(); + State = 2249; foreignIdentifier(); } } - State = 2248; + State = 2254; _errHandler.Sync(this); _la = _input.La(1); } - State = 2249; Match(R_SQUARE_BRACKET); + State = 2255; Match(R_SQUARE_BRACKET); } } catch (RecognitionException re) { @@ -14056,7 +14066,7 @@ public ForeignIdentifierContext foreignIdentifier() { EnterRule(_localctx, 346, RULE_foreignIdentifier); int _la; try { - State = 2253; + State = 2259; switch (_input.La(1)) { case ABS: case ANY: @@ -14091,8 +14101,6 @@ public ForeignIdentifierContext foreignIdentifier() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case OPTION: case PSET: case SCALE: @@ -14293,11 +14301,9 @@ public ForeignIdentifierContext foreignIdentifier() { case IDENTIFIER: case LINE_CONTINUATION: case ERRORCHAR: - case LOAD: - case RESUME_NEXT: EnterOuterAlt(_localctx, 1); { - State = 2251; + State = 2257; _la = _input.La(1); if ( _la <= 0 || (_la==L_SQUARE_BRACKET || _la==R_SQUARE_BRACKET) ) { _errHandler.RecoverInline(this); @@ -14308,7 +14314,7 @@ public ForeignIdentifierContext foreignIdentifier() { case L_SQUARE_BRACKET: EnterOuterAlt(_localctx, 2); { - State = 2252; foreignName(); + State = 2258; foreignName(); } break; default: @@ -14369,38 +14375,38 @@ public AsTypeClauseContext asTypeClause() { try { EnterOuterAlt(_localctx, 1); { - State = 2255; Match(AS); - State = 2257; + State = 2261; Match(AS); + State = 2263; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2256; whiteSpace(); + State = 2262; whiteSpace(); } } - State = 2261; - switch ( Interpreter.AdaptivePredict(_input,307,_ctx) ) { + State = 2267; + switch ( Interpreter.AdaptivePredict(_input,309,_ctx) ) { case 1: { - State = 2259; Match(NEW); - State = 2260; whiteSpace(); + State = 2265; Match(NEW); + State = 2266; whiteSpace(); } break; } - State = 2263; type(); - State = 2268; - switch ( Interpreter.AdaptivePredict(_input,309,_ctx) ) { + State = 2269; type(); + State = 2274; + switch ( Interpreter.AdaptivePredict(_input,311,_ctx) ) { case 1: { - State = 2265; + State = 2271; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2264; whiteSpace(); + State = 2270; whiteSpace(); } } - State = 2267; fieldLength(); + State = 2273; fieldLength(); } break; } @@ -14459,9 +14465,9 @@ public BaseTypeContext baseType() { try { EnterOuterAlt(_localctx, 1); { - State = 2270; + State = 2276; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANY) | (1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (DATE - 70)) | (1L << (DOUBLE - 70)) | (1L << (INTEGER - 70)) | (1L << (LONG - 70)))) != 0) || ((((_la - 182)) & ~0x3f) == 0 && ((1L << (_la - 182)) & ((1L << (SINGLE - 182)) | (1L << (STRING - 182)) | (1L << (VARIANT - 182)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ANY) | (1L << CURRENCY) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << BOOLEAN) | (1L << BYTE))) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & ((1L << (DATE - 68)) | (1L << (DOUBLE - 68)) | (1L << (INTEGER - 68)) | (1L << (LONG - 68)))) != 0) || ((((_la - 180)) & ~0x3f) == 0 && ((1L << (_la - 180)) & ((1L << (SINGLE - 180)) | (1L << (STRING - 180)) | (1L << (VARIANT - 180)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -14515,9 +14521,9 @@ public ComparisonOperatorContext comparisonOperator() { try { EnterOuterAlt(_localctx, 1); { - State = 2272; + State = 2278; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 210)) & ~0x3f) == 0 && ((1L << (_la - 210)) & ((1L << (EQ - 210)) | (1L << (GEQ - 210)) | (1L << (GT - 210)) | (1L << (LEQ - 210)) | (1L << (LT - 210)) | (1L << (NEQ - 210)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 208)) & ~0x3f) == 0 && ((1L << (_la - 208)) & ((1L << (EQ - 208)) | (1L << (GEQ - 208)) | (1L << (GT - 208)) | (1L << (LEQ - 208)) | (1L << (LT - 208)) | (1L << (NEQ - 208)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -14703,13 +14709,13 @@ public ComplexTypeContext complexType() { EnterRule(_localctx, 354, RULE_complexType); int _la; try { - State = 2297; - switch ( Interpreter.AdaptivePredict(_input,312,_ctx) ) { + State = 2303; + switch ( Interpreter.AdaptivePredict(_input,314,_ctx) ) { case 1: _localctx = new CtLiteralExprContext(_localctx); EnterOuterAlt(_localctx, 1); { - State = 2274; literalExpression(); + State = 2280; literalExpression(); } break; @@ -14717,7 +14723,7 @@ public ComplexTypeContext complexType() { _localctx = new CtLExprContext(_localctx); EnterOuterAlt(_localctx, 2); { - State = 2275; lExpression(0); + State = 2281; lExpression(0); } break; @@ -14725,7 +14731,7 @@ public ComplexTypeContext complexType() { _localctx = new CtBuiltInTypeExprContext(_localctx); EnterOuterAlt(_localctx, 3); { - State = 2276; builtInType(); + State = 2282; builtInType(); } break; @@ -14733,25 +14739,25 @@ public ComplexTypeContext complexType() { _localctx = new CtParenthesizedExprContext(_localctx); EnterOuterAlt(_localctx, 4); { - State = 2277; Match(LPAREN); - State = 2279; + State = 2283; Match(LPAREN); + State = 2285; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2278; whiteSpace(); + State = 2284; whiteSpace(); } } - State = 2281; complexType(); - State = 2283; + State = 2287; complexType(); + State = 2289; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2282; whiteSpace(); + State = 2288; whiteSpace(); } } - State = 2285; Match(RPAREN); + State = 2291; Match(RPAREN); } break; @@ -14759,9 +14765,9 @@ public ComplexTypeContext complexType() { _localctx = new CtTypeofexprContext(_localctx); EnterOuterAlt(_localctx, 5); { - State = 2287; Match(TYPEOF); - State = 2288; whiteSpace(); - State = 2289; complexType(); + State = 2293; Match(TYPEOF); + State = 2294; whiteSpace(); + State = 2295; complexType(); } break; @@ -14769,9 +14775,9 @@ public ComplexTypeContext complexType() { _localctx = new CtNewExprContext(_localctx); EnterOuterAlt(_localctx, 6); { - State = 2291; Match(NEW); - State = 2292; whiteSpace(); - State = 2293; complexType(); + State = 2297; Match(NEW); + State = 2298; whiteSpace(); + State = 2299; complexType(); } break; @@ -14779,8 +14785,8 @@ public ComplexTypeContext complexType() { _localctx = new CtMarkedFileNumberExprContext(_localctx); EnterOuterAlt(_localctx, 7); { - State = 2295; Match(HASH); - State = 2296; expression(0); + State = 2301; Match(HASH); + State = 2302; expression(0); } break; } @@ -14835,23 +14841,23 @@ public FieldLengthContext fieldLength() { try { EnterOuterAlt(_localctx, 1); { - State = 2299; Match(MULT); - State = 2301; + State = 2305; Match(MULT); + State = 2307; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2300; whiteSpace(); + State = 2306; whiteSpace(); } } - State = 2305; + State = 2311; switch (_input.La(1)) { case OCTLITERAL: case HEXLITERAL: case FLOATLITERAL: case INTEGERLITERAL: { - State = 2303; numberLiteral(); + State = 2309; numberLiteral(); } break; case ABS: @@ -14885,8 +14891,6 @@ public FieldLengthContext fieldLength() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -14971,10 +14975,8 @@ public FieldLengthContext fieldLength() { case XOR: case L_SQUARE_BRACKET: case IDENTIFIER: - case LOAD: - case RESUME_NEXT: { - State = 2304; identifierValue(); + State = 2310; identifierValue(); } break; default: @@ -15025,7 +15027,7 @@ public StatementLabelDefinitionContext statementLabelDefinition() { StatementLabelDefinitionContext _localctx = new StatementLabelDefinitionContext(_ctx, State); EnterRule(_localctx, 358, RULE_statementLabelDefinition); try { - State = 2309; + State = 2315; switch (_input.La(1)) { case ABS: case ANY: @@ -15059,8 +15061,6 @@ public StatementLabelDefinitionContext statementLabelDefinition() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case OPTION: case PSET: case SGN: @@ -15207,11 +15207,9 @@ public StatementLabelDefinitionContext statementLabelDefinition() { case XOR: case L_SQUARE_BRACKET: case IDENTIFIER: - case LOAD: - case RESUME_NEXT: EnterOuterAlt(_localctx, 1); { - State = 2307; identifierStatementLabel(); + State = 2313; identifierStatementLabel(); } break; case OCTLITERAL: @@ -15220,7 +15218,7 @@ public StatementLabelDefinitionContext statementLabelDefinition() { case INTEGERLITERAL: EnterOuterAlt(_localctx, 2); { - State = 2308; lineNumberLabel(); + State = 2314; lineNumberLabel(); } break; default: @@ -15274,16 +15272,16 @@ public IdentifierStatementLabelContext identifierStatementLabel() { try { EnterOuterAlt(_localctx, 1); { - State = 2311; unrestrictedIdentifier(); - State = 2313; + State = 2317; unrestrictedIdentifier(); + State = 2319; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2312; whiteSpace(); + State = 2318; whiteSpace(); } } - State = 2315; Match(COLON); + State = 2321; Match(COLON); } } catch (RecognitionException re) { @@ -15332,20 +15330,20 @@ public LineNumberLabelContext lineNumberLabel() { try { EnterOuterAlt(_localctx, 1); { - State = 2317; numberLiteral(); - State = 2319; - switch ( Interpreter.AdaptivePredict(_input,317,_ctx) ) { + State = 2323; numberLiteral(); + State = 2325; + switch ( Interpreter.AdaptivePredict(_input,319,_ctx) ) { case 1: { - State = 2318; whiteSpace(); + State = 2324; whiteSpace(); } break; } - State = 2322; - switch ( Interpreter.AdaptivePredict(_input,318,_ctx) ) { + State = 2328; + switch ( Interpreter.AdaptivePredict(_input,320,_ctx) ) { case 1: { - State = 2321; Match(COLON); + State = 2327; Match(COLON); } break; } @@ -15395,9 +15393,9 @@ public NumberLiteralContext numberLiteral() { try { EnterOuterAlt(_localctx, 1); { - State = 2324; + State = 2330; _la = _input.La(1); - if ( !(((((_la - 225)) & ~0x3f) == 0 && ((1L << (_la - 225)) & ((1L << (OCTLITERAL - 225)) | (1L << (HEXLITERAL - 225)) | (1L << (FLOATLITERAL - 225)) | (1L << (INTEGERLITERAL - 225)))) != 0)) ) { + if ( !(((((_la - 223)) & ~0x3f) == 0 && ((1L << (_la - 223)) & ((1L << (OCTLITERAL - 223)) | (1L << (HEXLITERAL - 223)) | (1L << (FLOATLITERAL - 223)) | (1L << (INTEGERLITERAL - 223)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -15457,42 +15455,42 @@ public TypeContext type() { try { EnterOuterAlt(_localctx, 1); { - State = 2328; - switch ( Interpreter.AdaptivePredict(_input,319,_ctx) ) { + State = 2334; + switch ( Interpreter.AdaptivePredict(_input,321,_ctx) ) { case 1: { - State = 2326; baseType(); + State = 2332; baseType(); } break; case 2: { - State = 2327; complexType(); + State = 2333; complexType(); } break; } - State = 2338; - switch ( Interpreter.AdaptivePredict(_input,322,_ctx) ) { + State = 2344; + switch ( Interpreter.AdaptivePredict(_input,324,_ctx) ) { case 1: { - State = 2331; + State = 2337; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2330; whiteSpace(); + State = 2336; whiteSpace(); } } - State = 2333; Match(LPAREN); - State = 2335; + State = 2339; Match(LPAREN); + State = 2341; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2334; whiteSpace(); + State = 2340; whiteSpace(); } } - State = 2337; Match(RPAREN); + State = 2343; Match(RPAREN); } break; } @@ -15545,7 +15543,7 @@ public TypeHintContext typeHint() { try { EnterOuterAlt(_localctx, 1); { - State = 2340; + State = 2346; _la = _input.La(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EXCLAMATIONPOINT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND))) != 0) || _la==POW) ) { _errHandler.RecoverInline(this); @@ -15597,9 +15595,9 @@ public VisibilityContext visibility() { try { EnterOuterAlt(_localctx, 1); { - State = 2342; + State = 2348; _la = _input.La(1); - if ( !(((((_la - 112)) & ~0x3f) == 0 && ((1L << (_la - 112)) & ((1L << (FRIEND - 112)) | (1L << (GLOBAL - 112)) | (1L << (PRIVATE - 112)) | (1L << (PUBLIC - 112)))) != 0)) ) { + if ( !(((((_la - 110)) & ~0x3f) == 0 && ((1L << (_la - 110)) & ((1L << (FRIEND - 110)) | (1L << (GLOBAL - 110)) | (1L << (PRIVATE - 110)) | (1L << (PUBLIC - 110)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -16199,17 +16197,17 @@ private ExpressionContext expression(int _p) { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2381; - switch ( Interpreter.AdaptivePredict(_input,328,_ctx) ) { + State = 2387; + switch ( Interpreter.AdaptivePredict(_input,330,_ctx) ) { case 1: { _localctx = new TypeofexprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2345; Match(TYPEOF); - State = 2346; whiteSpace(); - State = 2347; expression(17); + State = 2351; Match(TYPEOF); + State = 2352; whiteSpace(); + State = 2353; expression(17); } break; @@ -16218,9 +16216,9 @@ private ExpressionContext expression(int _p) { _localctx = new NewExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2349; Match(NEW); - State = 2350; whiteSpace(); - State = 2351; expression(16); + State = 2355; Match(NEW); + State = 2356; whiteSpace(); + State = 2357; expression(16); } break; @@ -16229,16 +16227,16 @@ private ExpressionContext expression(int _p) { _localctx = new UnaryMinusOpContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2353; Match(MINUS); - State = 2355; - switch ( Interpreter.AdaptivePredict(_input,323,_ctx) ) { + State = 2359; Match(MINUS); + State = 2361; + switch ( Interpreter.AdaptivePredict(_input,325,_ctx) ) { case 1: { - State = 2354; whiteSpace(); + State = 2360; whiteSpace(); } break; } - State = 2357; expression(14); + State = 2363; expression(14); } break; @@ -16247,16 +16245,16 @@ private ExpressionContext expression(int _p) { _localctx = new LogicalNotOpContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2358; Match(NOT); - State = 2360; - switch ( Interpreter.AdaptivePredict(_input,324,_ctx) ) { + State = 2364; Match(NOT); + State = 2366; + switch ( Interpreter.AdaptivePredict(_input,326,_ctx) ) { case 1: { - State = 2359; whiteSpace(); + State = 2365; whiteSpace(); } break; } - State = 2362; expression(7); + State = 2368; expression(7); } break; @@ -16265,8 +16263,8 @@ private ExpressionContext expression(int _p) { _localctx = new MarkedFileNumberExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2363; Match(HASH); - State = 2364; expression(1); + State = 2369; Match(HASH); + State = 2370; expression(1); } break; @@ -16275,33 +16273,33 @@ private ExpressionContext expression(int _p) { _localctx = new ParenthesizedExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2366; + State = 2372; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2365; whiteSpace(); + State = 2371; whiteSpace(); } } - State = 2368; Match(LPAREN); - State = 2370; - switch ( Interpreter.AdaptivePredict(_input,326,_ctx) ) { + State = 2374; Match(LPAREN); + State = 2376; + switch ( Interpreter.AdaptivePredict(_input,328,_ctx) ) { case 1: { - State = 2369; whiteSpace(); + State = 2375; whiteSpace(); } break; } - State = 2372; expression(0); - State = 2374; + State = 2378; expression(0); + State = 2380; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2373; whiteSpace(); + State = 2379; whiteSpace(); } } - State = 2376; Match(RPAREN); + State = 2382; Match(RPAREN); } break; @@ -16310,7 +16308,7 @@ private ExpressionContext expression(int _p) { _localctx = new LiteralExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2378; literalExpression(); + State = 2384; literalExpression(); } break; @@ -16319,7 +16317,7 @@ private ExpressionContext expression(int _p) { _localctx = new LExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2379; lExpression(0); + State = 2385; lExpression(0); } break; @@ -16328,45 +16326,45 @@ private ExpressionContext expression(int _p) { _localctx = new BuiltInTypeExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2380; builtInType(); + State = 2386; builtInType(); } break; } _ctx.stop = _input.Lt(-1); - State = 2493; + State = 2499; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,354,_ctx); + _alt = Interpreter.AdaptivePredict(_input,356,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 2491; - switch ( Interpreter.AdaptivePredict(_input,353,_ctx) ) { + State = 2497; + switch ( Interpreter.AdaptivePredict(_input,355,_ctx) ) { case 1: { _localctx = new PowOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2383; + State = 2389; if (!(Precpred(_ctx, 15))) throw new FailedPredicateException(this, "Precpred(_ctx, 15)"); - State = 2385; + State = 2391; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2384; whiteSpace(); + State = 2390; whiteSpace(); } } - State = 2387; Match(POW); - State = 2389; - switch ( Interpreter.AdaptivePredict(_input,330,_ctx) ) { + State = 2393; Match(POW); + State = 2395; + switch ( Interpreter.AdaptivePredict(_input,332,_ctx) ) { case 1: { - State = 2388; whiteSpace(); + State = 2394; whiteSpace(); } break; } - State = 2391; expression(16); + State = 2397; expression(16); } break; @@ -16374,31 +16372,31 @@ private ExpressionContext expression(int _p) { { _localctx = new MultOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2392; + State = 2398; if (!(Precpred(_ctx, 13))) throw new FailedPredicateException(this, "Precpred(_ctx, 13)"); - State = 2394; + State = 2400; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2393; whiteSpace(); + State = 2399; whiteSpace(); } } - State = 2396; + State = 2402; _la = _input.La(1); if ( !(_la==DIV || _la==MULT) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2398; - switch ( Interpreter.AdaptivePredict(_input,332,_ctx) ) { + State = 2404; + switch ( Interpreter.AdaptivePredict(_input,334,_ctx) ) { case 1: { - State = 2397; whiteSpace(); + State = 2403; whiteSpace(); } break; } - State = 2400; expression(14); + State = 2406; expression(14); } break; @@ -16406,26 +16404,26 @@ private ExpressionContext expression(int _p) { { _localctx = new IntDivOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2401; + State = 2407; if (!(Precpred(_ctx, 12))) throw new FailedPredicateException(this, "Precpred(_ctx, 12)"); - State = 2403; + State = 2409; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2402; whiteSpace(); + State = 2408; whiteSpace(); } } - State = 2405; Match(INTDIV); - State = 2407; - switch ( Interpreter.AdaptivePredict(_input,334,_ctx) ) { + State = 2411; Match(INTDIV); + State = 2413; + switch ( Interpreter.AdaptivePredict(_input,336,_ctx) ) { case 1: { - State = 2406; whiteSpace(); + State = 2412; whiteSpace(); } break; } - State = 2409; expression(13); + State = 2415; expression(13); } break; @@ -16433,26 +16431,26 @@ private ExpressionContext expression(int _p) { { _localctx = new ModOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2410; + State = 2416; if (!(Precpred(_ctx, 11))) throw new FailedPredicateException(this, "Precpred(_ctx, 11)"); - State = 2412; + State = 2418; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2411; whiteSpace(); + State = 2417; whiteSpace(); } } - State = 2414; Match(MOD); - State = 2416; - switch ( Interpreter.AdaptivePredict(_input,336,_ctx) ) { + State = 2420; Match(MOD); + State = 2422; + switch ( Interpreter.AdaptivePredict(_input,338,_ctx) ) { case 1: { - State = 2415; whiteSpace(); + State = 2421; whiteSpace(); } break; } - State = 2418; expression(12); + State = 2424; expression(12); } break; @@ -16460,31 +16458,31 @@ private ExpressionContext expression(int _p) { { _localctx = new AddOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2419; + State = 2425; if (!(Precpred(_ctx, 10))) throw new FailedPredicateException(this, "Precpred(_ctx, 10)"); - State = 2421; + State = 2427; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2420; whiteSpace(); + State = 2426; whiteSpace(); } } - State = 2423; + State = 2429; _la = _input.La(1); if ( !(_la==MINUS || _la==PLUS) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2425; - switch ( Interpreter.AdaptivePredict(_input,338,_ctx) ) { + State = 2431; + switch ( Interpreter.AdaptivePredict(_input,340,_ctx) ) { case 1: { - State = 2424; whiteSpace(); + State = 2430; whiteSpace(); } break; } - State = 2427; expression(11); + State = 2433; expression(11); } break; @@ -16492,26 +16490,26 @@ private ExpressionContext expression(int _p) { { _localctx = new ConcatOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2428; + State = 2434; if (!(Precpred(_ctx, 9))) throw new FailedPredicateException(this, "Precpred(_ctx, 9)"); - State = 2430; + State = 2436; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2429; whiteSpace(); + State = 2435; whiteSpace(); } } - State = 2432; Match(AMPERSAND); - State = 2434; - switch ( Interpreter.AdaptivePredict(_input,340,_ctx) ) { + State = 2438; Match(AMPERSAND); + State = 2440; + switch ( Interpreter.AdaptivePredict(_input,342,_ctx) ) { case 1: { - State = 2433; whiteSpace(); + State = 2439; whiteSpace(); } break; } - State = 2436; expression(10); + State = 2442; expression(10); } break; @@ -16519,31 +16517,31 @@ private ExpressionContext expression(int _p) { { _localctx = new RelationalOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2437; + State = 2443; if (!(Precpred(_ctx, 8))) throw new FailedPredicateException(this, "Precpred(_ctx, 8)"); - State = 2439; + State = 2445; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2438; whiteSpace(); + State = 2444; whiteSpace(); } } - State = 2441; + State = 2447; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 210)) & ~0x3f) == 0 && ((1L << (_la - 210)) & ((1L << (EQ - 210)) | (1L << (GEQ - 210)) | (1L << (GT - 210)) | (1L << (LEQ - 210)) | (1L << (LT - 210)) | (1L << (NEQ - 210)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 208)) & ~0x3f) == 0 && ((1L << (_la - 208)) & ((1L << (EQ - 208)) | (1L << (GEQ - 208)) | (1L << (GT - 208)) | (1L << (LEQ - 208)) | (1L << (LT - 208)) | (1L << (NEQ - 208)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); - State = 2443; - switch ( Interpreter.AdaptivePredict(_input,342,_ctx) ) { + State = 2449; + switch ( Interpreter.AdaptivePredict(_input,344,_ctx) ) { case 1: { - State = 2442; whiteSpace(); + State = 2448; whiteSpace(); } break; } - State = 2445; expression(9); + State = 2451; expression(9); } break; @@ -16551,26 +16549,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalAndOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2446; + State = 2452; if (!(Precpred(_ctx, 6))) throw new FailedPredicateException(this, "Precpred(_ctx, 6)"); - State = 2448; + State = 2454; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2447; whiteSpace(); + State = 2453; whiteSpace(); } } - State = 2450; Match(AND); - State = 2452; - switch ( Interpreter.AdaptivePredict(_input,344,_ctx) ) { + State = 2456; Match(AND); + State = 2458; + switch ( Interpreter.AdaptivePredict(_input,346,_ctx) ) { case 1: { - State = 2451; whiteSpace(); + State = 2457; whiteSpace(); } break; } - State = 2454; expression(7); + State = 2460; expression(7); } break; @@ -16578,26 +16576,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalOrOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2455; + State = 2461; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 2457; + State = 2463; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2456; whiteSpace(); + State = 2462; whiteSpace(); } } - State = 2459; Match(OR); - State = 2461; - switch ( Interpreter.AdaptivePredict(_input,346,_ctx) ) { + State = 2465; Match(OR); + State = 2467; + switch ( Interpreter.AdaptivePredict(_input,348,_ctx) ) { case 1: { - State = 2460; whiteSpace(); + State = 2466; whiteSpace(); } break; } - State = 2463; expression(6); + State = 2469; expression(6); } break; @@ -16605,26 +16603,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalXorOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2464; + State = 2470; if (!(Precpred(_ctx, 4))) throw new FailedPredicateException(this, "Precpred(_ctx, 4)"); - State = 2466; + State = 2472; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2465; whiteSpace(); + State = 2471; whiteSpace(); } } - State = 2468; Match(XOR); - State = 2470; - switch ( Interpreter.AdaptivePredict(_input,348,_ctx) ) { + State = 2474; Match(XOR); + State = 2476; + switch ( Interpreter.AdaptivePredict(_input,350,_ctx) ) { case 1: { - State = 2469; whiteSpace(); + State = 2475; whiteSpace(); } break; } - State = 2472; expression(5); + State = 2478; expression(5); } break; @@ -16632,26 +16630,26 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalEqvOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2473; + State = 2479; if (!(Precpred(_ctx, 3))) throw new FailedPredicateException(this, "Precpred(_ctx, 3)"); - State = 2475; + State = 2481; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2474; whiteSpace(); + State = 2480; whiteSpace(); } } - State = 2477; Match(EQV); - State = 2479; - switch ( Interpreter.AdaptivePredict(_input,350,_ctx) ) { + State = 2483; Match(EQV); + State = 2485; + switch ( Interpreter.AdaptivePredict(_input,352,_ctx) ) { case 1: { - State = 2478; whiteSpace(); + State = 2484; whiteSpace(); } break; } - State = 2481; expression(4); + State = 2487; expression(4); } break; @@ -16659,34 +16657,34 @@ private ExpressionContext expression(int _p) { { _localctx = new LogicalImpOpContext(new ExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_expression); - State = 2482; + State = 2488; if (!(Precpred(_ctx, 2))) throw new FailedPredicateException(this, "Precpred(_ctx, 2)"); - State = 2484; + State = 2490; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2483; whiteSpace(); + State = 2489; whiteSpace(); } } - State = 2486; Match(IMP); - State = 2488; - switch ( Interpreter.AdaptivePredict(_input,352,_ctx) ) { + State = 2492; Match(IMP); + State = 2494; + switch ( Interpreter.AdaptivePredict(_input,354,_ctx) ) { case 1: { - State = 2487; whiteSpace(); + State = 2493; whiteSpace(); } break; } - State = 2490; expression(3); + State = 2496; expression(3); } break; } } } - State = 2495; + State = 2501; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,354,_ctx); + _alt = Interpreter.AdaptivePredict(_input,356,_ctx); } } } @@ -16738,7 +16736,7 @@ public LiteralExpressionContext literalExpression() { LiteralExpressionContext _localctx = new LiteralExpressionContext(_ctx, State); EnterRule(_localctx, 374, RULE_literalExpression); try { - State = 2503; + State = 2509; switch (_input.La(1)) { case OCTLITERAL: case HEXLITERAL: @@ -16746,19 +16744,19 @@ public LiteralExpressionContext literalExpression() { case INTEGERLITERAL: EnterOuterAlt(_localctx, 1); { - State = 2496; numberLiteral(); + State = 2502; numberLiteral(); } break; case DATELITERAL: EnterOuterAlt(_localctx, 2); { - State = 2497; Match(DATELITERAL); + State = 2503; Match(DATELITERAL); } break; case STRINGLITERAL: EnterOuterAlt(_localctx, 3); { - State = 2498; Match(STRINGLITERAL); + State = 2504; Match(STRINGLITERAL); } break; case EMPTY: @@ -16768,12 +16766,12 @@ public LiteralExpressionContext literalExpression() { case TRUE: EnterOuterAlt(_localctx, 4); { - State = 2499; literalIdentifier(); - State = 2501; - switch ( Interpreter.AdaptivePredict(_input,355,_ctx) ) { + State = 2505; literalIdentifier(); + State = 2507; + switch ( Interpreter.AdaptivePredict(_input,357,_ctx) ) { case 1: { - State = 2500; typeHint(); + State = 2506; typeHint(); } break; } @@ -16829,26 +16827,26 @@ public LiteralIdentifierContext literalIdentifier() { LiteralIdentifierContext _localctx = new LiteralIdentifierContext(_ctx, State); EnterRule(_localctx, 376, RULE_literalIdentifier); try { - State = 2508; + State = 2514; switch (_input.La(1)) { case FALSE: case TRUE: EnterOuterAlt(_localctx, 1); { - State = 2505; booleanLiteralIdentifier(); + State = 2511; booleanLiteralIdentifier(); } break; case NOTHING: EnterOuterAlt(_localctx, 2); { - State = 2506; objectLiteralIdentifier(); + State = 2512; objectLiteralIdentifier(); } break; case EMPTY: case NULL: EnterOuterAlt(_localctx, 3); { - State = 2507; variantLiteralIdentifier(); + State = 2513; variantLiteralIdentifier(); } break; default: @@ -16897,7 +16895,7 @@ public BooleanLiteralIdentifierContext booleanLiteralIdentifier() { try { EnterOuterAlt(_localctx, 1); { - State = 2510; + State = 2516; _la = _input.La(1); if ( !(_la==FALSE || _la==TRUE) ) { _errHandler.RecoverInline(this); @@ -16945,7 +16943,7 @@ public ObjectLiteralIdentifierContext objectLiteralIdentifier() { try { EnterOuterAlt(_localctx, 1); { - State = 2512; Match(NOTHING); + State = 2518; Match(NOTHING); } } catch (RecognitionException re) { @@ -16990,7 +16988,7 @@ public VariantLiteralIdentifierContext variantLiteralIdentifier() { try { EnterOuterAlt(_localctx, 1); { - State = 2514; + State = 2520; _la = _input.La(1); if ( !(_la==EMPTY || _la==NULL) ) { _errHandler.RecoverInline(this); @@ -17209,15 +17207,15 @@ private LExpressionContext lExpression(int _p) { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2529; - switch ( Interpreter.AdaptivePredict(_input,360,_ctx) ) { + State = 2535; + switch ( Interpreter.AdaptivePredict(_input,362,_ctx) ) { case 1: { _localctx = new InstanceExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2517; Match(ME); + State = 2523; Match(ME); } break; @@ -17226,7 +17224,7 @@ private LExpressionContext lExpression(int _p) { _localctx = new SimpleNameExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2518; identifier(); + State = 2524; identifier(); } break; @@ -17235,16 +17233,16 @@ private LExpressionContext lExpression(int _p) { _localctx = new WithMemberAccessExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2519; Match(DOT); - State = 2521; + State = 2525; Match(DOT); + State = 2527; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2520; mandatoryLineContinuation(); + State = 2526; mandatoryLineContinuation(); } } - State = 2523; unrestrictedIdentifier(); + State = 2529; unrestrictedIdentifier(); } break; @@ -17253,62 +17251,62 @@ private LExpressionContext lExpression(int _p) { _localctx = new WithDictionaryAccessExprContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - State = 2524; Match(EXCLAMATIONPOINT); - State = 2526; + State = 2530; Match(EXCLAMATIONPOINT); + State = 2532; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2525; mandatoryLineContinuation(); + State = 2531; mandatoryLineContinuation(); } } - State = 2528; unrestrictedIdentifier(); + State = 2534; unrestrictedIdentifier(); } break; } _ctx.stop = _input.Lt(-1); - State = 2563; + State = 2569; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,369,_ctx); + _alt = Interpreter.AdaptivePredict(_input,371,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { if ( _parseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 2561; - switch ( Interpreter.AdaptivePredict(_input,368,_ctx) ) { + State = 2567; + switch ( Interpreter.AdaptivePredict(_input,370,_ctx) ) { case 1: { _localctx = new IndexExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 2531; + State = 2537; if (!(Precpred(_ctx, 7))) throw new FailedPredicateException(this, "Precpred(_ctx, 7)"); - State = 2532; Match(LPAREN); - State = 2534; - switch ( Interpreter.AdaptivePredict(_input,361,_ctx) ) { + State = 2538; Match(LPAREN); + State = 2540; + switch ( Interpreter.AdaptivePredict(_input,363,_ctx) ) { case 1: { - State = 2533; whiteSpace(); + State = 2539; whiteSpace(); } break; } - State = 2537; - switch ( Interpreter.AdaptivePredict(_input,362,_ctx) ) { + State = 2543; + switch ( Interpreter.AdaptivePredict(_input,364,_ctx) ) { case 1: { - State = 2536; argumentList(); + State = 2542; argumentList(); } break; } - State = 2540; + State = 2546; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2539; whiteSpace(); + State = 2545; whiteSpace(); } } - State = 2542; Match(RPAREN); + State = 2548; Match(RPAREN); } break; @@ -17316,26 +17314,26 @@ private LExpressionContext lExpression(int _p) { { _localctx = new MemberAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 2543; + State = 2549; if (!(Precpred(_ctx, 6))) throw new FailedPredicateException(this, "Precpred(_ctx, 6)"); - State = 2545; + State = 2551; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2544; mandatoryLineContinuation(); + State = 2550; mandatoryLineContinuation(); } } - State = 2547; Match(DOT); - State = 2549; + State = 2553; Match(DOT); + State = 2555; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2548; mandatoryLineContinuation(); + State = 2554; mandatoryLineContinuation(); } } - State = 2551; unrestrictedIdentifier(); + State = 2557; unrestrictedIdentifier(); } break; @@ -17343,34 +17341,34 @@ private LExpressionContext lExpression(int _p) { { _localctx = new DictionaryAccessExprContext(new LExpressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_lExpression); - State = 2552; + State = 2558; if (!(Precpred(_ctx, 5))) throw new FailedPredicateException(this, "Precpred(_ctx, 5)"); - State = 2554; + State = 2560; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2553; mandatoryLineContinuation(); + State = 2559; mandatoryLineContinuation(); } } - State = 2556; Match(EXCLAMATIONPOINT); - State = 2558; + State = 2562; Match(EXCLAMATIONPOINT); + State = 2564; _la = _input.La(1); if (_la==LINE_CONTINUATION) { { - State = 2557; mandatoryLineContinuation(); + State = 2563; mandatoryLineContinuation(); } } - State = 2560; unrestrictedIdentifier(); + State = 2566; unrestrictedIdentifier(); } break; } } } - State = 2565; + State = 2571; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,369,_ctx); + _alt = Interpreter.AdaptivePredict(_input,371,_ctx); } } } @@ -17424,69 +17422,69 @@ public BuiltInTypeContext builtInType() { EnterRule(_localctx, 386, RULE_builtInType); int _la; try { - State = 2587; - switch ( Interpreter.AdaptivePredict(_input,374,_ctx) ) { + State = 2593; + switch ( Interpreter.AdaptivePredict(_input,376,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2566; baseType(); + State = 2572; baseType(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2567; Match(L_SQUARE_BRACKET); - State = 2569; + State = 2573; Match(L_SQUARE_BRACKET); + State = 2575; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2568; whiteSpace(); + State = 2574; whiteSpace(); } } - State = 2571; baseType(); - State = 2573; + State = 2577; baseType(); + State = 2579; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2572; whiteSpace(); + State = 2578; whiteSpace(); } } - State = 2575; Match(R_SQUARE_BRACKET); + State = 2581; Match(R_SQUARE_BRACKET); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 2577; Match(OBJECT); + State = 2583; Match(OBJECT); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 2578; Match(L_SQUARE_BRACKET); - State = 2580; + State = 2584; Match(L_SQUARE_BRACKET); + State = 2586; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2579; whiteSpace(); + State = 2585; whiteSpace(); } } - State = 2582; Match(OBJECT); - State = 2584; + State = 2588; Match(OBJECT); + State = 2590; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2583; whiteSpace(); + State = 2589; whiteSpace(); } } - State = 2586; Match(R_SQUARE_BRACKET); + State = 2592; Match(R_SQUARE_BRACKET); } break; } @@ -17533,7 +17531,7 @@ public ArgumentListContext argumentList() { try { EnterOuterAlt(_localctx, 1); { - State = 2589; positionalOrNamedArgumentList(); + State = 2595; positionalOrNamedArgumentList(); } } catch (RecognitionException re) { @@ -17592,65 +17590,65 @@ public PositionalOrNamedArgumentListContext positionalOrNamedArgumentList() { EnterRule(_localctx, 390, RULE_positionalOrNamedArgumentList); try { int _alt; - State = 2611; - switch ( Interpreter.AdaptivePredict(_input,379,_ctx) ) { + State = 2617; + switch ( Interpreter.AdaptivePredict(_input,381,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2597; + State = 2603; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,376,_ctx); + _alt = Interpreter.AdaptivePredict(_input,378,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2591; positionalArgumentOrMissing(); - State = 2593; - switch ( Interpreter.AdaptivePredict(_input,375,_ctx) ) { + State = 2597; positionalArgumentOrMissing(); + State = 2599; + switch ( Interpreter.AdaptivePredict(_input,377,_ctx) ) { case 1: { - State = 2592; whiteSpace(); + State = 2598; whiteSpace(); } break; } } } } - State = 2599; + State = 2605; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,376,_ctx); + _alt = Interpreter.AdaptivePredict(_input,378,_ctx); } - State = 2600; requiredPositionalArgument(); + State = 2606; requiredPositionalArgument(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2607; + State = 2613; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,378,_ctx); + _alt = Interpreter.AdaptivePredict(_input,380,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2601; positionalArgumentOrMissing(); - State = 2603; - switch ( Interpreter.AdaptivePredict(_input,377,_ctx) ) { + State = 2607; positionalArgumentOrMissing(); + State = 2609; + switch ( Interpreter.AdaptivePredict(_input,379,_ctx) ) { case 1: { - State = 2602; whiteSpace(); + State = 2608; whiteSpace(); } break; } } } } - State = 2609; + State = 2615; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,378,_ctx); + _alt = Interpreter.AdaptivePredict(_input,380,_ctx); } - State = 2610; namedArgumentList(); + State = 2616; namedArgumentList(); } break; } @@ -17728,22 +17726,22 @@ public PositionalArgumentOrMissingContext positionalArgumentOrMissing() { EnterRule(_localctx, 392, RULE_positionalArgumentOrMissing); int _la; try { - State = 2623; - switch ( Interpreter.AdaptivePredict(_input,382,_ctx) ) { + State = 2629; + switch ( Interpreter.AdaptivePredict(_input,384,_ctx) ) { case 1: _localctx = new SpecifiedPositionalArgumentContext(_localctx); EnterOuterAlt(_localctx, 1); { - State = 2613; positionalArgument(); - State = 2615; + State = 2619; positionalArgument(); + State = 2621; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2614; whiteSpace(); + State = 2620; whiteSpace(); } } - State = 2617; Match(COMMA); + State = 2623; Match(COMMA); } break; @@ -17751,15 +17749,15 @@ public PositionalArgumentOrMissingContext positionalArgumentOrMissing() { _localctx = new MissingPositionalArgumentContext(_localctx); EnterOuterAlt(_localctx, 2); { - State = 2620; + State = 2626; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2619; whiteSpace(); + State = 2625; whiteSpace(); } } - State = 2622; Match(COMMA); + State = 2628; Match(COMMA); } break; } @@ -17806,7 +17804,7 @@ public PositionalArgumentContext positionalArgument() { try { EnterOuterAlt(_localctx, 1); { - State = 2625; argumentExpression(); + State = 2631; argumentExpression(); } } catch (RecognitionException re) { @@ -17851,7 +17849,7 @@ public RequiredPositionalArgumentContext requiredPositionalArgument() { try { EnterOuterAlt(_localctx, 1); { - State = 2627; argumentExpression(); + State = 2633; argumentExpression(); } } catch (RecognitionException re) { @@ -17911,38 +17909,38 @@ public NamedArgumentListContext namedArgumentList() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2629; namedArgument(); - State = 2640; + State = 2635; namedArgument(); + State = 2646; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,385,_ctx); + _alt = Interpreter.AdaptivePredict(_input,387,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { { - State = 2631; + State = 2637; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2630; whiteSpace(); + State = 2636; whiteSpace(); } } - State = 2633; Match(COMMA); - State = 2635; + State = 2639; Match(COMMA); + State = 2641; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2634; whiteSpace(); + State = 2640; whiteSpace(); } } - State = 2637; namedArgument(); + State = 2643; namedArgument(); } } } - State = 2642; + State = 2648; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,385,_ctx); + _alt = Interpreter.AdaptivePredict(_input,387,_ctx); } } } @@ -17999,25 +17997,25 @@ public NamedArgumentContext namedArgument() { try { EnterOuterAlt(_localctx, 1); { - State = 2643; unrestrictedIdentifier(); - State = 2645; + State = 2649; unrestrictedIdentifier(); + State = 2651; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2644; whiteSpace(); + State = 2650; whiteSpace(); } } - State = 2647; Match(ASSIGN); - State = 2649; - switch ( Interpreter.AdaptivePredict(_input,387,_ctx) ) { + State = 2653; Match(ASSIGN); + State = 2655; + switch ( Interpreter.AdaptivePredict(_input,389,_ctx) ) { case 1: { - State = 2648; whiteSpace(); + State = 2654; whiteSpace(); } break; } - State = 2651; argumentExpression(); + State = 2657; argumentExpression(); } } catch (RecognitionException re) { @@ -18077,39 +18075,39 @@ public ArgumentExpressionContext argumentExpression() { ArgumentExpressionContext _localctx = new ArgumentExpressionContext(_ctx, State); EnterRule(_localctx, 402, RULE_argumentExpression); try { - State = 2665; - switch ( Interpreter.AdaptivePredict(_input,389,_ctx) ) { + State = 2671; + switch ( Interpreter.AdaptivePredict(_input,391,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2655; - switch ( Interpreter.AdaptivePredict(_input,388,_ctx) ) { + State = 2661; + switch ( Interpreter.AdaptivePredict(_input,390,_ctx) ) { case 1: { - State = 2653; Match(BYVAL); - State = 2654; whiteSpace(); + State = 2659; Match(BYVAL); + State = 2660; whiteSpace(); } break; } - State = 2657; expression(0); + State = 2663; expression(0); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2658; addressOfExpression(); + State = 2664; addressOfExpression(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 2659; lowerBoundArgumentExpression(); - State = 2660; whiteSpace(); - State = 2661; Match(TO); - State = 2662; whiteSpace(); - State = 2663; upperBoundArgumentExpression(); + State = 2665; lowerBoundArgumentExpression(); + State = 2666; whiteSpace(); + State = 2667; Match(TO); + State = 2668; whiteSpace(); + State = 2669; upperBoundArgumentExpression(); } break; } @@ -18156,7 +18154,7 @@ public LowerBoundArgumentExpressionContext lowerBoundArgumentExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 2667; expression(0); + State = 2673; expression(0); } } catch (RecognitionException re) { @@ -18201,7 +18199,7 @@ public UpperBoundArgumentExpressionContext upperBoundArgumentExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 2669; expression(0); + State = 2675; expression(0); } } catch (RecognitionException re) { @@ -18250,9 +18248,9 @@ public AddressOfExpressionContext addressOfExpression() { try { EnterOuterAlt(_localctx, 1); { - State = 2671; Match(ADDRESSOF); - State = 2672; whiteSpace(); - State = 2673; expression(0); + State = 2677; Match(ADDRESSOF); + State = 2678; whiteSpace(); + State = 2679; expression(0); } } catch (RecognitionException re) { @@ -18270,8 +18268,6 @@ public partial class KeywordContext : ParserRuleContext { public ITerminalNode CLNGLNG() { return GetToken(VBAParser.CLNGLNG, 0); } public ITerminalNode RESET() { return GetToken(VBAParser.RESET, 0); } public ITerminalNode XOR() { return GetToken(VBAParser.XOR, 0); } - public ITerminalNode LOAD() { return GetToken(VBAParser.LOAD, 0); } - public ITerminalNode MIDTYPESUFFIX() { return GetToken(VBAParser.MIDTYPESUFFIX, 0); } public ITerminalNode BYREF() { return GetToken(VBAParser.BYREF, 0); } public ITerminalNode DEBUG() { return GetToken(VBAParser.DEBUG, 0); } public ITerminalNode CLNGPTR() { return GetToken(VBAParser.CLNGPTR, 0); } @@ -18289,7 +18285,6 @@ public partial class KeywordContext : ParserRuleContext { public ITerminalNode IN() { return GetToken(VBAParser.IN, 0); } public ITerminalNode BINARY() { return GetToken(VBAParser.BINARY, 0); } public ITerminalNode TEXT() { return GetToken(VBAParser.TEXT, 0); } - public ITerminalNode MIDBTYPESUFFIX() { return GetToken(VBAParser.MIDBTYPESUFFIX, 0); } public ITerminalNode SGN() { return GetToken(VBAParser.SGN, 0); } public ITerminalNode CBYTE() { return GetToken(VBAParser.CBYTE, 0); } public ITerminalNode PUT() { return GetToken(VBAParser.PUT, 0); } @@ -18301,7 +18296,6 @@ public partial class KeywordContext : ParserRuleContext { public ITerminalNode ABS() { return GetToken(VBAParser.ABS, 0); } public ITerminalNode SPC() { return GetToken(VBAParser.SPC, 0); } public ITerminalNode INT() { return GetToken(VBAParser.INT, 0); } - public ITerminalNode RESUME_NEXT() { return GetToken(VBAParser.RESUME_NEXT, 0); } public ITerminalNode NOT() { return GetToken(VBAParser.NOT, 0); } public ITerminalNode LBOUND() { return GetToken(VBAParser.LBOUND, 0); } public ITerminalNode UBOUND() { return GetToken(VBAParser.UBOUND, 0); } @@ -18417,9 +18411,9 @@ public KeywordContext keyword() { try { EnterOuterAlt(_localctx, 1); { - State = 2675; + State = 2681; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -18465,7 +18459,7 @@ public MarkerKeywordContext markerKeyword() { try { EnterOuterAlt(_localctx, 1); { - State = 2677; Match(AS); + State = 2683; Match(AS); } } catch (RecognitionException re) { @@ -18570,9 +18564,9 @@ public StatementKeywordContext statementKeyword() { try { EnterOuterAlt(_localctx, 1); { - State = 2679; + State = 2685; _la = _input.La(1); - if ( !(((((_la - 24)) & ~0x3f) == 0 && ((1L << (_la - 24)) & ((1L << (EXIT - 24)) | (1L << (OPTION - 24)) | (1L << (CALL - 24)) | (1L << (CASE - 24)) | (1L << (CONST - 24)) | (1L << (DECLARE - 24)) | (1L << (DEFBOOL - 24)) | (1L << (DEFBYTE - 24)) | (1L << (DEFDATE - 24)) | (1L << (DEFDBL - 24)) | (1L << (DEFCUR - 24)) | (1L << (DEFINT - 24)) | (1L << (DEFLNG - 24)) | (1L << (DEFLNGLNG - 24)) | (1L << (DEFLNGPTR - 24)) | (1L << (DEFOBJ - 24)) | (1L << (DEFSNG - 24)) | (1L << (DEFSTR - 24)) | (1L << (DEFVAR - 24)) | (1L << (DIM - 24)) | (1L << (DO - 24)))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (ELSE - 89)) | (1L << (ELSEIF - 89)) | (1L << (END_SELECT - 89)) | (1L << (END_WITH - 89)) | (1L << (ENUM - 89)) | (1L << (ERASE - 89)) | (1L << (EVENT - 89)) | (1L << (EXIT_DO - 89)) | (1L << (EXIT_FOR - 89)) | (1L << (EXIT_FUNCTION - 89)) | (1L << (EXIT_PROPERTY - 89)) | (1L << (EXIT_SUB - 89)) | (1L << (FRIEND - 89)) | (1L << (FOR - 89)) | (1L << (FUNCTION - 89)) | (1L << (GLOBAL - 89)) | (1L << (GOSUB - 89)) | (1L << (GOTO - 89)) | (1L << (IF - 89)) | (1L << (IMPLEMENTS - 89)) | (1L << (LOOP - 89)) | (1L << (LET - 89)) | (1L << (LSET - 89)) | (1L << (NEXT - 89)) | (1L << (ON - 89)))) != 0) || ((((_la - 161)) & ~0x3f) == 0 && ((1L << (_la - 161)) & ((1L << (PRIVATE - 161)) | (1L << (PUBLIC - 161)) | (1L << (RAISEEVENT - 161)) | (1L << (REDIM - 161)) | (1L << (RESUME - 161)) | (1L << (RETURN - 161)) | (1L << (RSET - 161)) | (1L << (SELECT - 161)) | (1L << (SET - 161)) | (1L << (STATIC - 161)) | (1L << (STOP - 161)) | (1L << (SUB - 161)) | (1L << (TYPE - 161)) | (1L << (WEND - 161)) | (1L << (WHILE - 161)) | (1L << (WITH - 161)))) != 0)) ) { + if ( !(((((_la - 24)) & ~0x3f) == 0 && ((1L << (_la - 24)) & ((1L << (EXIT - 24)) | (1L << (OPTION - 24)) | (1L << (CALL - 24)) | (1L << (CASE - 24)) | (1L << (CONST - 24)) | (1L << (DECLARE - 24)) | (1L << (DEFBOOL - 24)) | (1L << (DEFBYTE - 24)) | (1L << (DEFDATE - 24)) | (1L << (DEFDBL - 24)) | (1L << (DEFCUR - 24)) | (1L << (DEFINT - 24)) | (1L << (DEFLNG - 24)) | (1L << (DEFLNGLNG - 24)) | (1L << (DEFLNGPTR - 24)) | (1L << (DEFOBJ - 24)) | (1L << (DEFSNG - 24)) | (1L << (DEFSTR - 24)) | (1L << (DEFVAR - 24)) | (1L << (DIM - 24)) | (1L << (DO - 24)) | (1L << (ELSE - 24)))) != 0) || ((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (ELSEIF - 88)) | (1L << (END_SELECT - 88)) | (1L << (END_WITH - 88)) | (1L << (ENUM - 88)) | (1L << (ERASE - 88)) | (1L << (EVENT - 88)) | (1L << (EXIT_DO - 88)) | (1L << (EXIT_FOR - 88)) | (1L << (EXIT_FUNCTION - 88)) | (1L << (EXIT_PROPERTY - 88)) | (1L << (EXIT_SUB - 88)) | (1L << (FRIEND - 88)) | (1L << (FOR - 88)) | (1L << (FUNCTION - 88)) | (1L << (GLOBAL - 88)) | (1L << (GOSUB - 88)) | (1L << (GOTO - 88)) | (1L << (IF - 88)) | (1L << (IMPLEMENTS - 88)) | (1L << (LOOP - 88)) | (1L << (LET - 88)) | (1L << (LSET - 88)) | (1L << (NEXT - 88)) | (1L << (ON - 88)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (PRIVATE - 159)) | (1L << (PUBLIC - 159)) | (1L << (RAISEEVENT - 159)) | (1L << (REDIM - 159)) | (1L << (RESUME - 159)) | (1L << (RETURN - 159)) | (1L << (RSET - 159)) | (1L << (SELECT - 159)) | (1L << (SET - 159)) | (1L << (STATIC - 159)) | (1L << (STOP - 159)) | (1L << (SUB - 159)) | (1L << (TYPE - 159)) | (1L << (WEND - 159)) | (1L << (WHILE - 159)) | (1L << (WITH - 159)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -18626,25 +18620,25 @@ public EndOfLineContext endOfLine() { EnterRule(_localctx, 416, RULE_endOfLine); int _la; try { - State = 2692; - switch ( Interpreter.AdaptivePredict(_input,393,_ctx) ) { + State = 2698; + switch ( Interpreter.AdaptivePredict(_input,395,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2682; + State = 2688; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2681; whiteSpace(); + State = 2687; whiteSpace(); } } - State = 2684; Match(NEWLINE); - State = 2686; - switch ( Interpreter.AdaptivePredict(_input,391,_ctx) ) { + State = 2690; Match(NEWLINE); + State = 2692; + switch ( Interpreter.AdaptivePredict(_input,393,_ctx) ) { case 1: { - State = 2685; whiteSpace(); + State = 2691; whiteSpace(); } break; } @@ -18654,15 +18648,15 @@ public EndOfLineContext endOfLine() { case 2: EnterOuterAlt(_localctx, 2); { - State = 2689; + State = 2695; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2688; whiteSpace(); + State = 2694; whiteSpace(); } } - State = 2691; commentOrAnnotation(); + State = 2697; commentOrAnnotation(); } break; } @@ -18724,37 +18718,37 @@ public EndOfStatementContext endOfStatement() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2704; + State = 2710; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,397,_ctx); + _alt = Interpreter.AdaptivePredict(_input,399,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { - State = 2702; - switch ( Interpreter.AdaptivePredict(_input,396,_ctx) ) { + State = 2708; + switch ( Interpreter.AdaptivePredict(_input,398,_ctx) ) { case 1: { - State = 2694; endOfLine(); + State = 2700; endOfLine(); } break; case 2: { { - State = 2696; + State = 2702; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2695; whiteSpace(); + State = 2701; whiteSpace(); } } - State = 2698; Match(COLON); - State = 2700; - switch ( Interpreter.AdaptivePredict(_input,395,_ctx) ) { + State = 2704; Match(COLON); + State = 2706; + switch ( Interpreter.AdaptivePredict(_input,397,_ctx) ) { case 1: { - State = 2699; whiteSpace(); + State = 2705; whiteSpace(); } break; } @@ -18764,9 +18758,9 @@ public EndOfStatementContext endOfStatement() { } } } - State = 2706; + State = 2712; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,397,_ctx); + _alt = Interpreter.AdaptivePredict(_input,399,_ctx); } } } @@ -18816,26 +18810,26 @@ public CommentOrAnnotationContext commentOrAnnotation() { CommentOrAnnotationContext _localctx = new CommentOrAnnotationContext(_ctx, State); EnterRule(_localctx, 420, RULE_commentOrAnnotation); try { - State = 2710; - switch ( Interpreter.AdaptivePredict(_input,398,_ctx) ) { + State = 2716; + switch ( Interpreter.AdaptivePredict(_input,400,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2707; annotationList(); + State = 2713; annotationList(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2708; remComment(); + State = 2714; remComment(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 2709; comment(); + State = 2715; comment(); } break; } @@ -18886,16 +18880,16 @@ public RemCommentContext remComment() { try { EnterOuterAlt(_localctx, 1); { - State = 2712; Match(REM); - State = 2714; - switch ( Interpreter.AdaptivePredict(_input,399,_ctx) ) { + State = 2718; Match(REM); + State = 2720; + switch ( Interpreter.AdaptivePredict(_input,401,_ctx) ) { case 1: { - State = 2713; whiteSpace(); + State = 2719; whiteSpace(); } break; } - State = 2716; commentBody(); + State = 2722; commentBody(); } } catch (RecognitionException re) { @@ -18941,8 +18935,8 @@ public CommentContext comment() { try { EnterOuterAlt(_localctx, 1); { - State = 2718; Match(SINGLEQUOTE); - State = 2719; commentBody(); + State = 2724; Match(SINGLEQUOTE); + State = 2725; commentBody(); } } catch (RecognitionException re) { @@ -18994,23 +18988,23 @@ public CommentBodyContext commentBody() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2725; + State = 2731; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,401,_ctx); + _alt = Interpreter.AdaptivePredict(_input,403,_ctx); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ) { if ( _alt==1 ) { { - State = 2723; - switch ( Interpreter.AdaptivePredict(_input,400,_ctx) ) { + State = 2729; + switch ( Interpreter.AdaptivePredict(_input,402,_ctx) ) { case 1: { - State = 2721; Match(LINE_CONTINUATION); + State = 2727; Match(LINE_CONTINUATION); } break; case 2: { - State = 2722; + State = 2728; _la = _input.La(1); if ( _la <= 0 || (_la==NEWLINE) ) { _errHandler.RecoverInline(this); @@ -19021,9 +19015,9 @@ public CommentBodyContext commentBody() { } } } - State = 2727; + State = 2733; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,401,_ctx); + _alt = Interpreter.AdaptivePredict(_input,403,_ctx); } } } @@ -19088,43 +19082,43 @@ public AnnotationListContext annotationList() { try { EnterOuterAlt(_localctx, 1); { - State = 2728; Match(SINGLEQUOTE); - State = 2734; + State = 2734; Match(SINGLEQUOTE); + State = 2740; _errHandler.Sync(this); _la = _input.La(1); do { { { - State = 2729; Match(AT); - State = 2730; annotation(); - State = 2732; - switch ( Interpreter.AdaptivePredict(_input,402,_ctx) ) { + State = 2735; Match(AT); + State = 2736; annotation(); + State = 2738; + switch ( Interpreter.AdaptivePredict(_input,404,_ctx) ) { case 1: { - State = 2731; whiteSpace(); + State = 2737; whiteSpace(); } break; } } } - State = 2736; + State = 2742; _errHandler.Sync(this); _la = _input.La(1); } while ( _la==AT ); - State = 2743; - switch ( Interpreter.AdaptivePredict(_input,405,_ctx) ) { + State = 2749; + switch ( Interpreter.AdaptivePredict(_input,407,_ctx) ) { case 1: { - State = 2739; + State = 2745; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2738; whiteSpace(); + State = 2744; whiteSpace(); } } - State = 2741; Match(COLON); - State = 2742; commentBody(); + State = 2747; Match(COLON); + State = 2748; commentBody(); } break; } @@ -19175,12 +19169,12 @@ public AnnotationContext annotation() { try { EnterOuterAlt(_localctx, 1); { - State = 2745; annotationName(); - State = 2747; - switch ( Interpreter.AdaptivePredict(_input,406,_ctx) ) { + State = 2751; annotationName(); + State = 2753; + switch ( Interpreter.AdaptivePredict(_input,408,_ctx) ) { case 1: { - State = 2746; annotationArgList(); + State = 2752; annotationArgList(); } break; } @@ -19228,7 +19222,7 @@ public AnnotationNameContext annotationName() { try { EnterOuterAlt(_localctx, 1); { - State = 2749; unrestrictedIdentifier(); + State = 2755; unrestrictedIdentifier(); } } catch (RecognitionException re) { @@ -19288,22 +19282,22 @@ public AnnotationArgListContext annotationArgList() { int _la; try { int _alt; - State = 2811; - switch ( Interpreter.AdaptivePredict(_input,420,_ctx) ) { + State = 2817; + switch ( Interpreter.AdaptivePredict(_input,422,_ctx) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 2751; whiteSpace(); - State = 2752; annotationArg(); + State = 2757; whiteSpace(); + State = 2758; annotationArg(); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 2754; whiteSpace(); - State = 2755; annotationArg(); - State = 2764; + State = 2760; whiteSpace(); + State = 2761; annotationArg(); + State = 2770; _errHandler.Sync(this); _alt = 1; do { @@ -19311,33 +19305,33 @@ public AnnotationArgListContext annotationArgList() { case 1: { { - State = 2757; + State = 2763; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2756; whiteSpace(); + State = 2762; whiteSpace(); } } - State = 2759; Match(COMMA); - State = 2761; - switch ( Interpreter.AdaptivePredict(_input,408,_ctx) ) { + State = 2765; Match(COMMA); + State = 2767; + switch ( Interpreter.AdaptivePredict(_input,410,_ctx) ) { case 1: { - State = 2760; whiteSpace(); + State = 2766; whiteSpace(); } break; } - State = 2763; annotationArg(); + State = 2769; annotationArg(); } } break; default: throw new NoViableAltException(this); } - State = 2766; + State = 2772; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,409,_ctx); + _alt = Interpreter.AdaptivePredict(_input,411,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } break; @@ -19345,74 +19339,74 @@ public AnnotationArgListContext annotationArgList() { case 3: EnterOuterAlt(_localctx, 3); { - State = 2769; + State = 2775; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2768; whiteSpace(); + State = 2774; whiteSpace(); } } - State = 2771; Match(LPAREN); - State = 2773; + State = 2777; Match(LPAREN); + State = 2779; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2772; whiteSpace(); + State = 2778; whiteSpace(); } } - State = 2775; Match(RPAREN); + State = 2781; Match(RPAREN); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 2777; + State = 2783; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2776; whiteSpace(); + State = 2782; whiteSpace(); } } - State = 2779; Match(LPAREN); - State = 2781; - switch ( Interpreter.AdaptivePredict(_input,413,_ctx) ) { + State = 2785; Match(LPAREN); + State = 2787; + switch ( Interpreter.AdaptivePredict(_input,415,_ctx) ) { case 1: { - State = 2780; whiteSpace(); + State = 2786; whiteSpace(); } break; } - State = 2783; annotationArg(); - State = 2785; + State = 2789; annotationArg(); + State = 2791; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2784; whiteSpace(); + State = 2790; whiteSpace(); } } - State = 2787; Match(RPAREN); + State = 2793; Match(RPAREN); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 2790; + State = 2796; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2789; whiteSpace(); + State = 2795; whiteSpace(); } } - State = 2792; Match(LPAREN); - State = 2793; annotationArg(); - State = 2802; + State = 2798; Match(LPAREN); + State = 2799; annotationArg(); + State = 2808; _errHandler.Sync(this); _alt = 1; do { @@ -19420,43 +19414,43 @@ public AnnotationArgListContext annotationArgList() { case 1: { { - State = 2795; + State = 2801; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2794; whiteSpace(); + State = 2800; whiteSpace(); } } - State = 2797; Match(COMMA); - State = 2799; - switch ( Interpreter.AdaptivePredict(_input,417,_ctx) ) { + State = 2803; Match(COMMA); + State = 2805; + switch ( Interpreter.AdaptivePredict(_input,419,_ctx) ) { case 1: { - State = 2798; whiteSpace(); + State = 2804; whiteSpace(); } break; } - State = 2801; annotationArg(); + State = 2807; annotationArg(); } } break; default: throw new NoViableAltException(this); } - State = 2804; + State = 2810; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,418,_ctx); + _alt = Interpreter.AdaptivePredict(_input,420,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); - State = 2807; + State = 2813; _la = _input.La(1); if (_la==WS || _la==LINE_CONTINUATION) { { - State = 2806; whiteSpace(); + State = 2812; whiteSpace(); } } - State = 2809; Match(RPAREN); + State = 2815; Match(RPAREN); } break; } @@ -19503,7 +19497,7 @@ public AnnotationArgContext annotationArg() { try { EnterOuterAlt(_localctx, 1); { - State = 2813; expression(0); + State = 2819; expression(0); } } catch (RecognitionException re) { @@ -19551,17 +19545,17 @@ public MandatoryLineContinuationContext mandatoryLineContinuation() { try { EnterOuterAlt(_localctx, 1); { - State = 2815; Match(LINE_CONTINUATION); - State = 2819; + State = 2821; Match(LINE_CONTINUATION); + State = 2825; _errHandler.Sync(this); _la = _input.La(1); while (_la==WS) { { { - State = 2816; Match(WS); + State = 2822; Match(WS); } } - State = 2821; + State = 2827; _errHandler.Sync(this); _la = _input.La(1); } @@ -19616,7 +19610,7 @@ public WhiteSpaceContext whiteSpace() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 2823; + State = 2829; _errHandler.Sync(this); _alt = 1; do { @@ -19624,7 +19618,7 @@ public WhiteSpaceContext whiteSpace() { case 1: { { - State = 2822; + State = 2828; _la = _input.La(1); if ( !(_la==WS || _la==LINE_CONTINUATION) ) { _errHandler.RecoverInline(this); @@ -19636,9 +19630,9 @@ public WhiteSpaceContext whiteSpace() { default: throw new NoViableAltException(this); } - State = 2825; + State = 2831; _errHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(_input,422,_ctx); + _alt = Interpreter.AdaptivePredict(_input,424,_ctx); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.InvalidAltNumber ); } } @@ -19717,7 +19711,7 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) { } public static readonly string _serializedATN = - "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\xF1\xB0E\x4\x2"+ + "\x3\xAF6F\x8320\x479D\xB75C\x4880\x1605\x191C\xAB37\x3\xED\xB14\x4\x2"+ "\t\x2\x4\x3\t\x3\x4\x4\t\x4\x4\x5\t\x5\x4\x6\t\x6\x4\a\t\a\x4\b\t\b\x4"+ "\t\t\t\x4\n\t\n\x4\v\t\v\x4\f\t\f\x4\r\t\r\x4\xE\t\xE\x4\xF\t\xF\x4\x10"+ "\t\x10\x4\x11\t\x11\x4\x12\t\x12\x4\x13\t\x13\x4\x14\t\x14\x4\x15\t\x15"+ @@ -19853,517 +19847,517 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) { "\x3u\x5u\x67B\nu\x3u\x3u\x3u\x3u\x5u\x681\nu\x3u\x5u\x684\nu\x3u\x3u\x3"+ "u\x3u\x3v\x3v\x3v\x3v\x5v\x68E\nv\x3v\x3v\x5v\x692\nv\x3v\x5v\x695\nv"+ "\x3v\x5v\x698\nv\x3v\x5v\x69B\nv\x3w\x3w\x5w\x69F\nw\x3w\x3w\x5w\x6A3"+ - "\nw\x3w\aw\x6A6\nw\fw\xEw\x6A9\vw\x3x\x3x\x3y\x3y\x3y\x3y\x5y\x6B1\ny"+ - "\x3y\x3y\x3z\x3z\x5z\x6B7\nz\x3z\x3z\x5z\x6BB\nz\x3z\az\x6BE\nz\fz\xE"+ - "z\x6C1\vz\x3{\x3{\x3{\x3{\x5{\x6C7\n{\x3|\x3|\x3|\x5|\x6CC\n|\x3|\x3|"+ - "\x5|\x6D0\n|\x3|\x3|\x5|\x6D4\n|\x3|\x3|\x5|\x6D8\n|\x3|\x3|\x5|\x6DC"+ - "\n|\x3|\x3|\x5|\x6E0\n|\x5|\x6E2\n|\x3|\x3|\x5|\x6E6\n|\x3|\x3|\x5|\x6EA"+ - "\n|\x3|\x3|\x3}\x3}\x3~\x3~\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F"+ - "\x3\x7F\x3\x7F\x5\x7F\x6FA\n\x7F\x5\x7F\x6FC\n\x7F\x3\x80\x3\x80\x3\x80"+ - "\x3\x80\x5\x80\x702\n\x80\x5\x80\x704\n\x80\x3\x81\x3\x81\x3\x82\x3\x82"+ - "\x3\x82\x3\x82\x5\x82\x70C\n\x82\x3\x82\x3\x82\x5\x82\x710\n\x82\x3\x82"+ - "\x3\x82\x3\x83\x3\x83\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84"+ - "\x3\x84\x3\x85\x3\x85\x5\x85\x720\n\x85\x3\x85\x3\x85\x5\x85\x724\n\x85"+ - "\x3\x85\x3\x85\x3\x85\a\x85\x729\n\x85\f\x85\xE\x85\x72C\v\x85\x3\x85"+ - "\x5\x85\x72F\n\x85\x3\x85\x3\x85\x3\x86\x3\x86\x3\x87\x3\x87\x3\x87\x3"+ - "\x87\x5\x87\x739\n\x87\x3\x87\x3\x87\x5\x87\x73D\n\x87\x3\x87\a\x87\x740"+ - "\n\x87\f\x87\xE\x87\x743\v\x87\x3\x87\x3\x87\x3\x87\x3\x88\x3\x88\x5\x88"+ - "\x74A\n\x88\x3\x88\x3\x88\x3\x88\x3\x88\x3\x89\x3\x89\x5\x89\x752\n\x89"+ - "\x5\x89\x754\n\x89\x3\x89\x3\x89\x5\x89\x758\n\x89\x3\x89\x3\x89\x3\x89"+ - "\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x5\x89\x763\n\x89\x3\x8A\x3"+ - "\x8A\x3\x8B\x3\x8B\x3\x8C\x3\x8C\x3\x8C\x3\x8C\x5\x8C\x76D\n\x8C\x3\x8C"+ - "\x3\x8C\x5\x8C\x771\n\x8C\x3\x8C\x3\x8C\x3\x8D\x3\x8D\x3\x8D\x5\x8D\x778"+ - "\n\x8D\x3\x8D\x3\x8D\x5\x8D\x77C\n\x8D\x3\x8D\x3\x8D\x5\x8D\x780\n\x8D"+ - "\x3\x8D\x3\x8D\x5\x8D\x784\n\x8D\x3\x8D\x5\x8D\x787\n\x8D\x3\x8D\x3\x8D"+ - "\x3\x8D\x3\x8D\x3\x8E\x3\x8E\x3\x8F\x3\x8F\x5\x8F\x791\n\x8F\x3\x8F\x3"+ - "\x8F\x3\x90\x3\x90\x3\x90\x3\x90\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3"+ - "\x91\x3\x91\x3\x91\x3\x92\x3\x92\x3\x92\x3\x92\a\x92\x7A5\n\x92\f\x92"+ - "\xE\x92\x7A8\v\x92\x3\x93\x3\x93\x5\x93\x7AC\n\x93\x3\x94\x3\x94\x5\x94"+ - "\x7B0\n\x94\x3\x94\x3\x94\x3\x95\x3\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3"+ - "\x96\x5\x96\x7BB\n\x96\x3\x96\x3\x96\x3\x97\x3\x97\x5\x97\x7C1\n\x97\x3"+ - "\x97\x5\x97\x7C4\n\x97\x3\x97\x5\x97\x7C7\n\x97\x3\x97\x3\x97\x3\x98\x3"+ - "\x98\x5\x98\x7CD\n\x98\x3\x98\x3\x98\x5\x98\x7D1\n\x98\x3\x98\a\x98\x7D4"+ - "\n\x98\f\x98\xE\x98\x7D7\v\x98\x3\x99\x3\x99\x5\x99\x7DB\n\x99\x5\x99"+ - "\x7DD\n\x99\x3\x99\x3\x99\x3\x9A\x3\x9A\x5\x9A\x7E3\n\x9A\x3\x9A\x3\x9A"+ - "\x3\x9B\x3\x9B\x3\x9C\x3\x9C\x3\x9D\x3\x9D\x3\x9D\x5\x9D\x7EE\n\x9D\x3"+ - "\x9D\x3\x9D\x3\x9D\x5\x9D\x7F3\n\x9D\x3\x9D\x3\x9D\x3\x9E\x3\x9E\x5\x9E"+ - "\x7F9\n\x9E\x3\x9E\x3\x9E\x5\x9E\x7FD\n\x9E\x3\x9E\a\x9E\x800\n\x9E\f"+ - "\x9E\xE\x9E\x803\v\x9E\x3\x9F\x3\x9F\x5\x9F\x807\n\x9F\x3\x9F\x3\x9F\x5"+ - "\x9F\x80B\n\x9F\x3\x9F\x3\x9F\x5\x9F\x80F\n\x9F\x5\x9F\x811\n\x9F\x3\x9F"+ - "\x3\x9F\x5\x9F\x815\n\x9F\x5\x9F\x817\n\x9F\x3\x9F\x3\x9F\x3\x9F\x5\x9F"+ - "\x81C\n\x9F\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA1\x3"+ - "\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x5"+ - "\xA2\x830\n\xA2\x5\xA2\x832\n\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x5\xA2\x838"+ - "\n\xA2\x5\xA2\x83A\n\xA2\x3\xA2\x3\xA2\x5\xA2\x83E\n\xA2\x3\xA2\x3\xA2"+ - "\x5\xA2\x842\n\xA2\x3\xA2\x5\xA2\x845\n\xA2\x3\xA2\x5\xA2\x848\n\xA2\x3"+ - "\xA2\x3\xA2\x5\xA2\x84C\n\xA2\x3\xA2\x5\xA2\x84F\n\xA2\x3\xA3\x3\xA3\x5"+ - "\xA3\x853\n\xA3\x3\xA3\x3\xA3\x5\xA3\x857\n\xA3\x5\xA3\x859\n\xA3\x3\xA3"+ - "\x3\xA3\x3\xA3\x3\xA3\x5\xA3\x85F\n\xA3\x5\xA3\x861\n\xA3\x3\xA3\x3\xA3"+ - "\x5\xA3\x865\n\xA3\x3\xA3\x3\xA3\x5\xA3\x869\n\xA3\x3\xA3\x6\xA3\x86C"+ - "\n\xA3\r\xA3\xE\xA3\x86D\x3\xA4\x3\xA4\x5\xA4\x872\n\xA4\x3\xA4\x3\xA4"+ - "\x5\xA4\x876\n\xA4\x5\xA4\x878\n\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x5\xA4"+ - "\x87E\n\xA4\x3\xA4\x3\xA4\x5\xA4\x882\n\xA4\x3\xA4\x3\xA4\x3\xA5\x3\xA5"+ - "\x5\xA5\x888\n\xA5\x3\xA5\x3\xA5\x5\xA5\x88C\n\xA5\x3\xA5\x3\xA5\x5\xA5"+ - "\x890\n\xA5\x3\xA5\x3\xA5\x5\xA5\x894\n\xA5\x3\xA5\x3\xA5\x3\xA6\x3\xA6"+ - "\x3\xA7\x3\xA7\x5\xA7\x89C\n\xA7\x3\xA7\x3\xA7\x5\xA7\x8A0\n\xA7\x3\xA7"+ - "\a\xA7\x8A3\n\xA7\f\xA7\xE\xA7\x8A6\v\xA7\x3\xA8\x3\xA8\x3\xA8\x3\xA8"+ - "\x3\xA8\x5\xA8\x8AD\n\xA8\x3\xA8\x3\xA8\x3\xA9\x3\xA9\x3\xA9\x5\xA9\x8B4"+ - "\n\xA9\x3\xAA\x3\xAA\x5\xAA\x8B8\n\xAA\x3\xAB\x3\xAB\x3\xAC\x3\xAC\x3"+ - "\xAC\x3\xAD\x3\xAD\x3\xAD\x3\xAD\x5\xAD\x8C3\n\xAD\x3\xAE\x3\xAE\a\xAE"+ - "\x8C7\n\xAE\f\xAE\xE\xAE\x8CA\v\xAE\x3\xAE\x3\xAE\x3\xAF\x3\xAF\x5\xAF"+ - "\x8D0\n\xAF\x3\xB0\x3\xB0\x5\xB0\x8D4\n\xB0\x3\xB0\x3\xB0\x5\xB0\x8D8"+ - "\n\xB0\x3\xB0\x3\xB0\x5\xB0\x8DC\n\xB0\x3\xB0\x5\xB0\x8DF\n\xB0\x3\xB1"+ - "\x3\xB1\x3\xB2\x3\xB2\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x5\xB3\x8EA\n"+ - "\xB3\x3\xB3\x3\xB3\x5\xB3\x8EE\n\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3"+ - "\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x5\xB3\x8FC\n\xB3\x3"+ - "\xB4\x3\xB4\x5\xB4\x900\n\xB4\x3\xB4\x3\xB4\x5\xB4\x904\n\xB4\x3\xB5\x3"+ - "\xB5\x5\xB5\x908\n\xB5\x3\xB6\x3\xB6\x5\xB6\x90C\n\xB6\x3\xB6\x3\xB6\x3"+ - "\xB7\x3\xB7\x5\xB7\x912\n\xB7\x3\xB7\x5\xB7\x915\n\xB7\x3\xB8\x3\xB8\x3"+ - "\xB9\x3\xB9\x5\xB9\x91B\n\xB9\x3\xB9\x5\xB9\x91E\n\xB9\x3\xB9\x3\xB9\x5"+ - "\xB9\x922\n\xB9\x3\xB9\x5\xB9\x925\n\xB9\x3\xBA\x3\xBA\x3\xBB\x3\xBB\x3"+ - "\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3"+ - "\xBC\x5\xBC\x936\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x93B\n\xBC\x3\xBC\x3"+ - "\xBC\x3\xBC\x3\xBC\x5\xBC\x941\n\xBC\x3\xBC\x3\xBC\x5\xBC\x945\n\xBC\x3"+ - "\xBC\x3\xBC\x5\xBC\x949\n\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC"+ - "\x950\n\xBC\x3\xBC\x3\xBC\x5\xBC\x954\n\xBC\x3\xBC\x3\xBC\x5\xBC\x958"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x95D\n\xBC\x3\xBC\x3\xBC\x5\xBC\x961"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x966\n\xBC\x3\xBC\x3\xBC\x5\xBC\x96A"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x96F\n\xBC\x3\xBC\x3\xBC\x5\xBC\x973"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x978\n\xBC\x3\xBC\x3\xBC\x5\xBC\x97C"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x981\n\xBC\x3\xBC\x3\xBC\x5\xBC\x985"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x98A\n\xBC\x3\xBC\x3\xBC\x5\xBC\x98E"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x993\n\xBC\x3\xBC\x3\xBC\x5\xBC\x997"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x99C\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9A0"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x9A5\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9A9"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x9AE\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9B2"+ - "\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x9B7\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9BB"+ - "\n\xBC\x3\xBC\a\xBC\x9BE\n\xBC\f\xBC\xE\xBC\x9C1\v\xBC\x3\xBD\x3\xBD\x3"+ - "\xBD\x3\xBD\x3\xBD\x5\xBD\x9C8\n\xBD\x5\xBD\x9CA\n\xBD\x3\xBE\x3\xBE\x3"+ - "\xBE\x5\xBE\x9CF\n\xBE\x3\xBF\x3\xBF\x3\xC0\x3\xC0\x3\xC1\x3\xC1\x3\xC2"+ - "\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\x9DC\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5"+ - "\xC2\x9E1\n\xC2\x3\xC2\x5\xC2\x9E4\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\x9E9"+ - "\n\xC2\x3\xC2\x5\xC2\x9EC\n\xC2\x3\xC2\x5\xC2\x9EF\n\xC2\x3\xC2\x3\xC2"+ - "\x3\xC2\x5\xC2\x9F4\n\xC2\x3\xC2\x3\xC2\x5\xC2\x9F8\n\xC2\x3\xC2\x3\xC2"+ - "\x3\xC2\x5\xC2\x9FD\n\xC2\x3\xC2\x3\xC2\x5\xC2\xA01\n\xC2\x3\xC2\a\xC2"+ - "\xA04\n\xC2\f\xC2\xE\xC2\xA07\v\xC2\x3\xC3\x3\xC3\x3\xC3\x5\xC3\xA0C\n"+ - "\xC3\x3\xC3\x3\xC3\x5\xC3\xA10\n\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3"+ - "\x5\xC3\xA17\n\xC3\x3\xC3\x3\xC3\x5\xC3\xA1B\n\xC3\x3\xC3\x5\xC3\xA1E"+ - "\n\xC3\x3\xC4\x3\xC4\x3\xC5\x3\xC5\x5\xC5\xA24\n\xC5\a\xC5\xA26\n\xC5"+ - "\f\xC5\xE\xC5\xA29\v\xC5\x3\xC5\x3\xC5\x3\xC5\x5\xC5\xA2E\n\xC5\a\xC5"+ - "\xA30\n\xC5\f\xC5\xE\xC5\xA33\v\xC5\x3\xC5\x5\xC5\xA36\n\xC5\x3\xC6\x3"+ - "\xC6\x5\xC6\xA3A\n\xC6\x3\xC6\x3\xC6\x3\xC6\x5\xC6\xA3F\n\xC6\x3\xC6\x5"+ - "\xC6\xA42\n\xC6\x3\xC7\x3\xC7\x3\xC8\x3\xC8\x3\xC9\x3\xC9\x5\xC9\xA4A"+ - "\n\xC9\x3\xC9\x3\xC9\x5\xC9\xA4E\n\xC9\x3\xC9\a\xC9\xA51\n\xC9\f\xC9\xE"+ - "\xC9\xA54\v\xC9\x3\xCA\x3\xCA\x5\xCA\xA58\n\xCA\x3\xCA\x3\xCA\x5\xCA\xA5C"+ - "\n\xCA\x3\xCA\x3\xCA\x3\xCB\x3\xCB\x5\xCB\xA62\n\xCB\x3\xCB\x3\xCB\x3"+ - "\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x5\xCB\xA6C\n\xCB\x3\xCC\x3\xCC"+ - "\x3\xCD\x3\xCD\x3\xCE\x3\xCE\x3\xCE\x3\xCE\x3\xCF\x3\xCF\x3\xD0\x3\xD0"+ - "\x3\xD1\x3\xD1\x3\xD2\x5\xD2\xA7D\n\xD2\x3\xD2\x3\xD2\x5\xD2\xA81\n\xD2"+ - "\x3\xD2\x5\xD2\xA84\n\xD2\x3\xD2\x5\xD2\xA87\n\xD2\x3\xD3\x3\xD3\x5\xD3"+ - "\xA8B\n\xD3\x3\xD3\x3\xD3\x5\xD3\xA8F\n\xD3\a\xD3\xA91\n\xD3\f\xD3\xE"+ - "\xD3\xA94\v\xD3\x3\xD4\x3\xD4\x3\xD4\x5\xD4\xA99\n\xD4\x3\xD5\x3\xD5\x5"+ - "\xD5\xA9D\n\xD5\x3\xD5\x3\xD5\x3\xD6\x3\xD6\x3\xD6\x3\xD7\x3\xD7\a\xD7"+ - "\xAA6\n\xD7\f\xD7\xE\xD7\xAA9\v\xD7\x3\xD8\x3\xD8\x3\xD8\x3\xD8\x5\xD8"+ - "\xAAF\n\xD8\x6\xD8\xAB1\n\xD8\r\xD8\xE\xD8\xAB2\x3\xD8\x5\xD8\xAB6\n\xD8"+ - "\x3\xD8\x3\xD8\x5\xD8\xABA\n\xD8\x3\xD9\x3\xD9\x5\xD9\xABE\n\xD9\x3\xDA"+ - "\x3\xDA\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x3\xDB\x5\xDB\xAC8\n\xDB\x3"+ - "\xDB\x3\xDB\x5\xDB\xACC\n\xDB\x3\xDB\x6\xDB\xACF\n\xDB\r\xDB\xE\xDB\xAD0"+ - "\x3\xDB\x5\xDB\xAD4\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAD8\n\xDB\x3\xDB\x3\xDB"+ - "\x5\xDB\xADC\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAE0\n\xDB\x3\xDB\x3\xDB\x5\xDB"+ - "\xAE4\n\xDB\x3\xDB\x3\xDB\x3\xDB\x5\xDB\xAE9\n\xDB\x3\xDB\x3\xDB\x3\xDB"+ - "\x5\xDB\xAEE\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAF2\n\xDB\x3\xDB\x6\xDB\xAF5"+ - "\n\xDB\r\xDB\xE\xDB\xAF6\x3\xDB\x5\xDB\xAFA\n\xDB\x3\xDB\x3\xDB\x5\xDB"+ - "\xAFE\n\xDB\x3\xDC\x3\xDC\x3\xDD\x3\xDD\a\xDD\xB04\n\xDD\f\xDD\xE\xDD"+ - "\xB07\v\xDD\x3\xDE\x6\xDE\xB0A\n\xDE\r\xDE\xE\xDE\xB0B\x3\xDE\x2\x2\x4"+ - "\x176\x182\xDF\x2\x2\x4\x2\x6\x2\b\x2\n\x2\f\x2\xE\x2\x10\x2\x12\x2\x14"+ - "\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2 \x2\"\x2$\x2&\x2(\x2*\x2,\x2.\x2"+ - "\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2:\x2<\x2>\x2@\x2\x42\x2\x44\x2\x46"+ - "\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V\x2X\x2Z\x2\\\x2^\x2`\x2\x62\x2\x64\x2"+ - "\x66\x2h\x2j\x2l\x2n\x2p\x2r\x2t\x2v\x2x\x2z\x2|\x2~\x2\x80\x2\x82\x2"+ - "\x84\x2\x86\x2\x88\x2\x8A\x2\x8C\x2\x8E\x2\x90\x2\x92\x2\x94\x2\x96\x2"+ - "\x98\x2\x9A\x2\x9C\x2\x9E\x2\xA0\x2\xA2\x2\xA4\x2\xA6\x2\xA8\x2\xAA\x2"+ - "\xAC\x2\xAE\x2\xB0\x2\xB2\x2\xB4\x2\xB6\x2\xB8\x2\xBA\x2\xBC\x2\xBE\x2"+ - "\xC0\x2\xC2\x2\xC4\x2\xC6\x2\xC8\x2\xCA\x2\xCC\x2\xCE\x2\xD0\x2\xD2\x2"+ - "\xD4\x2\xD6\x2\xD8\x2\xDA\x2\xDC\x2\xDE\x2\xE0\x2\xE2\x2\xE4\x2\xE6\x2"+ - "\xE8\x2\xEA\x2\xEC\x2\xEE\x2\xF0\x2\xF2\x2\xF4\x2\xF6\x2\xF8\x2\xFA\x2"+ - "\xFC\x2\xFE\x2\x100\x2\x102\x2\x104\x2\x106\x2\x108\x2\x10A\x2\x10C\x2"+ - "\x10E\x2\x110\x2\x112\x2\x114\x2\x116\x2\x118\x2\x11A\x2\x11C\x2\x11E"+ - "\x2\x120\x2\x122\x2\x124\x2\x126\x2\x128\x2\x12A\x2\x12C\x2\x12E\x2\x130"+ - "\x2\x132\x2\x134\x2\x136\x2\x138\x2\x13A\x2\x13C\x2\x13E\x2\x140\x2\x142"+ - "\x2\x144\x2\x146\x2\x148\x2\x14A\x2\x14C\x2\x14E\x2\x150\x2\x152\x2\x154"+ - "\x2\x156\x2\x158\x2\x15A\x2\x15C\x2\x15E\x2\x160\x2\x162\x2\x164\x2\x166"+ - "\x2\x168\x2\x16A\x2\x16C\x2\x16E\x2\x170\x2\x172\x2\x174\x2\x176\x2\x178"+ - "\x2\x17A\x2\x17C\x2\x17E\x2\x180\x2\x182\x2\x184\x2\x186\x2\x188\x2\x18A"+ - "\x2\x18C\x2\x18E\x2\x190\x2\x192\x2\x194\x2\x196\x2\x198\x2\x19A\x2\x19C"+ - "\x2\x19E\x2\x1A0\x2\x1A2\x2\x1A4\x2\x1A6\x2\x1A8\x2\x1AA\x2\x1AC\x2\x1AE"+ - "\x2\x1B0\x2\x1B2\x2\x1B4\x2\x1B6\x2\x1B8\x2\x1BA\x2\x2\x1E\x5\x2==GG\xC0"+ - "\xC0\a\x2::==}}\x9F\x9F\xAA\xAA\x4\x2\xAC\xAD\xCF\xCF\x4\x2\x87\x89\xB7"+ - "\xB7\x4\x2++--\x4\x2tt\xBE\xBE\x3\x2?@\x3\x2JV\x4\x2\xC7\xC7\xCB\xCB\x3"+ - "\x2lp\x3\x2\x96\x97\x4\x2#%\x8C\x8C\x4\x2vv\xA8\xA8\x3\x2\x6\a\x3\x2\xE0"+ - "\xE1\xE\x2\x4\x4\x15\x15!\">>\x41\x41HHYY\x7F\x7F\x81\x81\xB8\xB8\xBD"+ - "\xBD\xC8\xC8\a\x2~~\x85\x85\xD4\xD7\xD9\xD9\xDC\xDC\x3\x2\xE3\xE6\x5\x2"+ - "..\x30\x34\xDE\xDE\x6\x2rrvv\xA3\xA3\xA8\xA8\x4\x2\xD2\xD2\xDB\xDB\x4"+ - "\x2\xDA\xDA\xDD\xDD\x4\x2qq\xC3\xC3\x4\x2]]\x93\x93\'\x2\x3\x6\b\xE\x10"+ - "\x19\x1B%\'\')*\x35:<\x41\x44\x45GHYY\x66\x66hhjjqquuzz|\x81\x84\x89\x8B"+ - "\x8E\x90\x94\x96\x96\x98\x99\x9E\xA2\xA7\xA7\xA9\xAA\xAC\xAD\xAF\xB0\xB4"+ - "\xB4\xB7\xB9\xBB\xBB\xBD\xBD\xBF\xC3\xC5\xC9\xCC\xCC\xCE\xD0\xF0\xF1 "+ - "\x2\x1A\x1A&&\x42\x43\x46\x46IX[\\\x62\x62\x65\x65ggiikprtvy{{\x82\x83"+ - "\x8A\x8A\x8F\x8F\x95\x95\xA3\xA3\xA8\xA8\xAB\xAB\xAE\xAE\xB1\xB3\xB5\xB6"+ - "\xBA\xBA\xBC\xBC\xBE\xBE\xC4\xC4\xCA\xCB\xCD\xCD\x3\x2\xE8\xE8\x4\x2\xEB"+ - "\xEB\xEE\xEE\xC40\x2\x1BC\x3\x2\x2\x2\x4\x1BF\x3\x2\x2\x2\x6\x1D0\x3\x2"+ - "\x2\x2\b\x1DB\x3\x2\x2\x2\n\x1EE\x3\x2\x2\x2\f\x208\x3\x2\x2\x2\xE\x20B"+ - "\x3\x2\x2\x2\x10\x223\x3\x2\x2\x2\x12\x225\x3\x2\x2\x2\x14\x22C\x3\x2"+ - "\x2\x2\x16\x239\x3\x2\x2\x2\x18\x23C\x3\x2\x2\x2\x1A\x24C\x3\x2\x2\x2"+ - "\x1C\x25B\x3\x2\x2\x2\x1E\x262\x3\x2\x2\x2 \x28A\x3\x2\x2\x2\"\x29A\x3"+ - "\x2\x2\x2$\x29C\x3\x2\x2\x2&\x2B7\x3\x2\x2\x2(\x2B9\x3\x2\x2\x2*\x2BD"+ - "\x3\x2\x2\x2,\x2BF\x3\x2\x2\x2.\x2C3\x3\x2\x2\x2\x30\x2C5\x3\x2\x2\x2"+ - "\x32\x2C7\x3\x2\x2\x2\x34\x2D1\x3\x2\x2\x2\x36\x2D5\x3\x2\x2\x2\x38\x2D7"+ - "\x3\x2\x2\x2:\x2DA\x3\x2\x2\x2<\x2DC\x3\x2\x2\x2>\x2E2\x3\x2\x2\x2@\x2E4"+ - "\x3\x2\x2\x2\x42\x2F2\x3\x2\x2\x2\x44\x2FE\x3\x2\x2\x2\x46\x300\x3\x2"+ - "\x2\x2H\x317\x3\x2\x2\x2J\x319\x3\x2\x2\x2L\x31B\x3\x2\x2\x2N\x31D\x3"+ - "\x2\x2\x2P\x32A\x3\x2\x2\x2R\x336\x3\x2\x2\x2T\x338\x3\x2\x2\x2V\x344"+ - "\x3\x2\x2\x2X\x346\x3\x2\x2\x2Z\x34C\x3\x2\x2\x2\\\x356\x3\x2\x2\x2^\x358"+ - "\x3\x2\x2\x2`\x35A\x3\x2\x2\x2\x62\x367\x3\x2\x2\x2\x64\x379\x3\x2\x2"+ - "\x2\x66\x37E\x3\x2\x2\x2h\x380\x3\x2\x2\x2j\x382\x3\x2\x2\x2l\x384\x3"+ - "\x2\x2\x2n\x392\x3\x2\x2\x2p\x394\x3\x2\x2\x2r\x39B\x3\x2\x2\x2t\x3A5"+ - "\x3\x2\x2\x2v\x3A7\x3\x2\x2\x2x\x3B4\x3\x2\x2\x2z\x3C0\x3\x2\x2\x2|\x3CE"+ - "\x3\x2\x2\x2~\x3D0\x3\x2\x2\x2\x80\x3E6\x3\x2\x2\x2\x82\x3E8\x3\x2\x2"+ - "\x2\x84\x3EA\x3\x2\x2\x2\x86\x400\x3\x2\x2\x2\x88\x405\x3\x2\x2\x2\x8A"+ - "\x417\x3\x2\x2\x2\x8C\x429\x3\x2\x2\x2\x8E\x44A\x3\x2\x2\x2\x90\x465\x3"+ - "\x2\x2\x2\x92\x486\x3\x2\x2\x2\x94\x48C\x3\x2\x2\x2\x96\x49C\x3\x2\x2"+ - "\x2\x98\x4A1\x3\x2\x2\x2\x9A\x4A3\x3\x2\x2\x2\x9C\x4A5\x3\x2\x2\x2\x9E"+ - "\x4AF\x3\x2\x2\x2\xA0\x4B2\x3\x2\x2\x2\xA2\x4B5\x3\x2\x2\x2\xA4\x4BF\x3"+ - "\x2\x2\x2\xA6\x4C1\x3\x2\x2\x2\xA8\x4DA\x3\x2\x2\x2\xAA\x4DF\x3\x2\x2"+ - "\x2\xAC\x4ED\x3\x2\x2\x2\xAE\x4FA\x3\x2\x2\x2\xB0\x4FC\x3\x2\x2\x2\xB2"+ - "\x50C\x3\x2\x2\x2\xB4\x513\x3\x2\x2\x2\xB6\x51D\x3\x2\x2\x2\xB8\x51F\x3"+ - "\x2\x2\x2\xBA\x530\x3\x2\x2\x2\xBC\x549\x3\x2\x2\x2\xBE\x564\x3\x2\x2"+ - "\x2\xC0\x566\x3\x2\x2\x2\xC2\x56A\x3\x2\x2\x2\xC4\x56E\x3\x2\x2\x2\xC6"+ - "\x592\x3\x2\x2\x2\xC8\x594\x3\x2\x2\x2\xCA\x59A\x3\x2\x2\x2\xCC\x59C\x3"+ - "\x2\x2\x2\xCE\x5AE\x3\x2\x2\x2\xD0\x5BD\x3\x2\x2\x2\xD2\x5EA\x3\x2\x2"+ - "\x2\xD4\x5EC\x3\x2\x2\x2\xD6\x5EE\x3\x2\x2\x2\xD8\x5F0\x3\x2\x2\x2\xDA"+ - "\x5F6\x3\x2\x2\x2\xDC\x602\x3\x2\x2\x2\xDE\x60E\x3\x2\x2\x2\xE0\x61A\x3"+ - "\x2\x2\x2\xE2\x62E\x3\x2\x2\x2\xE4\x645\x3\x2\x2\x2\xE6\x660\x3\x2\x2"+ - "\x2\xE8\x676\x3\x2\x2\x2\xEA\x689\x3\x2\x2\x2\xEC\x69C\x3\x2\x2\x2\xEE"+ - "\x6AA\x3\x2\x2\x2\xF0\x6AC\x3\x2\x2\x2\xF2\x6B4\x3\x2\x2\x2\xF4\x6C2\x3"+ - "\x2\x2\x2\xF6\x6C8\x3\x2\x2\x2\xF8\x6ED\x3\x2\x2\x2\xFA\x6EF\x3\x2\x2"+ - "\x2\xFC\x6FB\x3\x2\x2\x2\xFE\x6FD\x3\x2\x2\x2\x100\x705\x3\x2\x2\x2\x102"+ - "\x707\x3\x2\x2\x2\x104\x713\x3\x2\x2\x2\x106\x715\x3\x2\x2\x2\x108\x71D"+ - "\x3\x2\x2\x2\x10A\x732\x3\x2\x2\x2\x10C\x734\x3\x2\x2\x2\x10E\x747\x3"+ - "\x2\x2\x2\x110\x762\x3\x2\x2\x2\x112\x764\x3\x2\x2\x2\x114\x766\x3\x2"+ - "\x2\x2\x116\x768\x3\x2\x2\x2\x118\x777\x3\x2\x2\x2\x11A\x78C\x3\x2\x2"+ - "\x2\x11C\x790\x3\x2\x2\x2\x11E\x794\x3\x2\x2\x2\x120\x798\x3\x2\x2\x2"+ - "\x122\x7A0\x3\x2\x2\x2\x124\x7AB\x3\x2\x2\x2\x126\x7AD\x3\x2\x2\x2\x128"+ - "\x7B3\x3\x2\x2\x2\x12A\x7BA\x3\x2\x2\x2\x12C\x7BE\x3\x2\x2\x2\x12E\x7CA"+ - "\x3\x2\x2\x2\x130\x7DC\x3\x2\x2\x2\x132\x7E0\x3\x2\x2\x2\x134\x7E6\x3"+ - "\x2\x2\x2\x136\x7E8\x3\x2\x2\x2\x138\x7ED\x3\x2\x2\x2\x13A\x7F6\x3\x2"+ - "\x2\x2\x13C\x804\x3\x2\x2\x2\x13E\x81D\x3\x2\x2\x2\x140\x824\x3\x2\x2"+ - "\x2\x142\x82B\x3\x2\x2\x2\x144\x858\x3\x2\x2\x2\x146\x877\x3\x2\x2\x2"+ - "\x148\x885\x3\x2\x2\x2\x14A\x897\x3\x2\x2\x2\x14C\x899\x3\x2\x2\x2\x14E"+ - "\x8AC\x3\x2\x2\x2\x150\x8B3\x3\x2\x2\x2\x152\x8B7\x3\x2\x2\x2\x154\x8B9"+ - "\x3\x2\x2\x2\x156\x8BB\x3\x2\x2\x2\x158\x8C2\x3\x2\x2\x2\x15A\x8C4\x3"+ - "\x2\x2\x2\x15C\x8CF\x3\x2\x2\x2\x15E\x8D1\x3\x2\x2\x2\x160\x8E0\x3\x2"+ - "\x2\x2\x162\x8E2\x3\x2\x2\x2\x164\x8FB\x3\x2\x2\x2\x166\x8FD\x3\x2\x2"+ - "\x2\x168\x907\x3\x2\x2\x2\x16A\x909\x3\x2\x2\x2\x16C\x90F\x3\x2\x2\x2"+ - "\x16E\x916\x3\x2\x2\x2\x170\x91A\x3\x2\x2\x2\x172\x926\x3\x2\x2\x2\x174"+ - "\x928\x3\x2\x2\x2\x176\x94F\x3\x2\x2\x2\x178\x9C9\x3\x2\x2\x2\x17A\x9CE"+ - "\x3\x2\x2\x2\x17C\x9D0\x3\x2\x2\x2\x17E\x9D2\x3\x2\x2\x2\x180\x9D4\x3"+ - "\x2\x2\x2\x182\x9E3\x3\x2\x2\x2\x184\xA1D\x3\x2\x2\x2\x186\xA1F\x3\x2"+ - "\x2\x2\x188\xA35\x3\x2\x2\x2\x18A\xA41\x3\x2\x2\x2\x18C\xA43\x3\x2\x2"+ - "\x2\x18E\xA45\x3\x2\x2\x2\x190\xA47\x3\x2\x2\x2\x192\xA55\x3\x2\x2\x2"+ - "\x194\xA6B\x3\x2\x2\x2\x196\xA6D\x3\x2\x2\x2\x198\xA6F\x3\x2\x2\x2\x19A"+ - "\xA71\x3\x2\x2\x2\x19C\xA75\x3\x2\x2\x2\x19E\xA77\x3\x2\x2\x2\x1A0\xA79"+ - "\x3\x2\x2\x2\x1A2\xA86\x3\x2\x2\x2\x1A4\xA92\x3\x2\x2\x2\x1A6\xA98\x3"+ - "\x2\x2\x2\x1A8\xA9A\x3\x2\x2\x2\x1AA\xAA0\x3\x2\x2\x2\x1AC\xAA7\x3\x2"+ - "\x2\x2\x1AE\xAAA\x3\x2\x2\x2\x1B0\xABB\x3\x2\x2\x2\x1B2\xABF\x3\x2\x2"+ - "\x2\x1B4\xAFD\x3\x2\x2\x2\x1B6\xAFF\x3\x2\x2\x2\x1B8\xB01\x3\x2\x2\x2"+ - "\x1BA\xB09\x3\x2\x2\x2\x1BC\x1BD\x5\x4\x3\x2\x1BD\x1BE\a\x2\x2\x3\x1BE"+ - "\x3\x3\x2\x2\x2\x1BF\x1C0\x5\x1A4\xD3\x2\x1C0\x1C2\x5\f\a\x2\x1C1\x1C3"+ - "\x5\x6\x4\x2\x1C2\x1C1\x3\x2\x2\x2\x1C2\x1C3\x3\x2\x2\x2\x1C3\x1C4\x3"+ - "\x2\x2\x2\x1C4\x1C6\x5\f\a\x2\x1C5\x1C7\x5\b\x5\x2\x1C6\x1C5\x3\x2\x2"+ - "\x2\x1C6\x1C7\x3\x2\x2\x2\x1C7\x1C8\x3\x2\x2\x2\x1C8\x1C9\x5\f\a\x2\x1C9"+ - "\x1CA\x5\x14\v\x2\x1CA\x1CB\x5\f\a\x2\x1CB\x1CC\x5\x1A\xE\x2\x1CC\x1CE"+ - "\x5\f\a\x2\x1CD\x1CF\x5\x1BA\xDE\x2\x1CE\x1CD\x3\x2\x2\x2\x1CE\x1CF\x3"+ - "\x2\x2\x2\x1CF\x5\x3\x2\x2\x2\x1D0\x1D1\a\xC9\x2\x2\x1D1\x1D2\x5\x1BA"+ - "\xDE\x2\x1D2\x1D4\x5\x16E\xB8\x2\x1D3\x1D5\x5\x1BA\xDE\x2\x1D4\x1D3\x3"+ - "\x2\x2\x2\x1D4\x1D5\x3\x2\x2\x2\x1D5\x1D7\x3\x2\x2\x2\x1D6\x1D8\a\x44"+ - "\x2\x2\x1D7\x1D6\x3\x2\x2\x2\x1D7\x1D8\x3\x2\x2\x2\x1D8\x1D9\x3\x2\x2"+ - "\x2\x1D9\x1DA\x5\x1A4\xD3\x2\x1DA\a\x3\x2\x2\x2\x1DB\x1E3\a<\x2\x2\x1DC"+ - "\x1DD\x5\x1BA\xDE\x2\x1DD\x1DE\a\xEC\x2\x2\x1DE\x1DF\x5\x1BA\xDE\x2\x1DF"+ - "\x1E1\x5\x150\xA9\x2\x1E0\x1E2\x5\x1BA\xDE\x2\x1E1\x1E0\x3\x2\x2\x2\x1E1"+ - "\x1E2\x3\x2\x2\x2\x1E2\x1E4\x3\x2\x2\x2\x1E3\x1DC\x3\x2\x2\x2\x1E3\x1E4"+ - "\x3\x2\x2\x2\x1E4\x1E5\x3\x2\x2\x2\x1E5\x1E7\x5\x1A4\xD3\x2\x1E6\x1E8"+ - "\x5\n\x6\x2\x1E7\x1E6\x3\x2\x2\x2\x1E8\x1E9\x3\x2\x2\x2\x1E9\x1E7\x3\x2"+ - "\x2\x2\x1E9\x1EA\x3\x2\x2\x2\x1EA\x1EB\x3\x2\x2\x2\x1EB\x1EC\a\x66\x2"+ - "\x2\x1EC\x1ED\x5\x1A4\xD3\x2\x1ED\t\x3\x2\x2\x2\x1EE\x1F2\x5\x150\xA9"+ - "\x2\x1EF\x1F1\x5\x1BA\xDE\x2\x1F0\x1EF\x3\x2\x2\x2\x1F1\x1F4\x3\x2\x2"+ - "\x2\x1F2\x1F0\x3\x2\x2\x2\x1F2\x1F3\x3\x2\x2\x2\x1F3\x1F5\x3\x2\x2\x2"+ - "\x1F4\x1F2\x3\x2\x2\x2\x1F5\x1F9\a\xD4\x2\x2\x1F6\x1F8\x5\x1BA\xDE\x2"+ - "\x1F7\x1F6\x3\x2\x2\x2\x1F8\x1FB\x3\x2\x2\x2\x1F9\x1F7\x3\x2\x2\x2\x1F9"+ - "\x1FA\x3\x2\x2\x2\x1FA\x1FC\x3\x2\x2\x2\x1FB\x1F9\x3\x2\x2\x2\x1FC\x1FF"+ - "\x5\x176\xBC\x2\x1FD\x1FE\a,\x2\x2\x1FE\x200\x5\x16E\xB8\x2\x1FF\x1FD"+ - "\x3\x2\x2\x2\x1FF\x200\x3\x2\x2\x2\x200\x201\x3\x2\x2\x2\x201\x202\x5"+ - "\x1A4\xD3\x2\x202\v\x3\x2\x2\x2\x203\x204\x5\xE\b\x2\x204\x205\x5\x1A4"+ - "\xD3\x2\x205\x207\x3\x2\x2\x2\x206\x203\x3\x2\x2\x2\x207\x20A\x3\x2\x2"+ - "\x2\x208\x206\x3\x2\x2\x2\x208\x209\x3\x2\x2\x2\x209\r\x3\x2\x2\x2\x20A"+ - "\x208\x3\x2\x2\x2\x20B\x20C\a\x39\x2\x2\x20C\x20D\x5\x1BA\xDE\x2\x20D"+ - "\x20F\x5\x10\t\x2\x20E\x210\x5\x1BA\xDE\x2\x20F\x20E\x3\x2\x2\x2\x20F"+ - "\x210\x3\x2\x2\x2\x210\x211\x3\x2\x2\x2\x211\x213\a\xD4\x2\x2\x212\x214"+ - "\x5\x1BA\xDE\x2\x213\x212\x3\x2\x2\x2\x213\x214\x3\x2\x2\x2\x214\x215"+ - "\x3\x2\x2\x2\x215\x220\x5\x12\n\x2\x216\x218\x5\x1BA\xDE\x2\x217\x216"+ - "\x3\x2\x2\x2\x217\x218\x3\x2\x2\x2\x218\x219\x3\x2\x2\x2\x219\x21B\a+"+ - "\x2\x2\x21A\x21C\x5\x1BA\xDE\x2\x21B\x21A\x3\x2\x2\x2\x21B\x21C\x3\x2"+ - "\x2\x2\x21C\x21D\x3\x2\x2\x2\x21D\x21F\x5\x12\n\x2\x21E\x217\x3\x2\x2"+ - "\x2\x21F\x222\x3\x2\x2\x2\x220\x21E\x3\x2\x2\x2\x220\x221\x3\x2\x2\x2"+ - "\x221\xF\x3\x2\x2\x2\x222\x220\x3\x2\x2\x2\x223\x224\x5\x182\xC2\x2\x224"+ - "\x11\x3\x2\x2\x2\x225\x226\x5\x176\xBC\x2\x226\x13\x3\x2\x2\x2\x227\x228"+ - "\x5\x18\r\x2\x228\x229\x5\x1A4\xD3\x2\x229\x22B\x3\x2\x2\x2\x22A\x227"+ - "\x3\x2\x2\x2\x22B\x22E\x3\x2\x2\x2\x22C\x22A\x3\x2\x2\x2\x22C\x22D\x3"+ - "\x2\x2\x2\x22D\x15\x3\x2\x2\x2\x22E\x22C\x3\x2\x2\x2\x22F\x230\a\x9A\x2"+ - "\x2\x230\x231\x5\x1BA\xDE\x2\x231\x232\x5\x16E\xB8\x2\x232\x23A\x3\x2"+ - "\x2\x2\x233\x234\a\x9C\x2\x2\x234\x235\x5\x1BA\xDE\x2\x235\x236\t\x2\x2"+ - "\x2\x236\x23A\x3\x2\x2\x2\x237\x23A\a\x9B\x2\x2\x238\x23A\a\x9D\x2\x2"+ - "\x239\x22F\x3\x2\x2\x2\x239\x233\x3\x2\x2\x2\x239\x237\x3\x2\x2\x2\x239"+ - "\x238\x3\x2\x2\x2\x23A\x17\x3\x2\x2\x2\x23B\x23D\x5\x1BA\xDE\x2\x23C\x23B"+ - "\x3\x2\x2\x2\x23C\x23D\x3\x2\x2\x2\x23D\x249\x3\x2\x2\x2\x23E\x24A\x5"+ - "\xE\b\x2\x23F\x24A\x5\x8CG\x2\x240\x24A\x5\x94K\x2\x241\x24A\x5\xAAV\x2"+ - "\x242\x24A\x5\xB4[\x2\x243\x24A\x5\x88\x45\x2\x244\x24A\x5\xD8m\x2\x245"+ - "\x24A\x5\x138\x9D\x2\x246\x24A\x5\x16\f\x2\x247\x24A\x5\x11C\x8F\x2\x248"+ - "\x24A\x5\x11E\x90\x2\x249\x23E\x3\x2\x2\x2\x249\x23F\x3\x2\x2\x2\x249"+ - "\x240\x3\x2\x2\x2\x249\x241\x3\x2\x2\x2\x249\x242\x3\x2\x2\x2\x249\x243"+ - "\x3\x2\x2\x2\x249\x244\x3\x2\x2\x2\x249\x245\x3\x2\x2\x2\x249\x246\x3"+ - "\x2\x2\x2\x249\x247\x3\x2\x2\x2\x249\x248\x3\x2\x2\x2\x24A\x19\x3\x2\x2"+ - "\x2\x24B\x24D\x5\x1BA\xDE\x2\x24C\x24B\x3\x2\x2\x2\x24C\x24D\x3\x2\x2"+ - "\x2\x24D\x253\x3\x2\x2\x2\x24E\x24F\x5\x1C\xF\x2\x24F\x250\x5\x1A4\xD3"+ - "\x2\x250\x252\x3\x2\x2\x2\x251\x24E\x3\x2\x2\x2\x252\x255\x3\x2\x2\x2"+ - "\x253\x251\x3\x2\x2\x2\x253\x254\x3\x2\x2\x2\x254\x1B\x3\x2\x2\x2\x255"+ - "\x253\x3\x2\x2\x2\x256\x25C\x5\xBC_\x2\x257\x25C\x5\xE4s\x2\x258\x25C"+ - "\x5\xE6t\x2\x259\x25C\x5\xE8u\x2\x25A\x25C\x5\x118\x8D\x2\x25B\x256\x3"+ - "\x2\x2\x2\x25B\x257\x3\x2\x2\x2\x25B\x258\x3\x2\x2\x2\x25B\x259\x3\x2"+ - "\x2\x2\x25B\x25A\x3\x2\x2\x2\x25C\x1D\x3\x2\x2\x2\x25D\x25E\x5 \x11\x2"+ - "\x25E\x25F\x5\x1A4\xD3\x2\x25F\x261\x3\x2\x2\x2\x260\x25D\x3\x2\x2\x2"+ - "\x261\x264\x3\x2\x2\x2\x262\x260\x3\x2\x2\x2\x262\x263\x3\x2\x2\x2\x263"+ - "\x1F\x3\x2\x2\x2\x264\x262\x3\x2\x2\x2\x265\x28B\x5\x168\xB5\x2\x266\x28B"+ - "\x5\"\x12\x2\x267\x28B\x5\xE\b\x2\x268\x28B\x5\x88\x45\x2\x269\x28B\x5"+ - "\xA8U\x2\x26A\x28B\x5\xAEX\x2\x26B\x28B\x5\xB0Y\x2\x26C\x28B\x5\xB2Z\x2"+ - "\x26D\x28B\x5\xB6\\\x2\x26E\x28B\x5\xB8]\x2\x26F\x28B\x5\xBA^\x2\x270"+ - "\x28B\x5\xC0\x61\x2\x271\x28B\x5\xC2\x62\x2\x272\x28B\x5\xC4\x63\x2\x273"+ - "\x28B\x5\xCA\x66\x2\x274\x28B\x5\xD8m\x2\x275\x28B\x5\xDAn\x2\x276\x28B"+ - "\x5\xDCo\x2\x277\x28B\x5\xDEp\x2\x278\x28B\x5\xE0q\x2\x279\x28B\x5\xE2"+ - "r\x2\x27A\x28B\x5\xEAv\x2\x27B\x28B\x5\xF0y\x2\x27C\x28B\x5\xFE\x80\x2"+ - "\x27D\x28B\x5\x100\x81\x2\x27E\x28B\x5\x102\x82\x2\x27F\x28B\x5\x108\x85"+ - "\x2\x280\x28B\x5\x116\x8C\x2\x281\x28B\x5\x104\x83\x2\x282\x28B\x5\x138"+ - "\x9D\x2\x283\x28B\x5\x13E\xA0\x2\x284\x28B\x5\x140\xA1\x2\x285\x28B\x5"+ - "\x142\xA2\x2\x286\x28B\x5\x144\xA3\x2\x287\x28B\x5\x146\xA4\x2\x288\x28B"+ - "\x5\xFC\x7F\x2\x289\x28B\x5\x106\x84\x2\x28A\x265\x3\x2\x2\x2\x28A\x266"+ - "\x3\x2\x2\x2\x28A\x267\x3\x2\x2\x2\x28A\x268\x3\x2\x2\x2\x28A\x269\x3"+ - "\x2\x2\x2\x28A\x26A\x3\x2\x2\x2\x28A\x26B\x3\x2\x2\x2\x28A\x26C\x3\x2"+ - "\x2\x2\x28A\x26D\x3\x2\x2\x2\x28A\x26E\x3\x2\x2\x2\x28A\x26F\x3\x2\x2"+ - "\x2\x28A\x270\x3\x2\x2\x2\x28A\x271\x3\x2\x2\x2\x28A\x272\x3\x2\x2\x2"+ - "\x28A\x273\x3\x2\x2\x2\x28A\x274\x3\x2\x2\x2\x28A\x275\x3\x2\x2\x2\x28A"+ - "\x276\x3\x2\x2\x2\x28A\x277\x3\x2\x2\x2\x28A\x278\x3\x2\x2\x2\x28A\x279"+ - "\x3\x2\x2\x2\x28A\x27A\x3\x2\x2\x2\x28A\x27B\x3\x2\x2\x2\x28A\x27C\x3"+ - "\x2\x2\x2\x28A\x27D\x3\x2\x2\x2\x28A\x27E\x3\x2\x2\x2\x28A\x27F\x3\x2"+ - "\x2\x2\x28A\x280\x3\x2\x2\x2\x28A\x281\x3\x2\x2\x2\x28A\x282\x3\x2\x2"+ - "\x2\x28A\x283\x3\x2\x2\x2\x28A\x284\x3\x2\x2\x2\x28A\x285\x3\x2\x2\x2"+ - "\x28A\x286\x3\x2\x2\x2\x28A\x287\x3\x2\x2\x2\x28A\x288\x3\x2\x2\x2\x28A"+ - "\x289\x3\x2\x2\x2\x28B!\x3\x2\x2\x2\x28C\x29B\x5$\x13\x2\x28D\x29B\x5"+ - "> \x2\x28E\x29B\x5<\x1F\x2\x28F\x29B\x5\x42\"\x2\x290\x29B\x5\x46$\x2"+ - "\x291\x29B\x5N(\x2\x292\x29B\x5P)\x2\x293\x29B\x5T+\x2\x294\x29B\x5X-"+ - "\x2\x295\x29B\x5`\x31\x2\x296\x29B\x5v<\x2\x297\x29B\x5x=\x2\x298\x29B"+ - "\x5~@\x2\x299\x29B\x5\x84\x43\x2\x29A\x28C\x3\x2\x2\x2\x29A\x28D\x3\x2"+ - "\x2\x2\x29A\x28E\x3\x2\x2\x2\x29A\x28F\x3\x2\x2\x2\x29A\x290\x3\x2\x2"+ - "\x2\x29A\x291\x3\x2\x2\x2\x29A\x292\x3\x2\x2\x2\x29A\x293\x3\x2\x2\x2"+ - "\x29A\x294\x3\x2\x2\x2\x29A\x295\x3\x2\x2\x2\x29A\x296\x3\x2\x2\x2\x29A"+ - "\x297\x3\x2\x2\x2\x29A\x298\x3\x2\x2\x2\x29A\x299\x3\x2\x2\x2\x29B#\x3"+ - "\x2\x2\x2\x29C\x29D\a\x98\x2\x2\x29D\x29E\x5\x1BA\xDE\x2\x29E\x2A2\x5"+ - "&\x14\x2\x29F\x2A0\x5\x1BA\xDE\x2\x2A0\x2A1\x5(\x15\x2\x2A1\x2A3\x3\x2"+ - "\x2\x2\x2A2\x29F\x3\x2\x2\x2\x2A2\x2A3\x3\x2\x2\x2\x2A3\x2A7\x3\x2\x2"+ - "\x2\x2A4\x2A5\x5\x1BA\xDE\x2\x2A5\x2A6\x5,\x17\x2\x2A6\x2A8\x3\x2\x2\x2"+ - "\x2A7\x2A4\x3\x2\x2\x2\x2A7\x2A8\x3\x2\x2\x2\x2A8\x2AC\x3\x2\x2\x2\x2A9"+ - "\x2AA\x5\x1BA\xDE\x2\x2AA\x2AB\x5\x30\x19\x2\x2AB\x2AD\x3\x2\x2\x2\x2AC"+ - "\x2A9\x3\x2\x2\x2\x2AC\x2AD\x3\x2\x2\x2\x2AD\x2AE\x3\x2\x2\x2\x2AE\x2AF"+ - "\x5\x1BA\xDE\x2\x2AF\x2B0\a;\x2\x2\x2B0\x2B1\x5\x1BA\xDE\x2\x2B1\x2B5"+ - "\x5\x36\x1C\x2\x2B2\x2B3\x5\x1BA\xDE\x2\x2B3\x2B4\x5\x32\x1A\x2\x2B4\x2B6"+ - "\x3\x2\x2\x2\x2B5\x2B2\x3\x2\x2\x2\x2B5\x2B6\x3\x2\x2\x2\x2B6%\x3\x2\x2"+ - "\x2\x2B7\x2B8\x5\x176\xBC\x2\x2B8\'\x3\x2\x2\x2\x2B9\x2BA\as\x2\x2\x2BA"+ - "\x2BB\x5\x1BA\xDE\x2\x2BB\x2BC\x5*\x16\x2\x2BC)\x3\x2\x2\x2\x2BD\x2BE"+ - "\t\x3\x2\x2\x2BE+\x3\x2\x2\x2\x2BF\x2C0\a\x35\x2\x2\x2C0\x2C1\x5\x1BA"+ - "\xDE\x2\x2C1\x2C2\x5.\x18\x2\x2C2-\x3\x2\x2\x2\x2C3\x2C4\t\x4\x2\x2\x2C4"+ - "/\x3\x2\x2\x2\x2C5\x2C6\t\x5\x2\x2\x2C6\x31\x3\x2\x2\x2\x2C7\x2C9\a\x1F"+ - "\x2\x2\x2C8\x2CA\x5\x1BA\xDE\x2\x2C9\x2C8\x3\x2\x2\x2\x2C9\x2CA\x3\x2"+ - "\x2\x2\x2CA\x2CB\x3\x2\x2\x2\x2CB\x2CD\a\xD4\x2\x2\x2CC\x2CE\x5\x1BA\xDE"+ - "\x2\x2CD\x2CC\x3\x2\x2\x2\x2CD\x2CE\x3\x2\x2\x2\x2CE\x2CF\x3\x2\x2\x2"+ - "\x2CF\x2D0\x5\x34\x1B\x2\x2D0\x33\x3\x2\x2\x2\x2D1\x2D2\x5\x176\xBC\x2"+ - "\x2D2\x35\x3\x2\x2\x2\x2D3\x2D6\x5\x38\x1D\x2\x2D4\x2D6\x5:\x1E\x2\x2D5"+ - "\x2D3\x3\x2\x2\x2\x2D5\x2D4\x3\x2\x2\x2\x2D6\x37\x3\x2\x2\x2\x2D7\x2D8"+ - "\a\x30\x2\x2\x2D8\x2D9\x5\x176\xBC\x2\x2D9\x39\x3\x2\x2\x2\x2DA\x2DB\x5"+ - "\x176\xBC\x2\x2DB;\x3\x2\x2\x2\x2DC\x2E0\a\x45\x2\x2\x2DD\x2DE\x5\x1BA"+ - "\xDE\x2\x2DE\x2DF\x5@!\x2\x2DF\x2E1\x3\x2\x2\x2\x2E0\x2DD\x3\x2\x2\x2"+ - "\x2E0\x2E1\x3\x2\x2\x2\x2E1=\x3\x2\x2\x2\x2E2\x2E3\a\xB0\x2\x2\x2E3?\x3"+ - "\x2\x2\x2\x2E4\x2EF\x5\x36\x1C\x2\x2E5\x2E7\x5\x1BA\xDE\x2\x2E6\x2E5\x3"+ - "\x2\x2\x2\x2E6\x2E7\x3\x2\x2\x2\x2E7\x2E8\x3\x2\x2\x2\x2E8\x2EA\a+\x2"+ - "\x2\x2E9\x2EB\x5\x1BA\xDE\x2\x2EA\x2E9\x3\x2\x2\x2\x2EA\x2EB\x3\x2\x2"+ - "\x2\x2EB\x2EC\x3\x2\x2\x2\x2EC\x2EE\x5\x36\x1C\x2\x2ED\x2E6\x3\x2\x2\x2"+ - "\x2EE\x2F1\x3\x2\x2\x2\x2EF\x2ED\x3\x2\x2\x2\x2EF\x2F0\x3\x2\x2\x2\x2F0"+ - "\x41\x3\x2\x2\x2\x2F1\x2EF\x3\x2\x2\x2\x2F2\x2F3\a\xB4\x2\x2\x2F3\x2F4"+ - "\x5\x1BA\xDE\x2\x2F4\x2F6\x5\x36\x1C\x2\x2F5\x2F7\x5\x1BA\xDE\x2\x2F6"+ - "\x2F5\x3\x2\x2\x2\x2F6\x2F7\x3\x2\x2\x2\x2F7\x2F8\x3\x2\x2\x2\x2F8\x2FA"+ - "\a+\x2\x2\x2F9\x2FB\x5\x1BA\xDE\x2\x2FA\x2F9\x3\x2\x2\x2\x2FA\x2FB\x3"+ - "\x2\x2\x2\x2FB\x2FC\x3\x2\x2\x2\x2FC\x2FD\x5\x44#\x2\x2FD\x43\x3\x2\x2"+ - "\x2\x2FE\x2FF\x5\x176\xBC\x2\x2FF\x45\x3\x2\x2\x2\x300\x301\a\x80\x2\x2"+ - "\x301\x302\x5\x1BA\xDE\x2\x302\x30B\x5\x36\x1C\x2\x303\x305\x5\x1BA\xDE"+ - "\x2\x304\x303\x3\x2\x2\x2\x304\x305\x3\x2\x2\x2\x305\x306\x3\x2\x2\x2"+ - "\x306\x308\a+\x2\x2\x307\x309\x5\x1BA\xDE\x2\x308\x307\x3\x2\x2\x2\x308"+ - "\x309\x3\x2\x2\x2\x309\x30A\x3\x2\x2\x2\x30A\x30C\x5H%\x2\x30B\x304\x3"+ - "\x2\x2\x2\x30B\x30C\x3\x2\x2\x2\x30CG\x3\x2\x2\x2\x30D\x318\x5J&\x2\x30E"+ - "\x30F\x5J&\x2\x30F\x310\x5\x1BA\xDE\x2\x310\x312\x3\x2\x2\x2\x311\x30E"+ - "\x3\x2\x2\x2\x311\x312\x3\x2\x2\x2\x312\x313\x3\x2\x2\x2\x313\x314\a\xC2"+ - "\x2\x2\x314\x315\x5\x1BA\xDE\x2\x315\x316\x5L\'\x2\x316\x318\x3\x2\x2"+ - "\x2\x317\x30D\x3\x2\x2\x2\x317\x311\x3\x2\x2\x2\x318I\x3\x2\x2\x2\x319"+ - "\x31A\x5\x176\xBC\x2\x31AK\x3\x2\x2\x2\x31B\x31C\x5\x176\xBC\x2\x31CM"+ - "\x3\x2\x2\x2\x31D\x31E\a\xC6\x2\x2\x31E\x31F\x5\x1BA\xDE\x2\x31F\x328"+ - "\x5\x36\x1C\x2\x320\x322\x5\x1BA\xDE\x2\x321\x320\x3\x2\x2\x2\x321\x322"+ - "\x3\x2\x2\x2\x322\x323\x3\x2\x2\x2\x323\x325\a+\x2\x2\x324\x326\x5\x1BA"+ - "\xDE\x2\x325\x324\x3\x2\x2\x2\x325\x326\x3\x2\x2\x2\x326\x327\x3\x2\x2"+ - "\x2\x327\x329\x5H%\x2\x328\x321\x3\x2\x2\x2\x328\x329\x3\x2\x2\x2\x329"+ - "O\x3\x2\x2\x2\x32A\x32B\a\x86\x2\x2\x32B\x32C\x5\x1BA\xDE\x2\x32C\x32E"+ - "\x5\x38\x1D\x2\x32D\x32F\x5\x1BA\xDE\x2\x32E\x32D\x3\x2\x2\x2\x32E\x32F"+ - "\x3\x2\x2\x2\x32F\x330\x3\x2\x2\x2\x330\x332\a+\x2\x2\x331\x333\x5\x1BA"+ - "\xDE\x2\x332\x331\x3\x2\x2\x2\x332\x333\x3\x2\x2\x2\x333\x334\x3\x2\x2"+ - "\x2\x334\x335\x5R*\x2\x335Q\x3\x2\x2\x2\x336\x337\x5\x176\xBC\x2\x337"+ - "S\x3\x2\x2\x2\x338\x339\a\xCC\x2\x2\x339\x33A\x5\x1BA\xDE\x2\x33A\x33C"+ - "\x5\x38\x1D\x2\x33B\x33D\x5\x1BA\xDE\x2\x33C\x33B\x3\x2\x2\x2\x33C\x33D"+ - "\x3\x2\x2\x2\x33D\x33E\x3\x2\x2\x2\x33E\x340\a+\x2\x2\x33F\x341\x5\x1BA"+ - "\xDE\x2\x340\x33F\x3\x2\x2\x2\x340\x341\x3\x2\x2\x2\x341\x342\x3\x2\x2"+ - "\x2\x342\x343\x5V,\x2\x343U\x3\x2\x2\x2\x344\x345\x5\x176\xBC\x2\x345"+ - "W\x3\x2\x2\x2\x346\x34A\x5Z.\x2\x347\x348\x5\x1BA\xDE\x2\x348\x349\x5"+ - "\x62\x32\x2\x349\x34B\x3\x2\x2\x2\x34A\x347\x3\x2\x2\x2\x34A\x34B\x3\x2"+ - "\x2\x2\x34BY\x3\x2\x2\x2\x34C\x34E\x5\\/\x2\x34D\x34F\x5\x1BA\xDE\x2\x34E"+ - "\x34D\x3\x2\x2\x2\x34E\x34F\x3\x2\x2\x2\x34F\x350\x3\x2\x2\x2\x350\x352"+ - "\a/\x2\x2\x351\x353\x5\x1BA\xDE\x2\x352\x351\x3\x2\x2\x2\x352\x353\x3"+ - "\x2\x2\x2\x353\x354\x3\x2\x2\x2\x354\x355\x5^\x30\x2\x355[\x3\x2\x2\x2"+ - "\x356\x357\a\x18\x2\x2\x357]\x3\x2\x2\x2\x358\x359\a\xA2\x2\x2\x359_\x3"+ - "\x2\x2\x2\x35A\x35B\a\xA2\x2\x2\x35B\x35C\x5\x1BA\xDE\x2\x35C\x35E\x5"+ - "\x38\x1D\x2\x35D\x35F\x5\x1BA\xDE\x2\x35E\x35D\x3\x2\x2\x2\x35E\x35F\x3"+ - "\x2\x2\x2\x35F\x360\x3\x2\x2\x2\x360\x365\a+\x2\x2\x361\x363\x5\x1BA\xDE"+ - "\x2\x362\x361\x3\x2\x2\x2\x362\x363\x3\x2\x2\x2\x363\x364\x3\x2\x2\x2"+ - "\x364\x366\x5\x62\x32\x2\x365\x362\x3\x2\x2\x2\x365\x366\x3\x2\x2\x2\x366"+ - "\x61\x3\x2\x2\x2\x367\x36E\x5\x64\x33\x2\x368\x36A\x5\x1BA\xDE\x2\x369"+ - "\x368\x3\x2\x2\x2\x369\x36A\x3\x2\x2\x2\x36A\x36B\x3\x2\x2\x2\x36B\x36D"+ - "\x5\x64\x33\x2\x36C\x369\x3\x2\x2\x2\x36D\x370\x3\x2\x2\x2\x36E\x36C\x3"+ - "\x2\x2\x2\x36E\x36F\x3\x2\x2\x2\x36F\x63\x3\x2\x2\x2\x370\x36E\x3\x2\x2"+ - "\x2\x371\x37A\x5\x66\x34\x2\x372\x37A\x5h\x35\x2\x373\x375\x5\x66\x34"+ + "\nw\x3w\aw\x6A6\nw\fw\xEw\x6A9\vw\x3x\x3x\x5x\x6AD\nx\x3x\x3x\x3y\x3y"+ + "\x3y\x3y\x5y\x6B5\ny\x3y\x3y\x3z\x3z\x5z\x6BB\nz\x3z\x3z\x5z\x6BF\nz\x3"+ + "z\az\x6C2\nz\fz\xEz\x6C5\vz\x3{\x3{\x3{\x3{\x5{\x6CB\n{\x3|\x3|\x3|\x5"+ + "|\x6D0\n|\x3|\x3|\x5|\x6D4\n|\x3|\x3|\x5|\x6D8\n|\x3|\x3|\x5|\x6DC\n|"+ + "\x3|\x3|\x5|\x6E0\n|\x3|\x3|\x5|\x6E4\n|\x5|\x6E6\n|\x3|\x3|\x5|\x6EA"+ + "\n|\x3|\x3|\x5|\x6EE\n|\x3|\x3|\x3}\x3}\x5}\x6F4\n}\x3~\x3~\x3\x7F\x3"+ + "\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x3\x7F\x5\x7F\x700\n\x7F\x5\x7F"+ + "\x702\n\x7F\x3\x80\x3\x80\x3\x80\x3\x80\x5\x80\x708\n\x80\x5\x80\x70A"+ + "\n\x80\x3\x81\x3\x81\x3\x82\x3\x82\x3\x82\x3\x82\x5\x82\x712\n\x82\x3"+ + "\x82\x3\x82\x5\x82\x716\n\x82\x3\x82\x3\x82\x3\x83\x3\x83\x3\x84\x3\x84"+ + "\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x84\x3\x85\x3\x85\x5\x85\x726\n"+ + "\x85\x3\x85\x3\x85\x5\x85\x72A\n\x85\x3\x85\x3\x85\x3\x85\a\x85\x72F\n"+ + "\x85\f\x85\xE\x85\x732\v\x85\x3\x85\x5\x85\x735\n\x85\x3\x85\x3\x85\x3"+ + "\x86\x3\x86\x3\x87\x3\x87\x3\x87\x3\x87\x5\x87\x73F\n\x87\x3\x87\x3\x87"+ + "\x5\x87\x743\n\x87\x3\x87\a\x87\x746\n\x87\f\x87\xE\x87\x749\v\x87\x3"+ + "\x87\x3\x87\x3\x87\x3\x88\x3\x88\x5\x88\x750\n\x88\x3\x88\x3\x88\x3\x88"+ + "\x3\x88\x3\x89\x3\x89\x5\x89\x758\n\x89\x5\x89\x75A\n\x89\x3\x89\x3\x89"+ + "\x5\x89\x75E\n\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3\x89\x3"+ + "\x89\x3\x89\x5\x89\x769\n\x89\x3\x8A\x3\x8A\x3\x8B\x3\x8B\x3\x8C\x3\x8C"+ + "\x3\x8C\x3\x8C\x5\x8C\x773\n\x8C\x3\x8C\x3\x8C\x5\x8C\x777\n\x8C\x3\x8C"+ + "\x3\x8C\x3\x8D\x3\x8D\x3\x8D\x5\x8D\x77E\n\x8D\x3\x8D\x3\x8D\x5\x8D\x782"+ + "\n\x8D\x3\x8D\x3\x8D\x5\x8D\x786\n\x8D\x3\x8D\x3\x8D\x5\x8D\x78A\n\x8D"+ + "\x3\x8D\x5\x8D\x78D\n\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8D\x3\x8E\x3\x8E\x3"+ + "\x8F\x3\x8F\x5\x8F\x797\n\x8F\x3\x8F\x3\x8F\x3\x90\x3\x90\x3\x90\x3\x90"+ + "\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x91\x3\x92\x3\x92"+ + "\x3\x92\x3\x92\a\x92\x7AB\n\x92\f\x92\xE\x92\x7AE\v\x92\x3\x93\x3\x93"+ + "\x5\x93\x7B2\n\x93\x3\x94\x3\x94\x5\x94\x7B6\n\x94\x3\x94\x3\x94\x3\x95"+ + "\x3\x95\x3\x95\x3\x95\x3\x96\x3\x96\x3\x96\x5\x96\x7C1\n\x96\x3\x96\x3"+ + "\x96\x3\x97\x3\x97\x5\x97\x7C7\n\x97\x3\x97\x5\x97\x7CA\n\x97\x3\x97\x5"+ + "\x97\x7CD\n\x97\x3\x97\x3\x97\x3\x98\x3\x98\x5\x98\x7D3\n\x98\x3\x98\x3"+ + "\x98\x5\x98\x7D7\n\x98\x3\x98\a\x98\x7DA\n\x98\f\x98\xE\x98\x7DD\v\x98"+ + "\x3\x99\x3\x99\x5\x99\x7E1\n\x99\x5\x99\x7E3\n\x99\x3\x99\x3\x99\x3\x9A"+ + "\x3\x9A\x5\x9A\x7E9\n\x9A\x3\x9A\x3\x9A\x3\x9B\x3\x9B\x3\x9C\x3\x9C\x3"+ + "\x9D\x3\x9D\x3\x9D\x5\x9D\x7F4\n\x9D\x3\x9D\x3\x9D\x3\x9D\x5\x9D\x7F9"+ + "\n\x9D\x3\x9D\x3\x9D\x3\x9E\x3\x9E\x5\x9E\x7FF\n\x9E\x3\x9E\x3\x9E\x5"+ + "\x9E\x803\n\x9E\x3\x9E\a\x9E\x806\n\x9E\f\x9E\xE\x9E\x809\v\x9E\x3\x9F"+ + "\x3\x9F\x5\x9F\x80D\n\x9F\x3\x9F\x3\x9F\x5\x9F\x811\n\x9F\x3\x9F\x3\x9F"+ + "\x5\x9F\x815\n\x9F\x5\x9F\x817\n\x9F\x3\x9F\x3\x9F\x5\x9F\x81B\n\x9F\x5"+ + "\x9F\x81D\n\x9F\x3\x9F\x3\x9F\x3\x9F\x5\x9F\x822\n\x9F\x3\xA0\x3\xA0\x3"+ + "\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA0\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3\xA1\x3"+ + "\xA1\x3\xA1\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x5\xA2\x836\n\xA2\x5\xA2\x838"+ + "\n\xA2\x3\xA2\x3\xA2\x3\xA2\x3\xA2\x5\xA2\x83E\n\xA2\x5\xA2\x840\n\xA2"+ + "\x3\xA2\x3\xA2\x5\xA2\x844\n\xA2\x3\xA2\x3\xA2\x5\xA2\x848\n\xA2\x3\xA2"+ + "\x5\xA2\x84B\n\xA2\x3\xA2\x5\xA2\x84E\n\xA2\x3\xA2\x3\xA2\x5\xA2\x852"+ + "\n\xA2\x3\xA2\x5\xA2\x855\n\xA2\x3\xA3\x3\xA3\x5\xA3\x859\n\xA3\x3\xA3"+ + "\x3\xA3\x5\xA3\x85D\n\xA3\x5\xA3\x85F\n\xA3\x3\xA3\x3\xA3\x3\xA3\x3\xA3"+ + "\x5\xA3\x865\n\xA3\x5\xA3\x867\n\xA3\x3\xA3\x3\xA3\x5\xA3\x86B\n\xA3\x3"+ + "\xA3\x3\xA3\x5\xA3\x86F\n\xA3\x3\xA3\x6\xA3\x872\n\xA3\r\xA3\xE\xA3\x873"+ + "\x3\xA4\x3\xA4\x5\xA4\x878\n\xA4\x3\xA4\x3\xA4\x5\xA4\x87C\n\xA4\x5\xA4"+ + "\x87E\n\xA4\x3\xA4\x3\xA4\x3\xA4\x3\xA4\x5\xA4\x884\n\xA4\x3\xA4\x3\xA4"+ + "\x5\xA4\x888\n\xA4\x3\xA4\x3\xA4\x3\xA5\x3\xA5\x5\xA5\x88E\n\xA5\x3\xA5"+ + "\x3\xA5\x5\xA5\x892\n\xA5\x3\xA5\x3\xA5\x5\xA5\x896\n\xA5\x3\xA5\x3\xA5"+ + "\x5\xA5\x89A\n\xA5\x3\xA5\x3\xA5\x3\xA6\x3\xA6\x3\xA7\x3\xA7\x5\xA7\x8A2"+ + "\n\xA7\x3\xA7\x3\xA7\x5\xA7\x8A6\n\xA7\x3\xA7\a\xA7\x8A9\n\xA7\f\xA7\xE"+ + "\xA7\x8AC\v\xA7\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x3\xA8\x5\xA8\x8B3\n\xA8\x3"+ + "\xA8\x3\xA8\x3\xA9\x3\xA9\x3\xA9\x5\xA9\x8BA\n\xA9\x3\xAA\x3\xAA\x5\xAA"+ + "\x8BE\n\xAA\x3\xAB\x3\xAB\x3\xAC\x3\xAC\x3\xAC\x3\xAD\x3\xAD\x3\xAD\x3"+ + "\xAD\x5\xAD\x8C9\n\xAD\x3\xAE\x3\xAE\a\xAE\x8CD\n\xAE\f\xAE\xE\xAE\x8D0"+ + "\v\xAE\x3\xAE\x3\xAE\x3\xAF\x3\xAF\x5\xAF\x8D6\n\xAF\x3\xB0\x3\xB0\x5"+ + "\xB0\x8DA\n\xB0\x3\xB0\x3\xB0\x5\xB0\x8DE\n\xB0\x3\xB0\x3\xB0\x5\xB0\x8E2"+ + "\n\xB0\x3\xB0\x5\xB0\x8E5\n\xB0\x3\xB1\x3\xB1\x3\xB2\x3\xB2\x3\xB3\x3"+ + "\xB3\x3\xB3\x3\xB3\x3\xB3\x5\xB3\x8F0\n\xB3\x3\xB3\x3\xB3\x5\xB3\x8F4"+ + "\n\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3\x3\xB3"+ + "\x3\xB3\x3\xB3\x3\xB3\x5\xB3\x902\n\xB3\x3\xB4\x3\xB4\x5\xB4\x906\n\xB4"+ + "\x3\xB4\x3\xB4\x5\xB4\x90A\n\xB4\x3\xB5\x3\xB5\x5\xB5\x90E\n\xB5\x3\xB6"+ + "\x3\xB6\x5\xB6\x912\n\xB6\x3\xB6\x3\xB6\x3\xB7\x3\xB7\x5\xB7\x918\n\xB7"+ + "\x3\xB7\x5\xB7\x91B\n\xB7\x3\xB8\x3\xB8\x3\xB9\x3\xB9\x5\xB9\x921\n\xB9"+ + "\x3\xB9\x5\xB9\x924\n\xB9\x3\xB9\x3\xB9\x5\xB9\x928\n\xB9\x3\xB9\x5\xB9"+ + "\x92B\n\xB9\x3\xBA\x3\xBA\x3\xBB\x3\xBB\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3"+ + "\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x93C\n\xBC\x3\xBC"+ + "\x3\xBC\x3\xBC\x5\xBC\x941\n\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x947"+ + "\n\xBC\x3\xBC\x3\xBC\x5\xBC\x94B\n\xBC\x3\xBC\x3\xBC\x5\xBC\x94F\n\xBC"+ + "\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x3\xBC\x5\xBC\x956\n\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x95A\n\xBC\x3\xBC\x3\xBC\x5\xBC\x95E\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x963\n\xBC\x3\xBC\x3\xBC\x5\xBC\x967\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x96C\n\xBC\x3\xBC\x3\xBC\x5\xBC\x970\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x975\n\xBC\x3\xBC\x3\xBC\x5\xBC\x979\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x97E\n\xBC\x3\xBC\x3\xBC\x5\xBC\x982\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x987\n\xBC\x3\xBC\x3\xBC\x5\xBC\x98B\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x990\n\xBC\x3\xBC\x3\xBC\x5\xBC\x994\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x999\n\xBC\x3\xBC\x3\xBC\x5\xBC\x99D\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x9A2\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9A6\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x9AB\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9AF\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x9B4\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9B8\n\xBC\x3\xBC\x3\xBC\x3\xBC\x5"+ + "\xBC\x9BD\n\xBC\x3\xBC\x3\xBC\x5\xBC\x9C1\n\xBC\x3\xBC\a\xBC\x9C4\n\xBC"+ + "\f\xBC\xE\xBC\x9C7\v\xBC\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x3\xBD\x5\xBD\x9CE"+ + "\n\xBD\x5\xBD\x9D0\n\xBD\x3\xBE\x3\xBE\x3\xBE\x5\xBE\x9D5\n\xBE\x3\xBF"+ + "\x3\xBF\x3\xC0\x3\xC0\x3\xC1\x3\xC1\x3\xC2\x3\xC2\x3\xC2\x3\xC2\x3\xC2"+ + "\x5\xC2\x9E2\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\x9E7\n\xC2\x3\xC2\x5\xC2"+ + "\x9EA\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\x9EF\n\xC2\x3\xC2\x5\xC2\x9F2"+ + "\n\xC2\x3\xC2\x5\xC2\x9F5\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\x9FA\n\xC2"+ + "\x3\xC2\x3\xC2\x5\xC2\x9FE\n\xC2\x3\xC2\x3\xC2\x3\xC2\x5\xC2\xA03\n\xC2"+ + "\x3\xC2\x3\xC2\x5\xC2\xA07\n\xC2\x3\xC2\a\xC2\xA0A\n\xC2\f\xC2\xE\xC2"+ + "\xA0D\v\xC2\x3\xC3\x3\xC3\x3\xC3\x5\xC3\xA12\n\xC3\x3\xC3\x3\xC3\x5\xC3"+ + "\xA16\n\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x3\xC3\x5\xC3\xA1D\n\xC3\x3\xC3"+ + "\x3\xC3\x5\xC3\xA21\n\xC3\x3\xC3\x5\xC3\xA24\n\xC3\x3\xC4\x3\xC4\x3\xC5"+ + "\x3\xC5\x5\xC5\xA2A\n\xC5\a\xC5\xA2C\n\xC5\f\xC5\xE\xC5\xA2F\v\xC5\x3"+ + "\xC5\x3\xC5\x3\xC5\x5\xC5\xA34\n\xC5\a\xC5\xA36\n\xC5\f\xC5\xE\xC5\xA39"+ + "\v\xC5\x3\xC5\x5\xC5\xA3C\n\xC5\x3\xC6\x3\xC6\x5\xC6\xA40\n\xC6\x3\xC6"+ + "\x3\xC6\x3\xC6\x5\xC6\xA45\n\xC6\x3\xC6\x5\xC6\xA48\n\xC6\x3\xC7\x3\xC7"+ + "\x3\xC8\x3\xC8\x3\xC9\x3\xC9\x5\xC9\xA50\n\xC9\x3\xC9\x3\xC9\x5\xC9\xA54"+ + "\n\xC9\x3\xC9\a\xC9\xA57\n\xC9\f\xC9\xE\xC9\xA5A\v\xC9\x3\xCA\x3\xCA\x5"+ + "\xCA\xA5E\n\xCA\x3\xCA\x3\xCA\x5\xCA\xA62\n\xCA\x3\xCA\x3\xCA\x3\xCB\x3"+ + "\xCB\x5\xCB\xA68\n\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB\x3\xCB"+ + "\x3\xCB\x5\xCB\xA72\n\xCB\x3\xCC\x3\xCC\x3\xCD\x3\xCD\x3\xCE\x3\xCE\x3"+ + "\xCE\x3\xCE\x3\xCF\x3\xCF\x3\xD0\x3\xD0\x3\xD1\x3\xD1\x3\xD2\x5\xD2\xA83"+ + "\n\xD2\x3\xD2\x3\xD2\x5\xD2\xA87\n\xD2\x3\xD2\x5\xD2\xA8A\n\xD2\x3\xD2"+ + "\x5\xD2\xA8D\n\xD2\x3\xD3\x3\xD3\x5\xD3\xA91\n\xD3\x3\xD3\x3\xD3\x5\xD3"+ + "\xA95\n\xD3\a\xD3\xA97\n\xD3\f\xD3\xE\xD3\xA9A\v\xD3\x3\xD4\x3\xD4\x3"+ + "\xD4\x5\xD4\xA9F\n\xD4\x3\xD5\x3\xD5\x5\xD5\xAA3\n\xD5\x3\xD5\x3\xD5\x3"+ + "\xD6\x3\xD6\x3\xD6\x3\xD7\x3\xD7\a\xD7\xAAC\n\xD7\f\xD7\xE\xD7\xAAF\v"+ + "\xD7\x3\xD8\x3\xD8\x3\xD8\x3\xD8\x5\xD8\xAB5\n\xD8\x6\xD8\xAB7\n\xD8\r"+ + "\xD8\xE\xD8\xAB8\x3\xD8\x5\xD8\xABC\n\xD8\x3\xD8\x3\xD8\x5\xD8\xAC0\n"+ + "\xD8\x3\xD9\x3\xD9\x5\xD9\xAC4\n\xD9\x3\xDA\x3\xDA\x3\xDB\x3\xDB\x3\xDB"+ + "\x3\xDB\x3\xDB\x3\xDB\x5\xDB\xACE\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAD2\n\xDB"+ + "\x3\xDB\x6\xDB\xAD5\n\xDB\r\xDB\xE\xDB\xAD6\x3\xDB\x5\xDB\xADA\n\xDB\x3"+ + "\xDB\x3\xDB\x5\xDB\xADE\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAE2\n\xDB\x3\xDB\x3"+ + "\xDB\x5\xDB\xAE6\n\xDB\x3\xDB\x3\xDB\x5\xDB\xAEA\n\xDB\x3\xDB\x3\xDB\x3"+ + "\xDB\x5\xDB\xAEF\n\xDB\x3\xDB\x3\xDB\x3\xDB\x5\xDB\xAF4\n\xDB\x3\xDB\x3"+ + "\xDB\x5\xDB\xAF8\n\xDB\x3\xDB\x6\xDB\xAFB\n\xDB\r\xDB\xE\xDB\xAFC\x3\xDB"+ + "\x5\xDB\xB00\n\xDB\x3\xDB\x3\xDB\x5\xDB\xB04\n\xDB\x3\xDC\x3\xDC\x3\xDD"+ + "\x3\xDD\a\xDD\xB0A\n\xDD\f\xDD\xE\xDD\xB0D\v\xDD\x3\xDE\x6\xDE\xB10\n"+ + "\xDE\r\xDE\xE\xDE\xB11\x3\xDE\x2\x2\x4\x176\x182\xDF\x2\x2\x4\x2\x6\x2"+ + "\b\x2\n\x2\f\x2\xE\x2\x10\x2\x12\x2\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2"+ + "\x1E\x2 \x2\"\x2$\x2&\x2(\x2*\x2,\x2.\x2\x30\x2\x32\x2\x34\x2\x36\x2\x38"+ + "\x2:\x2<\x2>\x2@\x2\x42\x2\x44\x2\x46\x2H\x2J\x2L\x2N\x2P\x2R\x2T\x2V"+ + "\x2X\x2Z\x2\\\x2^\x2`\x2\x62\x2\x64\x2\x66\x2h\x2j\x2l\x2n\x2p\x2r\x2"+ + "t\x2v\x2x\x2z\x2|\x2~\x2\x80\x2\x82\x2\x84\x2\x86\x2\x88\x2\x8A\x2\x8C"+ + "\x2\x8E\x2\x90\x2\x92\x2\x94\x2\x96\x2\x98\x2\x9A\x2\x9C\x2\x9E\x2\xA0"+ + "\x2\xA2\x2\xA4\x2\xA6\x2\xA8\x2\xAA\x2\xAC\x2\xAE\x2\xB0\x2\xB2\x2\xB4"+ + "\x2\xB6\x2\xB8\x2\xBA\x2\xBC\x2\xBE\x2\xC0\x2\xC2\x2\xC4\x2\xC6\x2\xC8"+ + "\x2\xCA\x2\xCC\x2\xCE\x2\xD0\x2\xD2\x2\xD4\x2\xD6\x2\xD8\x2\xDA\x2\xDC"+ + "\x2\xDE\x2\xE0\x2\xE2\x2\xE4\x2\xE6\x2\xE8\x2\xEA\x2\xEC\x2\xEE\x2\xF0"+ + "\x2\xF2\x2\xF4\x2\xF6\x2\xF8\x2\xFA\x2\xFC\x2\xFE\x2\x100\x2\x102\x2\x104"+ + "\x2\x106\x2\x108\x2\x10A\x2\x10C\x2\x10E\x2\x110\x2\x112\x2\x114\x2\x116"+ + "\x2\x118\x2\x11A\x2\x11C\x2\x11E\x2\x120\x2\x122\x2\x124\x2\x126\x2\x128"+ + "\x2\x12A\x2\x12C\x2\x12E\x2\x130\x2\x132\x2\x134\x2\x136\x2\x138\x2\x13A"+ + "\x2\x13C\x2\x13E\x2\x140\x2\x142\x2\x144\x2\x146\x2\x148\x2\x14A\x2\x14C"+ + "\x2\x14E\x2\x150\x2\x152\x2\x154\x2\x156\x2\x158\x2\x15A\x2\x15C\x2\x15E"+ + "\x2\x160\x2\x162\x2\x164\x2\x166\x2\x168\x2\x16A\x2\x16C\x2\x16E\x2\x170"+ + "\x2\x172\x2\x174\x2\x176\x2\x178\x2\x17A\x2\x17C\x2\x17E\x2\x180\x2\x182"+ + "\x2\x184\x2\x186\x2\x188\x2\x18A\x2\x18C\x2\x18E\x2\x190\x2\x192\x2\x194"+ + "\x2\x196\x2\x198\x2\x19A\x2\x19C\x2\x19E\x2\x1A0\x2\x1A2\x2\x1A4\x2\x1A6"+ + "\x2\x1A8\x2\x1AA\x2\x1AC\x2\x1AE\x2\x1B0\x2\x1B2\x2\x1B4\x2\x1B6\x2\x1B8"+ + "\x2\x1BA\x2\x2\x1E\x5\x2;;\x45\x45\xBE\xBE\a\x2\x38\x38;;{{\x9D\x9D\xA8"+ + "\xA8\x4\x2\xAA\xAB\xCD\xCD\x4\x2\x85\x87\xB5\xB5\x4\x2))++\x4\x2rr\xBC"+ + "\xBC\x3\x2=>\x3\x2HT\x4\x2\xC5\xC5\xC9\xC9\x3\x2jn\x3\x2\x94\x95\x4\x2"+ + "##\x8A\x8A\x4\x2tt\xA6\xA6\x3\x2\x6\a\x3\x2\xDE\xDF\xE\x2\x4\x4\x15\x15"+ + "!\"<\x2E2\x3\x2\x2\x2@\x2E4\x3\x2\x2\x2\x42\x2F2\x3\x2\x2\x2"+ + "\x44\x2FE\x3\x2\x2\x2\x46\x300\x3\x2\x2\x2H\x317\x3\x2\x2\x2J\x319\x3"+ + "\x2\x2\x2L\x31B\x3\x2\x2\x2N\x31D\x3\x2\x2\x2P\x32A\x3\x2\x2\x2R\x336"+ + "\x3\x2\x2\x2T\x338\x3\x2\x2\x2V\x344\x3\x2\x2\x2X\x346\x3\x2\x2\x2Z\x34C"+ + "\x3\x2\x2\x2\\\x356\x3\x2\x2\x2^\x358\x3\x2\x2\x2`\x35A\x3\x2\x2\x2\x62"+ + "\x367\x3\x2\x2\x2\x64\x379\x3\x2\x2\x2\x66\x37E\x3\x2\x2\x2h\x380\x3\x2"+ + "\x2\x2j\x382\x3\x2\x2\x2l\x384\x3\x2\x2\x2n\x392\x3\x2\x2\x2p\x394\x3"+ + "\x2\x2\x2r\x39B\x3\x2\x2\x2t\x3A5\x3\x2\x2\x2v\x3A7\x3\x2\x2\x2x\x3B4"+ + "\x3\x2\x2\x2z\x3C0\x3\x2\x2\x2|\x3CE\x3\x2\x2\x2~\x3D0\x3\x2\x2\x2\x80"+ + "\x3E6\x3\x2\x2\x2\x82\x3E8\x3\x2\x2\x2\x84\x3EA\x3\x2\x2\x2\x86\x400\x3"+ + "\x2\x2\x2\x88\x405\x3\x2\x2\x2\x8A\x417\x3\x2\x2\x2\x8C\x429\x3\x2\x2"+ + "\x2\x8E\x44A\x3\x2\x2\x2\x90\x465\x3\x2\x2\x2\x92\x486\x3\x2\x2\x2\x94"+ + "\x48C\x3\x2\x2\x2\x96\x49C\x3\x2\x2\x2\x98\x4A1\x3\x2\x2\x2\x9A\x4A3\x3"+ + "\x2\x2\x2\x9C\x4A5\x3\x2\x2\x2\x9E\x4AF\x3\x2\x2\x2\xA0\x4B2\x3\x2\x2"+ + "\x2\xA2\x4B5\x3\x2\x2\x2\xA4\x4BF\x3\x2\x2\x2\xA6\x4C1\x3\x2\x2\x2\xA8"+ + "\x4DA\x3\x2\x2\x2\xAA\x4DF\x3\x2\x2\x2\xAC\x4ED\x3\x2\x2\x2\xAE\x4FA\x3"+ + "\x2\x2\x2\xB0\x4FC\x3\x2\x2\x2\xB2\x50C\x3\x2\x2\x2\xB4\x513\x3\x2\x2"+ + "\x2\xB6\x51D\x3\x2\x2\x2\xB8\x51F\x3\x2\x2\x2\xBA\x530\x3\x2\x2\x2\xBC"+ + "\x549\x3\x2\x2\x2\xBE\x564\x3\x2\x2\x2\xC0\x566\x3\x2\x2\x2\xC2\x56A\x3"+ + "\x2\x2\x2\xC4\x56E\x3\x2\x2\x2\xC6\x592\x3\x2\x2\x2\xC8\x594\x3\x2\x2"+ + "\x2\xCA\x59A\x3\x2\x2\x2\xCC\x59C\x3\x2\x2\x2\xCE\x5AE\x3\x2\x2\x2\xD0"+ + "\x5BD\x3\x2\x2\x2\xD2\x5EA\x3\x2\x2\x2\xD4\x5EC\x3\x2\x2\x2\xD6\x5EE\x3"+ + "\x2\x2\x2\xD8\x5F0\x3\x2\x2\x2\xDA\x5F6\x3\x2\x2\x2\xDC\x602\x3\x2\x2"+ + "\x2\xDE\x60E\x3\x2\x2\x2\xE0\x61A\x3\x2\x2\x2\xE2\x62E\x3\x2\x2\x2\xE4"+ + "\x645\x3\x2\x2\x2\xE6\x660\x3\x2\x2\x2\xE8\x676\x3\x2\x2\x2\xEA\x689\x3"+ + "\x2\x2\x2\xEC\x69C\x3\x2\x2\x2\xEE\x6AC\x3\x2\x2\x2\xF0\x6B0\x3\x2\x2"+ + "\x2\xF2\x6B8\x3\x2\x2\x2\xF4\x6C6\x3\x2\x2\x2\xF6\x6CC\x3\x2\x2\x2\xF8"+ + "\x6F1\x3\x2\x2\x2\xFA\x6F5\x3\x2\x2\x2\xFC\x701\x3\x2\x2\x2\xFE\x703\x3"+ + "\x2\x2\x2\x100\x70B\x3\x2\x2\x2\x102\x70D\x3\x2\x2\x2\x104\x719\x3\x2"+ + "\x2\x2\x106\x71B\x3\x2\x2\x2\x108\x723\x3\x2\x2\x2\x10A\x738\x3\x2\x2"+ + "\x2\x10C\x73A\x3\x2\x2\x2\x10E\x74D\x3\x2\x2\x2\x110\x768\x3\x2\x2\x2"+ + "\x112\x76A\x3\x2\x2\x2\x114\x76C\x3\x2\x2\x2\x116\x76E\x3\x2\x2\x2\x118"+ + "\x77D\x3\x2\x2\x2\x11A\x792\x3\x2\x2\x2\x11C\x796\x3\x2\x2\x2\x11E\x79A"+ + "\x3\x2\x2\x2\x120\x79E\x3\x2\x2\x2\x122\x7A6\x3\x2\x2\x2\x124\x7B1\x3"+ + "\x2\x2\x2\x126\x7B3\x3\x2\x2\x2\x128\x7B9\x3\x2\x2\x2\x12A\x7C0\x3\x2"+ + "\x2\x2\x12C\x7C4\x3\x2\x2\x2\x12E\x7D0\x3\x2\x2\x2\x130\x7E2\x3\x2\x2"+ + "\x2\x132\x7E6\x3\x2\x2\x2\x134\x7EC\x3\x2\x2\x2\x136\x7EE\x3\x2\x2\x2"+ + "\x138\x7F3\x3\x2\x2\x2\x13A\x7FC\x3\x2\x2\x2\x13C\x80A\x3\x2\x2\x2\x13E"+ + "\x823\x3\x2\x2\x2\x140\x82A\x3\x2\x2\x2\x142\x831\x3\x2\x2\x2\x144\x85E"+ + "\x3\x2\x2\x2\x146\x87D\x3\x2\x2\x2\x148\x88B\x3\x2\x2\x2\x14A\x89D\x3"+ + "\x2\x2\x2\x14C\x89F\x3\x2\x2\x2\x14E\x8B2\x3\x2\x2\x2\x150\x8B9\x3\x2"+ + "\x2\x2\x152\x8BD\x3\x2\x2\x2\x154\x8BF\x3\x2\x2\x2\x156\x8C1\x3\x2\x2"+ + "\x2\x158\x8C8\x3\x2\x2\x2\x15A\x8CA\x3\x2\x2\x2\x15C\x8D5\x3\x2\x2\x2"+ + "\x15E\x8D7\x3\x2\x2\x2\x160\x8E6\x3\x2\x2\x2\x162\x8E8\x3\x2\x2\x2\x164"+ + "\x901\x3\x2\x2\x2\x166\x903\x3\x2\x2\x2\x168\x90D\x3\x2\x2\x2\x16A\x90F"+ + "\x3\x2\x2\x2\x16C\x915\x3\x2\x2\x2\x16E\x91C\x3\x2\x2\x2\x170\x920\x3"+ + "\x2\x2\x2\x172\x92C\x3\x2\x2\x2\x174\x92E\x3\x2\x2\x2\x176\x955\x3\x2"+ + "\x2\x2\x178\x9CF\x3\x2\x2\x2\x17A\x9D4\x3\x2\x2\x2\x17C\x9D6\x3\x2\x2"+ + "\x2\x17E\x9D8\x3\x2\x2\x2\x180\x9DA\x3\x2\x2\x2\x182\x9E9\x3\x2\x2\x2"+ + "\x184\xA23\x3\x2\x2\x2\x186\xA25\x3\x2\x2\x2\x188\xA3B\x3\x2\x2\x2\x18A"+ + "\xA47\x3\x2\x2\x2\x18C\xA49\x3\x2\x2\x2\x18E\xA4B\x3\x2\x2\x2\x190\xA4D"+ + "\x3\x2\x2\x2\x192\xA5B\x3\x2\x2\x2\x194\xA71\x3\x2\x2\x2\x196\xA73\x3"+ + "\x2\x2\x2\x198\xA75\x3\x2\x2\x2\x19A\xA77\x3\x2\x2\x2\x19C\xA7B\x3\x2"+ + "\x2\x2\x19E\xA7D\x3\x2\x2\x2\x1A0\xA7F\x3\x2\x2\x2\x1A2\xA8C\x3\x2\x2"+ + "\x2\x1A4\xA98\x3\x2\x2\x2\x1A6\xA9E\x3\x2\x2\x2\x1A8\xAA0\x3\x2\x2\x2"+ + "\x1AA\xAA6\x3\x2\x2\x2\x1AC\xAAD\x3\x2\x2\x2\x1AE\xAB0\x3\x2\x2\x2\x1B0"+ + "\xAC1\x3\x2\x2\x2\x1B2\xAC5\x3\x2\x2\x2\x1B4\xB03\x3\x2\x2\x2\x1B6\xB05"+ + "\x3\x2\x2\x2\x1B8\xB07\x3\x2\x2\x2\x1BA\xB0F\x3\x2\x2\x2\x1BC\x1BD\x5"+ + "\x4\x3\x2\x1BD\x1BE\a\x2\x2\x3\x1BE\x3\x3\x2\x2\x2\x1BF\x1C0\x5\x1A4\xD3"+ + "\x2\x1C0\x1C2\x5\f\a\x2\x1C1\x1C3\x5\x6\x4\x2\x1C2\x1C1\x3\x2\x2\x2\x1C2"+ + "\x1C3\x3\x2\x2\x2\x1C3\x1C4\x3\x2\x2\x2\x1C4\x1C6\x5\f\a\x2\x1C5\x1C7"+ + "\x5\b\x5\x2\x1C6\x1C5\x3\x2\x2\x2\x1C6\x1C7\x3\x2\x2\x2\x1C7\x1C8\x3\x2"+ + "\x2\x2\x1C8\x1C9\x5\f\a\x2\x1C9\x1CA\x5\x14\v\x2\x1CA\x1CB\x5\f\a\x2\x1CB"+ + "\x1CC\x5\x1A\xE\x2\x1CC\x1CE\x5\f\a\x2\x1CD\x1CF\x5\x1BA\xDE\x2\x1CE\x1CD"+ + "\x3\x2\x2\x2\x1CE\x1CF\x3\x2\x2\x2\x1CF\x5\x3\x2\x2\x2\x1D0\x1D1\a\xC7"+ + "\x2\x2\x1D1\x1D2\x5\x1BA\xDE\x2\x1D2\x1D4\x5\x16E\xB8\x2\x1D3\x1D5\x5"+ + "\x1BA\xDE\x2\x1D4\x1D3\x3\x2\x2\x2\x1D4\x1D5\x3\x2\x2\x2\x1D5\x1D7\x3"+ + "\x2\x2\x2\x1D6\x1D8\a\x42\x2\x2\x1D7\x1D6\x3\x2\x2\x2\x1D7\x1D8\x3\x2"+ + "\x2\x2\x1D8\x1D9\x3\x2\x2\x2\x1D9\x1DA\x5\x1A4\xD3\x2\x1DA\a\x3\x2\x2"+ + "\x2\x1DB\x1E3\a:\x2\x2\x1DC\x1DD\x5\x1BA\xDE\x2\x1DD\x1DE\a\xEA\x2\x2"+ + "\x1DE\x1DF\x5\x1BA\xDE\x2\x1DF\x1E1\x5\x150\xA9\x2\x1E0\x1E2\x5\x1BA\xDE"+ + "\x2\x1E1\x1E0\x3\x2\x2\x2\x1E1\x1E2\x3\x2\x2\x2\x1E2\x1E4\x3\x2\x2\x2"+ + "\x1E3\x1DC\x3\x2\x2\x2\x1E3\x1E4\x3\x2\x2\x2\x1E4\x1E5\x3\x2\x2\x2\x1E5"+ + "\x1E7\x5\x1A4\xD3\x2\x1E6\x1E8\x5\n\x6\x2\x1E7\x1E6\x3\x2\x2\x2\x1E8\x1E9"+ + "\x3\x2\x2\x2\x1E9\x1E7\x3\x2\x2\x2\x1E9\x1EA\x3\x2\x2\x2\x1EA\x1EB\x3"+ + "\x2\x2\x2\x1EB\x1EC\a\x64\x2\x2\x1EC\x1ED\x5\x1A4\xD3\x2\x1ED\t\x3\x2"+ + "\x2\x2\x1EE\x1F2\x5\x150\xA9\x2\x1EF\x1F1\x5\x1BA\xDE\x2\x1F0\x1EF\x3"+ + "\x2\x2\x2\x1F1\x1F4\x3\x2\x2\x2\x1F2\x1F0\x3\x2\x2\x2\x1F2\x1F3\x3\x2"+ + "\x2\x2\x1F3\x1F5\x3\x2\x2\x2\x1F4\x1F2\x3\x2\x2\x2\x1F5\x1F9\a\xD2\x2"+ + "\x2\x1F6\x1F8\x5\x1BA\xDE\x2\x1F7\x1F6\x3\x2\x2\x2\x1F8\x1FB\x3\x2\x2"+ + "\x2\x1F9\x1F7\x3\x2\x2\x2\x1F9\x1FA\x3\x2\x2\x2\x1FA\x1FC\x3\x2\x2\x2"+ + "\x1FB\x1F9\x3\x2\x2\x2\x1FC\x1FF\x5\x176\xBC\x2\x1FD\x1FE\a*\x2\x2\x1FE"+ + "\x200\x5\x16E\xB8\x2\x1FF\x1FD\x3\x2\x2\x2\x1FF\x200\x3\x2\x2\x2\x200"+ + "\x201\x3\x2\x2\x2\x201\x202\x5\x1A4\xD3\x2\x202\v\x3\x2\x2\x2\x203\x204"+ + "\x5\xE\b\x2\x204\x205\x5\x1A4\xD3\x2\x205\x207\x3\x2\x2\x2\x206\x203\x3"+ + "\x2\x2\x2\x207\x20A\x3\x2\x2\x2\x208\x206\x3\x2\x2\x2\x208\x209\x3\x2"+ + "\x2\x2\x209\r\x3\x2\x2\x2\x20A\x208\x3\x2\x2\x2\x20B\x20C\a\x37\x2\x2"+ + "\x20C\x20D\x5\x1BA\xDE\x2\x20D\x20F\x5\x10\t\x2\x20E\x210\x5\x1BA\xDE"+ + "\x2\x20F\x20E\x3\x2\x2\x2\x20F\x210\x3\x2\x2\x2\x210\x211\x3\x2\x2\x2"+ + "\x211\x213\a\xD2\x2\x2\x212\x214\x5\x1BA\xDE\x2\x213\x212\x3\x2\x2\x2"+ + "\x213\x214\x3\x2\x2\x2\x214\x215\x3\x2\x2\x2\x215\x220\x5\x12\n\x2\x216"+ + "\x218\x5\x1BA\xDE\x2\x217\x216\x3\x2\x2\x2\x217\x218\x3\x2\x2\x2\x218"+ + "\x219\x3\x2\x2\x2\x219\x21B\a)\x2\x2\x21A\x21C\x5\x1BA\xDE\x2\x21B\x21A"+ + "\x3\x2\x2\x2\x21B\x21C\x3\x2\x2\x2\x21C\x21D\x3\x2\x2\x2\x21D\x21F\x5"+ + "\x12\n\x2\x21E\x217\x3\x2\x2\x2\x21F\x222\x3\x2\x2\x2\x220\x21E\x3\x2"+ + "\x2\x2\x220\x221\x3\x2\x2\x2\x221\xF\x3\x2\x2\x2\x222\x220\x3\x2\x2\x2"+ + "\x223\x224\x5\x182\xC2\x2\x224\x11\x3\x2\x2\x2\x225\x226\x5\x176\xBC\x2"+ + "\x226\x13\x3\x2\x2\x2\x227\x228\x5\x18\r\x2\x228\x229\x5\x1A4\xD3\x2\x229"+ + "\x22B\x3\x2\x2\x2\x22A\x227\x3\x2\x2\x2\x22B\x22E\x3\x2\x2\x2\x22C\x22A"+ + "\x3\x2\x2\x2\x22C\x22D\x3\x2\x2\x2\x22D\x15\x3\x2\x2\x2\x22E\x22C\x3\x2"+ + "\x2\x2\x22F\x230\a\x98\x2\x2\x230\x231\x5\x1BA\xDE\x2\x231\x232\x5\x16E"+ + "\xB8\x2\x232\x23A\x3\x2\x2\x2\x233\x234\a\x9A\x2\x2\x234\x235\x5\x1BA"+ + "\xDE\x2\x235\x236\t\x2\x2\x2\x236\x23A\x3\x2\x2\x2\x237\x23A\a\x99\x2"+ + "\x2\x238\x23A\a\x9B\x2\x2\x239\x22F\x3\x2\x2\x2\x239\x233\x3\x2\x2\x2"+ + "\x239\x237\x3\x2\x2\x2\x239\x238\x3\x2\x2\x2\x23A\x17\x3\x2\x2\x2\x23B"+ + "\x23D\x5\x1BA\xDE\x2\x23C\x23B\x3\x2\x2\x2\x23C\x23D\x3\x2\x2\x2\x23D"+ + "\x249\x3\x2\x2\x2\x23E\x24A\x5\xE\b\x2\x23F\x24A\x5\x8CG\x2\x240\x24A"+ + "\x5\x94K\x2\x241\x24A\x5\xAAV\x2\x242\x24A\x5\xB4[\x2\x243\x24A\x5\x88"+ + "\x45\x2\x244\x24A\x5\xD8m\x2\x245\x24A\x5\x138\x9D\x2\x246\x24A\x5\x16"+ + "\f\x2\x247\x24A\x5\x11C\x8F\x2\x248\x24A\x5\x11E\x90\x2\x249\x23E\x3\x2"+ + "\x2\x2\x249\x23F\x3\x2\x2\x2\x249\x240\x3\x2\x2\x2\x249\x241\x3\x2\x2"+ + "\x2\x249\x242\x3\x2\x2\x2\x249\x243\x3\x2\x2\x2\x249\x244\x3\x2\x2\x2"+ + "\x249\x245\x3\x2\x2\x2\x249\x246\x3\x2\x2\x2\x249\x247\x3\x2\x2\x2\x249"+ + "\x248\x3\x2\x2\x2\x24A\x19\x3\x2\x2\x2\x24B\x24D\x5\x1BA\xDE\x2\x24C\x24B"+ + "\x3\x2\x2\x2\x24C\x24D\x3\x2\x2\x2\x24D\x253\x3\x2\x2\x2\x24E\x24F\x5"+ + "\x1C\xF\x2\x24F\x250\x5\x1A4\xD3\x2\x250\x252\x3\x2\x2\x2\x251\x24E\x3"+ + "\x2\x2\x2\x252\x255\x3\x2\x2\x2\x253\x251\x3\x2\x2\x2\x253\x254\x3\x2"+ + "\x2\x2\x254\x1B\x3\x2\x2\x2\x255\x253\x3\x2\x2\x2\x256\x25C\x5\xBC_\x2"+ + "\x257\x25C\x5\xE4s\x2\x258\x25C\x5\xE6t\x2\x259\x25C\x5\xE8u\x2\x25A\x25C"+ + "\x5\x118\x8D\x2\x25B\x256\x3\x2\x2\x2\x25B\x257\x3\x2\x2\x2\x25B\x258"+ + "\x3\x2\x2\x2\x25B\x259\x3\x2\x2\x2\x25B\x25A\x3\x2\x2\x2\x25C\x1D\x3\x2"+ + "\x2\x2\x25D\x25E\x5 \x11\x2\x25E\x25F\x5\x1A4\xD3\x2\x25F\x261\x3\x2\x2"+ + "\x2\x260\x25D\x3\x2\x2\x2\x261\x264\x3\x2\x2\x2\x262\x260\x3\x2\x2\x2"+ + "\x262\x263\x3\x2\x2\x2\x263\x1F\x3\x2\x2\x2\x264\x262\x3\x2\x2\x2\x265"+ + "\x28B\x5\x168\xB5\x2\x266\x28B\x5\"\x12\x2\x267\x28B\x5\xE\b\x2\x268\x28B"+ + "\x5\x88\x45\x2\x269\x28B\x5\xA8U\x2\x26A\x28B\x5\xAEX\x2\x26B\x28B\x5"+ + "\xB0Y\x2\x26C\x28B\x5\xB2Z\x2\x26D\x28B\x5\xB6\\\x2\x26E\x28B\x5\xB8]"+ + "\x2\x26F\x28B\x5\xBA^\x2\x270\x28B\x5\xC0\x61\x2\x271\x28B\x5\xC2\x62"+ + "\x2\x272\x28B\x5\xC4\x63\x2\x273\x28B\x5\xCA\x66\x2\x274\x28B\x5\xD8m"+ + "\x2\x275\x28B\x5\xDAn\x2\x276\x28B\x5\xDCo\x2\x277\x28B\x5\xDEp\x2\x278"+ + "\x28B\x5\xE0q\x2\x279\x28B\x5\xE2r\x2\x27A\x28B\x5\xEAv\x2\x27B\x28B\x5"+ + "\xF0y\x2\x27C\x28B\x5\xFE\x80\x2\x27D\x28B\x5\x100\x81\x2\x27E\x28B\x5"+ + "\x102\x82\x2\x27F\x28B\x5\x108\x85\x2\x280\x28B\x5\x116\x8C\x2\x281\x28B"+ + "\x5\x104\x83\x2\x282\x28B\x5\x138\x9D\x2\x283\x28B\x5\x13E\xA0\x2\x284"+ + "\x28B\x5\x140\xA1\x2\x285\x28B\x5\x142\xA2\x2\x286\x28B\x5\x144\xA3\x2"+ + "\x287\x28B\x5\x146\xA4\x2\x288\x28B\x5\xFC\x7F\x2\x289\x28B\x5\x106\x84"+ + "\x2\x28A\x265\x3\x2\x2\x2\x28A\x266\x3\x2\x2\x2\x28A\x267\x3\x2\x2\x2"+ + "\x28A\x268\x3\x2\x2\x2\x28A\x269\x3\x2\x2\x2\x28A\x26A\x3\x2\x2\x2\x28A"+ + "\x26B\x3\x2\x2\x2\x28A\x26C\x3\x2\x2\x2\x28A\x26D\x3\x2\x2\x2\x28A\x26E"+ + "\x3\x2\x2\x2\x28A\x26F\x3\x2\x2\x2\x28A\x270\x3\x2\x2\x2\x28A\x271\x3"+ + "\x2\x2\x2\x28A\x272\x3\x2\x2\x2\x28A\x273\x3\x2\x2\x2\x28A\x274\x3\x2"+ + "\x2\x2\x28A\x275\x3\x2\x2\x2\x28A\x276\x3\x2\x2\x2\x28A\x277\x3\x2\x2"+ + "\x2\x28A\x278\x3\x2\x2\x2\x28A\x279\x3\x2\x2\x2\x28A\x27A\x3\x2\x2\x2"+ + "\x28A\x27B\x3\x2\x2\x2\x28A\x27C\x3\x2\x2\x2\x28A\x27D\x3\x2\x2\x2\x28A"+ + "\x27E\x3\x2\x2\x2\x28A\x27F\x3\x2\x2\x2\x28A\x280\x3\x2\x2\x2\x28A\x281"+ + "\x3\x2\x2\x2\x28A\x282\x3\x2\x2\x2\x28A\x283\x3\x2\x2\x2\x28A\x284\x3"+ + "\x2\x2\x2\x28A\x285\x3\x2\x2\x2\x28A\x286\x3\x2\x2\x2\x28A\x287\x3\x2"+ + "\x2\x2\x28A\x288\x3\x2\x2\x2\x28A\x289\x3\x2\x2\x2\x28B!\x3\x2\x2\x2\x28C"+ + "\x29B\x5$\x13\x2\x28D\x29B\x5> \x2\x28E\x29B\x5<\x1F\x2\x28F\x29B\x5\x42"+ + "\"\x2\x290\x29B\x5\x46$\x2\x291\x29B\x5N(\x2\x292\x29B\x5P)\x2\x293\x29B"+ + "\x5T+\x2\x294\x29B\x5X-\x2\x295\x29B\x5`\x31\x2\x296\x29B\x5v<\x2\x297"+ + "\x29B\x5x=\x2\x298\x29B\x5~@\x2\x299\x29B\x5\x84\x43\x2\x29A\x28C\x3\x2"+ + "\x2\x2\x29A\x28D\x3\x2\x2\x2\x29A\x28E\x3\x2\x2\x2\x29A\x28F\x3\x2\x2"+ + "\x2\x29A\x290\x3\x2\x2\x2\x29A\x291\x3\x2\x2\x2\x29A\x292\x3\x2\x2\x2"+ + "\x29A\x293\x3\x2\x2\x2\x29A\x294\x3\x2\x2\x2\x29A\x295\x3\x2\x2\x2\x29A"+ + "\x296\x3\x2\x2\x2\x29A\x297\x3\x2\x2\x2\x29A\x298\x3\x2\x2\x2\x29A\x299"+ + "\x3\x2\x2\x2\x29B#\x3\x2\x2\x2\x29C\x29D\a\x96\x2\x2\x29D\x29E\x5\x1BA"+ + "\xDE\x2\x29E\x2A2\x5&\x14\x2\x29F\x2A0\x5\x1BA\xDE\x2\x2A0\x2A1\x5(\x15"+ + "\x2\x2A1\x2A3\x3\x2\x2\x2\x2A2\x29F\x3\x2\x2\x2\x2A2\x2A3\x3\x2\x2\x2"+ + "\x2A3\x2A7\x3\x2\x2\x2\x2A4\x2A5\x5\x1BA\xDE\x2\x2A5\x2A6\x5,\x17\x2\x2A6"+ + "\x2A8\x3\x2\x2\x2\x2A7\x2A4\x3\x2\x2\x2\x2A7\x2A8\x3\x2\x2\x2\x2A8\x2AC"+ + "\x3\x2\x2\x2\x2A9\x2AA\x5\x1BA\xDE\x2\x2AA\x2AB\x5\x30\x19\x2\x2AB\x2AD"+ + "\x3\x2\x2\x2\x2AC\x2A9\x3\x2\x2\x2\x2AC\x2AD\x3\x2\x2\x2\x2AD\x2AE\x3"+ + "\x2\x2\x2\x2AE\x2AF\x5\x1BA\xDE\x2\x2AF\x2B0\a\x39\x2\x2\x2B0\x2B1\x5"+ + "\x1BA\xDE\x2\x2B1\x2B5\x5\x36\x1C\x2\x2B2\x2B3\x5\x1BA\xDE\x2\x2B3\x2B4"+ + "\x5\x32\x1A\x2\x2B4\x2B6\x3\x2\x2\x2\x2B5\x2B2\x3\x2\x2\x2\x2B5\x2B6\x3"+ + "\x2\x2\x2\x2B6%\x3\x2\x2\x2\x2B7\x2B8\x5\x176\xBC\x2\x2B8\'\x3\x2\x2\x2"+ + "\x2B9\x2BA\aq\x2\x2\x2BA\x2BB\x5\x1BA\xDE\x2\x2BB\x2BC\x5*\x16\x2\x2BC"+ + ")\x3\x2\x2\x2\x2BD\x2BE\t\x3\x2\x2\x2BE+\x3\x2\x2\x2\x2BF\x2C0\a\x33\x2"+ + "\x2\x2C0\x2C1\x5\x1BA\xDE\x2\x2C1\x2C2\x5.\x18\x2\x2C2-\x3\x2\x2\x2\x2C3"+ + "\x2C4\t\x4\x2\x2\x2C4/\x3\x2\x2\x2\x2C5\x2C6\t\x5\x2\x2\x2C6\x31\x3\x2"+ + "\x2\x2\x2C7\x2C9\a\x1F\x2\x2\x2C8\x2CA\x5\x1BA\xDE\x2\x2C9\x2C8\x3\x2"+ + "\x2\x2\x2C9\x2CA\x3\x2\x2\x2\x2CA\x2CB\x3\x2\x2\x2\x2CB\x2CD\a\xD2\x2"+ + "\x2\x2CC\x2CE\x5\x1BA\xDE\x2\x2CD\x2CC\x3\x2\x2\x2\x2CD\x2CE\x3\x2\x2"+ + "\x2\x2CE\x2CF\x3\x2\x2\x2\x2CF\x2D0\x5\x34\x1B\x2\x2D0\x33\x3\x2\x2\x2"+ + "\x2D1\x2D2\x5\x176\xBC\x2\x2D2\x35\x3\x2\x2\x2\x2D3\x2D6\x5\x38\x1D\x2"+ + "\x2D4\x2D6\x5:\x1E\x2\x2D5\x2D3\x3\x2\x2\x2\x2D5\x2D4\x3\x2\x2\x2\x2D6"+ + "\x37\x3\x2\x2\x2\x2D7\x2D8\a.\x2\x2\x2D8\x2D9\x5\x176\xBC\x2\x2D9\x39"+ + "\x3\x2\x2\x2\x2DA\x2DB\x5\x176\xBC\x2\x2DB;\x3\x2\x2\x2\x2DC\x2E0\a\x43"+ + "\x2\x2\x2DD\x2DE\x5\x1BA\xDE\x2\x2DE\x2DF\x5@!\x2\x2DF\x2E1\x3\x2\x2\x2"+ + "\x2E0\x2DD\x3\x2\x2\x2\x2E0\x2E1\x3\x2\x2\x2\x2E1=\x3\x2\x2\x2\x2E2\x2E3"+ + "\a\xAE\x2\x2\x2E3?\x3\x2\x2\x2\x2E4\x2EF\x5\x36\x1C\x2\x2E5\x2E7\x5\x1BA"+ + "\xDE\x2\x2E6\x2E5\x3\x2\x2\x2\x2E6\x2E7\x3\x2\x2\x2\x2E7\x2E8\x3\x2\x2"+ + "\x2\x2E8\x2EA\a)\x2\x2\x2E9\x2EB\x5\x1BA\xDE\x2\x2EA\x2E9\x3\x2\x2\x2"+ + "\x2EA\x2EB\x3\x2\x2\x2\x2EB\x2EC\x3\x2\x2\x2\x2EC\x2EE\x5\x36\x1C\x2\x2ED"+ + "\x2E6\x3\x2\x2\x2\x2EE\x2F1\x3\x2\x2\x2\x2EF\x2ED\x3\x2\x2\x2\x2EF\x2F0"+ + "\x3\x2\x2\x2\x2F0\x41\x3\x2\x2\x2\x2F1\x2EF\x3\x2\x2\x2\x2F2\x2F3\a\xB2"+ + "\x2\x2\x2F3\x2F4\x5\x1BA\xDE\x2\x2F4\x2F6\x5\x36\x1C\x2\x2F5\x2F7\x5\x1BA"+ + "\xDE\x2\x2F6\x2F5\x3\x2\x2\x2\x2F6\x2F7\x3\x2\x2\x2\x2F7\x2F8\x3\x2\x2"+ + "\x2\x2F8\x2FA\a)\x2\x2\x2F9\x2FB\x5\x1BA\xDE\x2\x2FA\x2F9\x3\x2\x2\x2"+ + "\x2FA\x2FB\x3\x2\x2\x2\x2FB\x2FC\x3\x2\x2\x2\x2FC\x2FD\x5\x44#\x2\x2FD"+ + "\x43\x3\x2\x2\x2\x2FE\x2FF\x5\x176\xBC\x2\x2FF\x45\x3\x2\x2\x2\x300\x301"+ + "\a~\x2\x2\x301\x302\x5\x1BA\xDE\x2\x302\x30B\x5\x36\x1C\x2\x303\x305\x5"+ + "\x1BA\xDE\x2\x304\x303\x3\x2\x2\x2\x304\x305\x3\x2\x2\x2\x305\x306\x3"+ + "\x2\x2\x2\x306\x308\a)\x2\x2\x307\x309\x5\x1BA\xDE\x2\x308\x307\x3\x2"+ + "\x2\x2\x308\x309\x3\x2\x2\x2\x309\x30A\x3\x2\x2\x2\x30A\x30C\x5H%\x2\x30B"+ + "\x304\x3\x2\x2\x2\x30B\x30C\x3\x2\x2\x2\x30CG\x3\x2\x2\x2\x30D\x318\x5"+ + "J&\x2\x30E\x30F\x5J&\x2\x30F\x310\x5\x1BA\xDE\x2\x310\x312\x3\x2\x2\x2"+ + "\x311\x30E\x3\x2\x2\x2\x311\x312\x3\x2\x2\x2\x312\x313\x3\x2\x2\x2\x313"+ + "\x314\a\xC0\x2\x2\x314\x315\x5\x1BA\xDE\x2\x315\x316\x5L\'\x2\x316\x318"+ + "\x3\x2\x2\x2\x317\x30D\x3\x2\x2\x2\x317\x311\x3\x2\x2\x2\x318I\x3\x2\x2"+ + "\x2\x319\x31A\x5\x176\xBC\x2\x31AK\x3\x2\x2\x2\x31B\x31C\x5\x176\xBC\x2"+ + "\x31CM\x3\x2\x2\x2\x31D\x31E\a\xC4\x2\x2\x31E\x31F\x5\x1BA\xDE\x2\x31F"+ + "\x328\x5\x36\x1C\x2\x320\x322\x5\x1BA\xDE\x2\x321\x320\x3\x2\x2\x2\x321"+ + "\x322\x3\x2\x2\x2\x322\x323\x3\x2\x2\x2\x323\x325\a)\x2\x2\x324\x326\x5"+ + "\x1BA\xDE\x2\x325\x324\x3\x2\x2\x2\x325\x326\x3\x2\x2\x2\x326\x327\x3"+ + "\x2\x2\x2\x327\x329\x5H%\x2\x328\x321\x3\x2\x2\x2\x328\x329\x3\x2\x2\x2"+ + "\x329O\x3\x2\x2\x2\x32A\x32B\a\x84\x2\x2\x32B\x32C\x5\x1BA\xDE\x2\x32C"+ + "\x32E\x5\x38\x1D\x2\x32D\x32F\x5\x1BA\xDE\x2\x32E\x32D\x3\x2\x2\x2\x32E"+ + "\x32F\x3\x2\x2\x2\x32F\x330\x3\x2\x2\x2\x330\x332\a)\x2\x2\x331\x333\x5"+ + "\x1BA\xDE\x2\x332\x331\x3\x2\x2\x2\x332\x333\x3\x2\x2\x2\x333\x334\x3"+ + "\x2\x2\x2\x334\x335\x5R*\x2\x335Q\x3\x2\x2\x2\x336\x337\x5\x176\xBC\x2"+ + "\x337S\x3\x2\x2\x2\x338\x339\a\xCA\x2\x2\x339\x33A\x5\x1BA\xDE\x2\x33A"+ + "\x33C\x5\x38\x1D\x2\x33B\x33D\x5\x1BA\xDE\x2\x33C\x33B\x3\x2\x2\x2\x33C"+ + "\x33D\x3\x2\x2\x2\x33D\x33E\x3\x2\x2\x2\x33E\x340\a)\x2\x2\x33F\x341\x5"+ + "\x1BA\xDE\x2\x340\x33F\x3\x2\x2\x2\x340\x341\x3\x2\x2\x2\x341\x342\x3"+ + "\x2\x2\x2\x342\x343\x5V,\x2\x343U\x3\x2\x2\x2\x344\x345\x5\x176\xBC\x2"+ + "\x345W\x3\x2\x2\x2\x346\x34A\x5Z.\x2\x347\x348\x5\x1BA\xDE\x2\x348\x349"+ + "\x5\x62\x32\x2\x349\x34B\x3\x2\x2\x2\x34A\x347\x3\x2\x2\x2\x34A\x34B\x3"+ + "\x2\x2\x2\x34BY\x3\x2\x2\x2\x34C\x34E\x5\\/\x2\x34D\x34F\x5\x1BA\xDE\x2"+ + "\x34E\x34D\x3\x2\x2\x2\x34E\x34F\x3\x2\x2\x2\x34F\x350\x3\x2\x2\x2\x350"+ + "\x352\a-\x2\x2\x351\x353\x5\x1BA\xDE\x2\x352\x351\x3\x2\x2\x2\x352\x353"+ + "\x3\x2\x2\x2\x353\x354\x3\x2\x2\x2\x354\x355\x5^\x30\x2\x355[\x3\x2\x2"+ + "\x2\x356\x357\a\x18\x2\x2\x357]\x3\x2\x2\x2\x358\x359\a\xA0\x2\x2\x359"+ + "_\x3\x2\x2\x2\x35A\x35B\a\xA0\x2\x2\x35B\x35C\x5\x1BA\xDE\x2\x35C\x35E"+ + "\x5\x38\x1D\x2\x35D\x35F\x5\x1BA\xDE\x2\x35E\x35D\x3\x2\x2\x2\x35E\x35F"+ + "\x3\x2\x2\x2\x35F\x360\x3\x2\x2\x2\x360\x365\a)\x2\x2\x361\x363\x5\x1BA"+ + "\xDE\x2\x362\x361\x3\x2\x2\x2\x362\x363\x3\x2\x2\x2\x363\x364\x3\x2\x2"+ + "\x2\x364\x366\x5\x62\x32\x2\x365\x362\x3\x2\x2\x2\x365\x366\x3\x2\x2\x2"+ + "\x366\x61\x3\x2\x2\x2\x367\x36E\x5\x64\x33\x2\x368\x36A\x5\x1BA\xDE\x2"+ + "\x369\x368\x3\x2\x2\x2\x369\x36A\x3\x2\x2\x2\x36A\x36B\x3\x2\x2\x2\x36B"+ + "\x36D\x5\x64\x33\x2\x36C\x369\x3\x2\x2\x2\x36D\x370\x3\x2\x2\x2\x36E\x36C"+ + "\x3\x2\x2\x2\x36E\x36F\x3\x2\x2\x2\x36F\x63\x3\x2\x2\x2\x370\x36E\x3\x2"+ + "\x2\x2\x371\x37A\x5\x66\x34\x2\x372\x37A\x5h\x35\x2\x373\x375\x5\x66\x34"+ "\x2\x374\x376\x5\x1BA\xDE\x2\x375\x374\x3\x2\x2\x2\x375\x376\x3\x2\x2"+ "\x2\x376\x377\x3\x2\x2\x2\x377\x378\x5h\x35\x2\x378\x37A\x3\x2\x2\x2\x379"+ "\x371\x3\x2\x2\x2\x379\x372\x3\x2\x2\x2\x379\x373\x3\x2\x2\x2\x37A\x65"+ "\x3\x2\x2\x2\x37B\x37F\x5l\x37\x2\x37C\x37F\x5p\x39\x2\x37D\x37F\x5j\x36"+ "\x2\x37E\x37B\x3\x2\x2\x2\x37E\x37C\x3\x2\x2\x2\x37E\x37D\x3\x2\x2\x2"+ "\x37Fg\x3\x2\x2\x2\x380\x381\t\x6\x2\x2\x381i\x3\x2\x2\x2\x382\x383\x5"+ - "\x176\xBC\x2\x383k\x3\x2\x2\x2\x384\x386\a\xB9\x2\x2\x385\x387\x5\x1BA"+ + "\x176\xBC\x2\x383k\x3\x2\x2\x2\x384\x386\a\xB7\x2\x2\x385\x387\x5\x1BA"+ "\xDE\x2\x386\x385\x3\x2\x2\x2\x386\x387\x3\x2\x2\x2\x387\x388\x3\x2\x2"+ - "\x2\x388\x38A\a\xD8\x2\x2\x389\x38B\x5\x1BA\xDE\x2\x38A\x389\x3\x2\x2"+ + "\x2\x388\x38A\a\xD6\x2\x2\x389\x38B\x5\x1BA\xDE\x2\x38A\x389\x3\x2\x2"+ "\x2\x38A\x38B\x3\x2\x2\x2\x38B\x38C\x3\x2\x2\x2\x38C\x38E\x5n\x38\x2\x38D"+ "\x38F\x5\x1BA\xDE\x2\x38E\x38D\x3\x2\x2\x2\x38E\x38F\x3\x2\x2\x2\x38F"+ - "\x390\x3\x2\x2\x2\x390\x391\a\xDF\x2\x2\x391m\x3\x2\x2\x2\x392\x393\x5"+ - "\x176\xBC\x2\x393o\x3\x2\x2\x2\x394\x399\a\xBF\x2\x2\x395\x397\x5\x1BA"+ + "\x390\x3\x2\x2\x2\x390\x391\a\xDD\x2\x2\x391m\x3\x2\x2\x2\x392\x393\x5"+ + "\x176\xBC\x2\x393o\x3\x2\x2\x2\x394\x399\a\xBD\x2\x2\x395\x397\x5\x1BA"+ "\xDE\x2\x396\x395\x3\x2\x2\x2\x396\x397\x3\x2\x2\x2\x397\x398\x3\x2\x2"+ "\x2\x398\x39A\x5r:\x2\x399\x396\x3\x2\x2\x2\x399\x39A\x3\x2\x2\x2\x39A"+ - "q\x3\x2\x2\x2\x39B\x39D\a\xD8\x2\x2\x39C\x39E\x5\x1BA\xDE\x2\x39D\x39C"+ + "q\x3\x2\x2\x2\x39B\x39D\a\xD6\x2\x2\x39C\x39E\x5\x1BA\xDE\x2\x39D\x39C"+ "\x3\x2\x2\x2\x39D\x39E\x3\x2\x2\x2\x39E\x39F\x3\x2\x2\x2\x39F\x3A1\x5"+ "t;\x2\x3A0\x3A2\x5\x1BA\xDE\x2\x3A1\x3A0\x3\x2\x2\x2\x3A1\x3A2\x3\x2\x2"+ - "\x2\x3A2\x3A3\x3\x2\x2\x2\x3A3\x3A4\a\xDF\x2\x2\x3A4s\x3\x2\x2\x2\x3A5"+ - "\x3A6\x5\x176\xBC\x2\x3A6u\x3\x2\x2\x2\x3A7\x3A8\a\xCF\x2\x2\x3A8\x3A9"+ + "\x2\x3A2\x3A3\x3\x2\x2\x2\x3A3\x3A4\a\xDD\x2\x2\x3A4s\x3\x2\x2\x2\x3A5"+ + "\x3A6\x5\x176\xBC\x2\x3A6u\x3\x2\x2\x2\x3A7\x3A8\a\xCD\x2\x2\x3A8\x3A9"+ "\x5\x1BA\xDE\x2\x3A9\x3AB\x5\x38\x1D\x2\x3AA\x3AC\x5\x1BA\xDE\x2\x3AB"+ "\x3AA\x3\x2\x2\x2\x3AB\x3AC\x3\x2\x2\x2\x3AC\x3AD\x3\x2\x2\x2\x3AD\x3B2"+ - "\a+\x2\x2\x3AE\x3B0\x5\x1BA\xDE\x2\x3AF\x3AE\x3\x2\x2\x2\x3AF\x3B0\x3"+ + "\a)\x2\x2\x3AE\x3B0\x5\x1BA\xDE\x2\x3AF\x3AE\x3\x2\x2\x2\x3AF\x3B0\x3"+ "\x2\x2\x2\x3B0\x3B1\x3\x2\x2\x2\x3B1\x3B3\x5\x62\x32\x2\x3B2\x3AF\x3\x2"+ - "\x2\x2\x3B2\x3B3\x3\x2\x2\x2\x3B3w\x3\x2\x2\x2\x3B4\x3B5\a}\x2\x2\x3B5"+ + "\x2\x2\x3B2\x3B3\x3\x2\x2\x2\x3B3w\x3\x2\x2\x2\x3B4\x3B5\a{\x2\x2\x3B5"+ "\x3B6\x5\x1BA\xDE\x2\x3B6\x3B8\x5\x38\x1D\x2\x3B7\x3B9\x5\x1BA\xDE\x2"+ "\x3B8\x3B7\x3\x2\x2\x2\x3B8\x3B9\x3\x2\x2\x2\x3B9\x3BA\x3\x2\x2\x2\x3BA"+ - "\x3BC\a+\x2\x2\x3BB\x3BD\x5\x1BA\xDE\x2\x3BC\x3BB\x3\x2\x2\x2\x3BC\x3BD"+ + "\x3BC\a)\x2\x2\x3BB\x3BD\x5\x1BA\xDE\x2\x3BC\x3BB\x3\x2\x2\x2\x3BC\x3BD"+ "\x3\x2\x2\x2\x3BD\x3BE\x3\x2\x2\x2\x3BE\x3BF\x5z>\x2\x3BFy\x3\x2\x2\x2"+ "\x3C0\x3CB\x5|?\x2\x3C1\x3C3\x5\x1BA\xDE\x2\x3C2\x3C1\x3\x2\x2\x2\x3C2"+ - "\x3C3\x3\x2\x2\x2\x3C3\x3C4\x3\x2\x2\x2\x3C4\x3C6\a+\x2\x2\x3C5\x3C7\x5"+ + "\x3C3\x3\x2\x2\x2\x3C3\x3C4\x3\x2\x2\x2\x3C4\x3C6\a)\x2\x2\x3C5\x3C7\x5"+ "\x1BA\xDE\x2\x3C6\x3C5\x3\x2\x2\x2\x3C6\x3C7\x3\x2\x2\x2\x3C7\x3C8\x3"+ "\x2\x2\x2\x3C8\x3CA\x5|?\x2\x3C9\x3C2\x3\x2\x2\x2\x3CA\x3CD\x3\x2\x2\x2"+ "\x3CB\x3C9\x3\x2\x2\x2\x3CB\x3CC\x3\x2\x2\x2\x3CC{\x3\x2\x2\x2\x3CD\x3CB"+ - "\x3\x2\x2\x2\x3CE\x3CF\x5\x176\xBC\x2\x3CF}\x3\x2\x2\x2\x3D0\x3D1\a\xA9"+ + "\x3\x2\x2\x2\x3CE\x3CF\x5\x176\xBC\x2\x3CF}\x3\x2\x2\x2\x3D0\x3D1\a\xA7"+ "\x2\x2\x3D1\x3D2\x5\x1BA\xDE\x2\x3D2\x3D4\x5\x36\x1C\x2\x3D3\x3D5\x5\x1BA"+ "\xDE\x2\x3D4\x3D3\x3\x2\x2\x2\x3D4\x3D5\x3\x2\x2\x2\x3D5\x3D6\x3\x2\x2"+ - "\x2\x3D6\x3D8\a+\x2\x2\x3D7\x3D9\x5\x1BA\xDE\x2\x3D8\x3D7\x3\x2\x2\x2"+ + "\x2\x3D6\x3D8\a)\x2\x2\x3D7\x3D9\x5\x1BA\xDE\x2\x3D8\x3D7\x3\x2\x2\x2"+ "\x3D8\x3D9\x3\x2\x2\x2\x3D9\x3DB\x3\x2\x2\x2\x3DA\x3DC\x5\x80\x41\x2\x3DB"+ "\x3DA\x3\x2\x2\x2\x3DB\x3DC\x3\x2\x2\x2\x3DC\x3DE\x3\x2\x2\x2\x3DD\x3DF"+ "\x5\x1BA\xDE\x2\x3DE\x3DD\x3\x2\x2\x2\x3DE\x3DF\x3\x2\x2\x2\x3DF\x3E0"+ - "\x3\x2\x2\x2\x3E0\x3E2\a+\x2\x2\x3E1\x3E3\x5\x1BA\xDE\x2\x3E2\x3E1\x3"+ + "\x3\x2\x2\x2\x3E0\x3E2\a)\x2\x2\x3E1\x3E3\x5\x1BA\xDE\x2\x3E2\x3E1\x3"+ "\x2\x2\x2\x3E2\x3E3\x3\x2\x2\x2\x3E3\x3E4\x3\x2\x2\x2\x3E4\x3E5\x5\x82"+ "\x42\x2\x3E5\x7F\x3\x2\x2\x2\x3E6\x3E7\x5\x176\xBC\x2\x3E7\x81\x3\x2\x2"+ - "\x2\x3E8\x3E9\x5\x176\xBC\x2\x3E9\x83\x3\x2\x2\x2\x3EA\x3EB\au\x2\x2\x3EB"+ + "\x2\x3E8\x3E9\x5\x176\xBC\x2\x3E9\x83\x3\x2\x2\x2\x3EA\x3EB\as\x2\x2\x3EB"+ "\x3EC\x5\x1BA\xDE\x2\x3EC\x3EE\x5\x36\x1C\x2\x3ED\x3EF\x5\x1BA\xDE\x2"+ "\x3EE\x3ED\x3\x2\x2\x2\x3EE\x3EF\x3\x2\x2\x2\x3EF\x3F0\x3\x2\x2\x2\x3F0"+ - "\x3F2\a+\x2\x2\x3F1\x3F3\x5\x1BA\xDE\x2\x3F2\x3F1\x3\x2\x2\x2\x3F2\x3F3"+ + "\x3F2\a)\x2\x2\x3F1\x3F3\x5\x1BA\xDE\x2\x3F2\x3F1\x3\x2\x2\x2\x3F2\x3F3"+ "\x3\x2\x2\x2\x3F3\x3F5\x3\x2\x2\x2\x3F4\x3F6\x5\x80\x41\x2\x3F5\x3F4\x3"+ "\x2\x2\x2\x3F5\x3F6\x3\x2\x2\x2\x3F6\x3F8\x3\x2\x2\x2\x3F7\x3F9\x5\x1BA"+ "\xDE\x2\x3F8\x3F7\x3\x2\x2\x2\x3F8\x3F9\x3\x2\x2\x2\x3F9\x3FA\x3\x2\x2"+ - "\x2\x3FA\x3FC\a+\x2\x2\x3FB\x3FD\x5\x1BA\xDE\x2\x3FC\x3FB\x3\x2\x2\x2"+ + "\x2\x3FA\x3FC\a)\x2\x2\x3FB\x3FD\x5\x1BA\xDE\x2\x3FC\x3FB\x3\x2\x2\x2"+ "\x3FC\x3FD\x3\x2\x2\x2\x3FD\x3FE\x3\x2\x2\x2\x3FE\x3FF\x5\x86\x44\x2\x3FF"+ "\x85\x3\x2\x2\x2\x400\x401\x5\x176\xBC\x2\x401\x87\x3\x2\x2\x2\x402\x403"+ "\x5\x174\xBB\x2\x403\x404\x5\x1BA\xDE\x2\x404\x406\x3\x2\x2\x2\x405\x402"+ - "\x3\x2\x2\x2\x405\x406\x3\x2\x2\x2\x406\x407\x3\x2\x2\x2\x407\x408\a\x46"+ + "\x3\x2\x2\x2\x405\x406\x3\x2\x2\x2\x406\x407\x3\x2\x2\x2\x407\x408\a\x44"+ "\x2\x2\x408\x409\x5\x1BA\xDE\x2\x409\x414\x5\x8A\x46\x2\x40A\x40C\x5\x1BA"+ "\xDE\x2\x40B\x40A\x3\x2\x2\x2\x40B\x40C\x3\x2\x2\x2\x40C\x40D\x3\x2\x2"+ - "\x2\x40D\x40F\a+\x2\x2\x40E\x410\x5\x1BA\xDE\x2\x40F\x40E\x3\x2\x2\x2"+ + "\x2\x40D\x40F\a)\x2\x2\x40E\x410\x5\x1BA\xDE\x2\x40F\x40E\x3\x2\x2\x2"+ "\x40F\x410\x3\x2\x2\x2\x410\x411\x3\x2\x2\x2\x411\x413\x5\x8A\x46\x2\x412"+ "\x40B\x3\x2\x2\x2\x413\x416\x3\x2\x2\x2\x414\x412\x3\x2\x2\x2\x414\x415"+ "\x3\x2\x2\x2\x415\x89\x3\x2\x2\x2\x416\x414\x3\x2\x2\x2\x417\x41B\x5\x152"+ "\xAA\x2\x418\x419\x5\x1BA\xDE\x2\x419\x41A\x5\x15E\xB0\x2\x41A\x41C\x3"+ "\x2\x2\x2\x41B\x418\x3\x2\x2\x2\x41B\x41C\x3\x2\x2\x2\x41C\x41E\x3\x2"+ "\x2\x2\x41D\x41F\x5\x1BA\xDE\x2\x41E\x41D\x3\x2\x2\x2\x41E\x41F\x3\x2"+ - "\x2\x2\x41F\x420\x3\x2\x2\x2\x420\x422\a\xD4\x2\x2\x421\x423\x5\x1BA\xDE"+ + "\x2\x2\x41F\x420\x3\x2\x2\x2\x420\x422\a\xD2\x2\x2\x421\x423\x5\x1BA\xDE"+ "\x2\x422\x421\x3\x2\x2\x2\x422\x423\x3\x2\x2\x2\x423\x424\x3\x2\x2\x2"+ "\x424\x425\x5\x176\xBC\x2\x425\x8B\x3\x2\x2\x2\x426\x427\x5\x174\xBB\x2"+ "\x427\x428\x5\x1BA\xDE\x2\x428\x42A\x3\x2\x2\x2\x429\x426\x3\x2\x2\x2"+ - "\x429\x42A\x3\x2\x2\x2\x42A\x42B\x3\x2\x2\x2\x42B\x42C\aI\x2\x2\x42C\x42F"+ - "\x5\x1BA\xDE\x2\x42D\x42E\a\xA7\x2\x2\x42E\x430\x5\x1BA\xDE\x2\x42F\x42D"+ + "\x429\x42A\x3\x2\x2\x2\x42A\x42B\x3\x2\x2\x2\x42B\x42C\aG\x2\x2\x42C\x42F"+ + "\x5\x1BA\xDE\x2\x42D\x42E\a\xA5\x2\x2\x42E\x430\x5\x1BA\xDE\x2\x42F\x42D"+ "\x3\x2\x2\x2\x42F\x430\x3\x2\x2\x2\x430\x431\x3\x2\x2\x2\x431\x432\t\a"+ "\x2\x2\x432\x433\x5\x1BA\xDE\x2\x433\x434\x5\x152\xAA\x2\x434\x435\x5"+ - "\x1BA\xDE\x2\x435\x436\a\x84\x2\x2\x436\x437\x5\x1BA\xDE\x2\x437\x43D"+ - "\a\xE2\x2\x2\x438\x439\x5\x1BA\xDE\x2\x439\x43A\a\x37\x2\x2\x43A\x43B"+ - "\x5\x1BA\xDE\x2\x43B\x43C\a\xE2\x2\x2\x43C\x43E\x3\x2\x2\x2\x43D\x438"+ + "\x1BA\xDE\x2\x435\x436\a\x82\x2\x2\x436\x437\x5\x1BA\xDE\x2\x437\x43D"+ + "\a\xE0\x2\x2\x438\x439\x5\x1BA\xDE\x2\x439\x43A\a\x35\x2\x2\x43A\x43B"+ + "\x5\x1BA\xDE\x2\x43B\x43C\a\xE0\x2\x2\x43C\x43E\x3\x2\x2\x2\x43D\x438"+ "\x3\x2\x2\x2\x43D\x43E\x3\x2\x2\x2\x43E\x443\x3\x2\x2\x2\x43F\x441\x5"+ "\x1BA\xDE\x2\x440\x43F\x3\x2\x2\x2\x440\x441\x3\x2\x2\x2\x441\x442\x3"+ "\x2\x2\x2\x442\x444\x5\x8EH\x2\x443\x440\x3\x2\x2\x2\x443\x444\x3\x2\x2"+ "\x2\x444\x448\x3\x2\x2\x2\x445\x446\x5\x1BA\xDE\x2\x446\x447\x5\x15E\xB0"+ "\x2\x447\x449\x3\x2\x2\x2\x448\x445\x3\x2\x2\x2\x448\x449\x3\x2\x2\x2"+ - "\x449\x8D\x3\x2\x2\x2\x44A\x45C\a\xD8\x2\x2\x44B\x44D\x5\x1BA\xDE\x2\x44C"+ + "\x449\x8D\x3\x2\x2\x2\x44A\x45C\a\xD6\x2\x2\x44B\x44D\x5\x1BA\xDE\x2\x44C"+ "\x44B\x3\x2\x2\x2\x44C\x44D\x3\x2\x2\x2\x44D\x44E\x3\x2\x2\x2\x44E\x459"+ "\x5\x90I\x2\x44F\x451\x5\x1BA\xDE\x2\x450\x44F\x3\x2\x2\x2\x450\x451\x3"+ - "\x2\x2\x2\x451\x452\x3\x2\x2\x2\x452\x454\a+\x2\x2\x453\x455\x5\x1BA\xDE"+ + "\x2\x2\x2\x451\x452\x3\x2\x2\x2\x452\x454\a)\x2\x2\x453\x455\x5\x1BA\xDE"+ "\x2\x454\x453\x3\x2\x2\x2\x454\x455\x3\x2\x2\x2\x455\x456\x3\x2\x2\x2"+ "\x456\x458\x5\x90I\x2\x457\x450\x3\x2\x2\x2\x458\x45B\x3\x2\x2\x2\x459"+ "\x457\x3\x2\x2\x2\x459\x45A\x3\x2\x2\x2\x45A\x45D\x3\x2\x2\x2\x45B\x459"+ "\x3\x2\x2\x2\x45C\x44C\x3\x2\x2\x2\x45C\x45D\x3\x2\x2\x2\x45D\x45F\x3"+ "\x2\x2\x2\x45E\x460\x5\x1BA\xDE\x2\x45F\x45E\x3\x2\x2\x2\x45F\x460\x3"+ - "\x2\x2\x2\x460\x461\x3\x2\x2\x2\x461\x462\a\xDF\x2\x2\x462\x8F\x3\x2\x2"+ - "\x2\x463\x464\a\x99\x2\x2\x464\x466\x5\x1BA\xDE\x2\x465\x463\x3\x2\x2"+ + "\x2\x2\x2\x460\x461\x3\x2\x2\x2\x461\x462\a\xDD\x2\x2\x462\x8F\x3\x2\x2"+ + "\x2\x463\x464\a\x97\x2\x2\x464\x466\x5\x1BA\xDE\x2\x465\x463\x3\x2\x2"+ "\x2\x465\x466\x3\x2\x2\x2\x466\x469\x3\x2\x2\x2\x467\x468\t\b\x2\x2\x468"+ "\x46A\x5\x1BA\xDE\x2\x469\x467\x3\x2\x2\x2\x469\x46A\x3\x2\x2\x2\x46A"+ - "\x46D\x3\x2\x2\x2\x46B\x46C\a\xA0\x2\x2\x46C\x46E\x5\x1BA\xDE\x2\x46D"+ + "\x46D\x3\x2\x2\x2\x46B\x46C\a\x9E\x2\x2\x46C\x46E\x5\x1BA\xDE\x2\x46D"+ "\x46B\x3\x2\x2\x2\x46D\x46E\x3\x2\x2\x2\x46E\x46F\x3\x2\x2\x2\x46F\x478"+ "\x5\x150\xA9\x2\x470\x472\x5\x1BA\xDE\x2\x471\x470\x3\x2\x2\x2\x471\x472"+ - "\x3\x2\x2\x2\x472\x473\x3\x2\x2\x2\x473\x475\a\xD8\x2\x2\x474\x476\x5"+ + "\x3\x2\x2\x2\x472\x473\x3\x2\x2\x2\x473\x475\a\xD6\x2\x2\x474\x476\x5"+ "\x1BA\xDE\x2\x475\x474\x3\x2\x2\x2\x475\x476\x3\x2\x2\x2\x476\x477\x3"+ - "\x2\x2\x2\x477\x479\a\xDF\x2\x2\x478\x471\x3\x2\x2\x2\x478\x479\x3\x2"+ + "\x2\x2\x2\x477\x479\a\xDD\x2\x2\x478\x471\x3\x2\x2\x2\x478\x479\x3\x2"+ "\x2\x2\x479\x47E\x3\x2\x2\x2\x47A\x47C\x5\x1BA\xDE\x2\x47B\x47A\x3\x2"+ "\x2\x2\x47B\x47C\x3\x2\x2\x2\x47C\x47D\x3\x2\x2\x2\x47D\x47F\x5\x15E\xB0"+ "\x2\x47E\x47B\x3\x2\x2\x2\x47E\x47F\x3\x2\x2\x2\x47F\x484\x3\x2\x2\x2"+ "\x480\x482\x5\x1BA\xDE\x2\x481\x480\x3\x2\x2\x2\x481\x482\x3\x2\x2\x2"+ "\x482\x483\x3\x2\x2\x2\x483\x485\x5\x92J\x2\x484\x481\x3\x2\x2\x2\x484"+ - "\x485\x3\x2\x2\x2\x485\x91\x3\x2\x2\x2\x486\x488\a\xD4\x2\x2\x487\x489"+ + "\x485\x3\x2\x2\x2\x485\x91\x3\x2\x2\x2\x486\x488\a\xD2\x2\x2\x487\x489"+ "\x5\x1BA\xDE\x2\x488\x487\x3\x2\x2\x2\x488\x489\x3\x2\x2\x2\x489\x48A"+ "\x3\x2\x2\x2\x48A\x48B\x5\x176\xBC\x2\x48B\x93\x3\x2\x2\x2\x48C\x48D\x5"+ "\x96L\x2\x48D\x48E\x5\x1BA\xDE\x2\x48E\x499\x5\x98M\x2\x48F\x491\x5\x1BA"+ "\xDE\x2\x490\x48F\x3\x2\x2\x2\x490\x491\x3\x2\x2\x2\x491\x492\x3\x2\x2"+ - "\x2\x492\x494\a+\x2\x2\x493\x495\x5\x1BA\xDE\x2\x494\x493\x3\x2\x2\x2"+ + "\x2\x492\x494\a)\x2\x2\x493\x495\x5\x1BA\xDE\x2\x494\x493\x3\x2\x2\x2"+ "\x494\x495\x3\x2\x2\x2\x495\x496\x3\x2\x2\x2\x496\x498\x5\x98M\x2\x497"+ "\x490\x3\x2\x2\x2\x498\x49B\x3\x2\x2\x2\x499\x497\x3\x2\x2\x2\x499\x49A"+ "\x3\x2\x2\x2\x49A\x95\x3\x2\x2\x2\x49B\x499\x3\x2\x2\x2\x49C\x49D\t\t"+ @@ -20371,678 +20365,680 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) { "\x4A0\x4A2\x5\xA2R\x2\x4A1\x49E\x3\x2\x2\x2\x4A1\x49F\x3\x2\x2\x2\x4A1"+ "\x4A0\x3\x2\x2\x2\x4A2\x99\x3\x2\x2\x2\x4A3\x4A4\x5\x150\xA9\x2\x4A4\x9B"+ "\x3\x2\x2\x2\x4A5\x4A7\x5\x9EP\x2\x4A6\x4A8\x5\x1BA\xDE\x2\x4A7\x4A6\x3"+ - "\x2\x2\x2\x4A7\x4A8\x3\x2\x2\x2\x4A8\x4A9\x3\x2\x2\x2\x4A9\x4AB\a\xDA"+ + "\x2\x2\x2\x4A7\x4A8\x3\x2\x2\x2\x4A8\x4A9\x3\x2\x2\x2\x4A9\x4AB\a\xD8"+ "\x2\x2\x4AA\x4AC\x5\x1BA\xDE\x2\x4AB\x4AA\x3\x2\x2\x2\x4AB\x4AC\x3\x2"+ "\x2\x2\x4AC\x4AD\x3\x2\x2\x2\x4AD\x4AE\x5\xA0Q\x2\x4AE\x9D\x3\x2\x2\x2"+ "\x4AF\x4B0\x6P\x2\x2\x4B0\x4B1\x5\x150\xA9\x2\x4B1\x9F\x3\x2\x2\x2\x4B2"+ "\x4B3\x6Q\x3\x2\x4B3\x4B4\x5\x150\xA9\x2\x4B4\xA1\x3\x2\x2\x2\x4B5\x4B7"+ "\x5\xA4S\x2\x4B6\x4B8\x5\x1BA\xDE\x2\x4B7\x4B6\x3\x2\x2\x2\x4B7\x4B8\x3"+ - "\x2\x2\x2\x4B8\x4B9\x3\x2\x2\x2\x4B9\x4BB\a\xDA\x2\x2\x4BA\x4BC\x5\x1BA"+ + "\x2\x2\x2\x4B8\x4B9\x3\x2\x2\x2\x4B9\x4BB\a\xD8\x2\x2\x4BA\x4BC\x5\x1BA"+ "\xDE\x2\x4BB\x4BA\x3\x2\x2\x2\x4BB\x4BC\x3\x2\x2\x2\x4BC\x4BD\x3\x2\x2"+ "\x2\x4BD\x4BE\x5\xA6T\x2\x4BE\xA3\x3\x2\x2\x2\x4BF\x4C0\x5\x150\xA9\x2"+ "\x4C0\xA5\x3\x2\x2\x2\x4C1\x4C2\x5\x150\xA9\x2\x4C2\xA7\x3\x2\x2\x2\x4C3"+ - "\x4C4\aX\x2\x2\x4C4\x4C5\x5\x1A4\xD3\x2\x4C5\x4C6\x5\x1E\x10\x2\x4C6\x4C7"+ - "\a\x82\x2\x2\x4C7\x4DB\x3\x2\x2\x2\x4C8\x4C9\aX\x2\x2\x4C9\x4CA\x5\x1BA"+ + "\x4C4\aV\x2\x2\x4C4\x4C5\x5\x1A4\xD3\x2\x4C5\x4C6\x5\x1E\x10\x2\x4C6\x4C7"+ + "\a\x80\x2\x2\x4C7\x4DB\x3\x2\x2\x2\x4C8\x4C9\aV\x2\x2\x4C9\x4CA\x5\x1BA"+ "\xDE\x2\x4CA\x4CB\t\n\x2\x2\x4CB\x4CC\x5\x1BA\xDE\x2\x4CC\x4CD\x5\x176"+ - "\xBC\x2\x4CD\x4CE\x5\x1A4\xD3\x2\x4CE\x4CF\x5\x1E\x10\x2\x4CF\x4D0\a\x82"+ - "\x2\x2\x4D0\x4DB\x3\x2\x2\x2\x4D1\x4D2\aX\x2\x2\x4D2\x4D3\x5\x1A4\xD3"+ - "\x2\x4D3\x4D4\x5\x1E\x10\x2\x4D4\x4D5\a\x82\x2\x2\x4D5\x4D6\x5\x1BA\xDE"+ + "\xBC\x2\x4CD\x4CE\x5\x1A4\xD3\x2\x4CE\x4CF\x5\x1E\x10\x2\x4CF\x4D0\a\x80"+ + "\x2\x2\x4D0\x4DB\x3\x2\x2\x2\x4D1\x4D2\aV\x2\x2\x4D2\x4D3\x5\x1A4\xD3"+ + "\x2\x4D3\x4D4\x5\x1E\x10\x2\x4D4\x4D5\a\x80\x2\x2\x4D5\x4D6\x5\x1BA\xDE"+ "\x2\x4D6\x4D7\t\n\x2\x2\x4D7\x4D8\x5\x1BA\xDE\x2\x4D8\x4D9\x5\x176\xBC"+ "\x2\x4D9\x4DB\x3\x2\x2\x2\x4DA\x4C3\x3\x2\x2\x2\x4DA\x4C8\x3\x2\x2\x2"+ "\x4DA\x4D1\x3\x2\x2\x2\x4DB\xA9\x3\x2\x2\x2\x4DC\x4DD\x5\x174\xBB\x2\x4DD"+ "\x4DE\x5\x1BA\xDE\x2\x4DE\x4E0\x3\x2\x2\x2\x4DF\x4DC\x3\x2\x2\x2\x4DF"+ - "\x4E0\x3\x2\x2\x2\x4E0\x4E1\x3\x2\x2\x2\x4E1\x4E2\ag\x2\x2\x4E2\x4E3\x5"+ - "\x1BA\xDE\x2\x4E3\x4E4\x5\x152\xAA\x2\x4E4\x4E8\x5\x1A4\xD3\x2\x4E5\x4E7"+ - "\x5\xACW\x2\x4E6\x4E5\x3\x2\x2\x2\x4E7\x4EA\x3\x2\x2\x2\x4E8\x4E6\x3\x2"+ - "\x2\x2\x4E8\x4E9\x3\x2\x2\x2\x4E9\x4EB\x3\x2\x2\x2\x4EA\x4E8\x3\x2\x2"+ - "\x2\x4EB\x4EC\a^\x2\x2\x4EC\xAB\x3\x2\x2\x2\x4ED\x4F6\x5\x152\xAA\x2\x4EE"+ - "\x4F0\x5\x1BA\xDE\x2\x4EF\x4EE\x3\x2\x2\x2\x4EF\x4F0\x3\x2\x2\x2\x4F0"+ - "\x4F1\x3\x2\x2\x2\x4F1\x4F3\a\xD4\x2\x2\x4F2\x4F4\x5\x1BA\xDE\x2\x4F3"+ - "\x4F2\x3\x2\x2\x2\x4F3\x4F4\x3\x2\x2\x2\x4F4\x4F5\x3\x2\x2\x2\x4F5\x4F7"+ - "\x5\x176\xBC\x2\x4F6\x4EF\x3\x2\x2\x2\x4F6\x4F7\x3\x2\x2\x2\x4F7\x4F8"+ - "\x3\x2\x2\x2\x4F8\x4F9\x5\x1A4\xD3\x2\x4F9\xAD\x3\x2\x2\x2\x4FA\x4FB\a"+ - "\x66\x2\x2\x4FB\xAF\x3\x2\x2\x2\x4FC\x4FD\ai\x2\x2\x4FD\x4FE\x5\x1BA\xDE"+ - "\x2\x4FE\x509\x5\x176\xBC\x2\x4FF\x501\x5\x1BA\xDE\x2\x500\x4FF\x3\x2"+ - "\x2\x2\x500\x501\x3\x2\x2\x2\x501\x502\x3\x2\x2\x2\x502\x504\a+\x2\x2"+ - "\x503\x505\x5\x1BA\xDE\x2\x504\x503\x3\x2\x2\x2\x504\x505\x3\x2\x2\x2"+ - "\x505\x506\x3\x2\x2\x2\x506\x508\x5\x176\xBC\x2\x507\x500\x3\x2\x2\x2"+ - "\x508\x50B\x3\x2\x2\x2\x509\x507\x3\x2\x2\x2\x509\x50A\x3\x2\x2\x2\x50A"+ - "\xB1\x3\x2\x2\x2\x50B\x509\x3\x2\x2\x2\x50C\x50D\aj\x2\x2\x50D\x50E\x5"+ - "\x1BA\xDE\x2\x50E\x50F\x5\x176\xBC\x2\x50F\xB3\x3\x2\x2\x2\x510\x511\x5"+ - "\x174\xBB\x2\x511\x512\x5\x1BA\xDE\x2\x512\x514\x3\x2\x2\x2\x513\x510"+ - "\x3\x2\x2\x2\x513\x514\x3\x2\x2\x2\x514\x515\x3\x2\x2\x2\x515\x516\ak"+ - "\x2\x2\x516\x517\x5\x1BA\xDE\x2\x517\x519\x5\x152\xAA\x2\x518\x51A\x5"+ - "\x1BA\xDE\x2\x519\x518\x3\x2\x2\x2\x519\x51A\x3\x2\x2\x2\x51A\x51B\x3"+ - "\x2\x2\x2\x51B\x51C\x5\x8EH\x2\x51C\xB5\x3\x2\x2\x2\x51D\x51E\t\v\x2\x2"+ - "\x51E\xB7\x3\x2\x2\x2\x51F\x520\as\x2\x2\x520\x521\x5\x1BA\xDE\x2\x521"+ - "\x522\aZ\x2\x2\x522\x523\x5\x1BA\xDE\x2\x523\x524\x5\x176\xBC\x2\x524"+ - "\x525\x5\x1BA\xDE\x2\x525\x526\a|\x2\x2\x526\x527\x5\x1BA\xDE\x2\x527"+ + "\x4E0\x3\x2\x2\x2\x4E0\x4E1\x3\x2\x2\x2\x4E1\x4E2\a\x65\x2\x2\x4E2\x4E3"+ + "\x5\x1BA\xDE\x2\x4E3\x4E4\x5\x152\xAA\x2\x4E4\x4E8\x5\x1A4\xD3\x2\x4E5"+ + "\x4E7\x5\xACW\x2\x4E6\x4E5\x3\x2\x2\x2\x4E7\x4EA\x3\x2\x2\x2\x4E8\x4E6"+ + "\x3\x2\x2\x2\x4E8\x4E9\x3\x2\x2\x2\x4E9\x4EB\x3\x2\x2\x2\x4EA\x4E8\x3"+ + "\x2\x2\x2\x4EB\x4EC\a\\\x2\x2\x4EC\xAB\x3\x2\x2\x2\x4ED\x4F6\x5\x152\xAA"+ + "\x2\x4EE\x4F0\x5\x1BA\xDE\x2\x4EF\x4EE\x3\x2\x2\x2\x4EF\x4F0\x3\x2\x2"+ + "\x2\x4F0\x4F1\x3\x2\x2\x2\x4F1\x4F3\a\xD2\x2\x2\x4F2\x4F4\x5\x1BA\xDE"+ + "\x2\x4F3\x4F2\x3\x2\x2\x2\x4F3\x4F4\x3\x2\x2\x2\x4F4\x4F5\x3\x2\x2\x2"+ + "\x4F5\x4F7\x5\x176\xBC\x2\x4F6\x4EF\x3\x2\x2\x2\x4F6\x4F7\x3\x2\x2\x2"+ + "\x4F7\x4F8\x3\x2\x2\x2\x4F8\x4F9\x5\x1A4\xD3\x2\x4F9\xAD\x3\x2\x2\x2\x4FA"+ + "\x4FB\a\x64\x2\x2\x4FB\xAF\x3\x2\x2\x2\x4FC\x4FD\ag\x2\x2\x4FD\x4FE\x5"+ + "\x1BA\xDE\x2\x4FE\x509\x5\x176\xBC\x2\x4FF\x501\x5\x1BA\xDE\x2\x500\x4FF"+ + "\x3\x2\x2\x2\x500\x501\x3\x2\x2\x2\x501\x502\x3\x2\x2\x2\x502\x504\a)"+ + "\x2\x2\x503\x505\x5\x1BA\xDE\x2\x504\x503\x3\x2\x2\x2\x504\x505\x3\x2"+ + "\x2\x2\x505\x506\x3\x2\x2\x2\x506\x508\x5\x176\xBC\x2\x507\x500\x3\x2"+ + "\x2\x2\x508\x50B\x3\x2\x2\x2\x509\x507\x3\x2\x2\x2\x509\x50A\x3\x2\x2"+ + "\x2\x50A\xB1\x3\x2\x2\x2\x50B\x509\x3\x2\x2\x2\x50C\x50D\ah\x2\x2\x50D"+ + "\x50E\x5\x1BA\xDE\x2\x50E\x50F\x5\x176\xBC\x2\x50F\xB3\x3\x2\x2\x2\x510"+ + "\x511\x5\x174\xBB\x2\x511\x512\x5\x1BA\xDE\x2\x512\x514\x3\x2\x2\x2\x513"+ + "\x510\x3\x2\x2\x2\x513\x514\x3\x2\x2\x2\x514\x515\x3\x2\x2\x2\x515\x516"+ + "\ai\x2\x2\x516\x517\x5\x1BA\xDE\x2\x517\x519\x5\x152\xAA\x2\x518\x51A"+ + "\x5\x1BA\xDE\x2\x519\x518\x3\x2\x2\x2\x519\x51A\x3\x2\x2\x2\x51A\x51B"+ + "\x3\x2\x2\x2\x51B\x51C\x5\x8EH\x2\x51C\xB5\x3\x2\x2\x2\x51D\x51E\t\v\x2"+ + "\x2\x51E\xB7\x3\x2\x2\x2\x51F\x520\aq\x2\x2\x520\x521\x5\x1BA\xDE\x2\x521"+ + "\x522\aX\x2\x2\x522\x523\x5\x1BA\xDE\x2\x523\x524\x5\x176\xBC\x2\x524"+ + "\x525\x5\x1BA\xDE\x2\x525\x526\az\x2\x2\x526\x527\x5\x1BA\xDE\x2\x527"+ "\x528\x5\x176\xBC\x2\x528\x529\x5\x1A4\xD3\x2\x529\x52A\x5\x1E\x10\x2"+ - "\x52A\x52E\a\x8F\x2\x2\x52B\x52C\x5\x1BA\xDE\x2\x52C\x52D\x5\x176\xBC"+ + "\x52A\x52E\a\x8D\x2\x2\x52B\x52C\x5\x1BA\xDE\x2\x52C\x52D\x5\x176\xBC"+ "\x2\x52D\x52F\x3\x2\x2\x2\x52E\x52B\x3\x2\x2\x2\x52E\x52F\x3\x2\x2\x2"+ - "\x52F\xB9\x3\x2\x2\x2\x530\x531\as\x2\x2\x531\x532\x5\x1BA\xDE\x2\x532"+ - "\x533\x5\x176\xBC\x2\x533\x534\x5\x1BA\xDE\x2\x534\x535\a\xC2\x2\x2\x535"+ + "\x52F\xB9\x3\x2\x2\x2\x530\x531\aq\x2\x2\x531\x532\x5\x1BA\xDE\x2\x532"+ + "\x533\x5\x176\xBC\x2\x533\x534\x5\x1BA\xDE\x2\x534\x535\a\xC0\x2\x2\x535"+ "\x536\x5\x1BA\xDE\x2\x536\x53C\x5\x176\xBC\x2\x537\x538\x5\x1BA\xDE\x2"+ - "\x538\x539\a\xBB\x2\x2\x539\x53A\x5\x1BA\xDE\x2\x53A\x53B\x5\x176\xBC"+ + "\x538\x539\a\xB9\x2\x2\x539\x53A\x5\x1BA\xDE\x2\x53A\x53B\x5\x176\xBC"+ "\x2\x53B\x53D\x3\x2\x2\x2\x53C\x537\x3\x2\x2\x2\x53C\x53D\x3\x2\x2\x2"+ "\x53D\x53E\x3\x2\x2\x2\x53E\x53F\x5\x1A4\xD3\x2\x53F\x540\x5\x1E\x10\x2"+ - "\x540\x544\a\x8F\x2\x2\x541\x542\x5\x1BA\xDE\x2\x542\x543\x5\x176\xBC"+ + "\x540\x544\a\x8D\x2\x2\x541\x542\x5\x1BA\xDE\x2\x542\x543\x5\x176\xBC"+ "\x2\x543\x545\x3\x2\x2\x2\x544\x541\x3\x2\x2\x2\x544\x545\x3\x2\x2\x2"+ "\x545\xBB\x3\x2\x2\x2\x546\x547\x5\x174\xBB\x2\x547\x548\x5\x1BA\xDE\x2"+ "\x548\x54A\x3\x2\x2\x2\x549\x546\x3\x2\x2\x2\x549\x54A\x3\x2\x2\x2\x54A"+ - "\x54D\x3\x2\x2\x2\x54B\x54C\a\xBA\x2\x2\x54C\x54E\x5\x1BA\xDE\x2\x54D"+ + "\x54D\x3\x2\x2\x2\x54B\x54C\a\xB8\x2\x2\x54C\x54E\x5\x1BA\xDE\x2\x54D"+ "\x54B\x3\x2\x2\x2\x54D\x54E\x3\x2\x2\x2\x54E\x54F\x3\x2\x2\x2\x54F\x551"+ - "\at\x2\x2\x550\x552\x5\x1BA\xDE\x2\x551\x550\x3\x2\x2\x2\x551\x552\x3"+ + "\ar\x2\x2\x550\x552\x5\x1BA\xDE\x2\x551\x550\x3\x2\x2\x2\x551\x552\x3"+ "\x2\x2\x2\x552\x553\x3\x2\x2\x2\x553\x558\x5\xBE`\x2\x554\x556\x5\x1BA"+ "\xDE\x2\x555\x554\x3\x2\x2\x2\x555\x556\x3\x2\x2\x2\x556\x557\x3\x2\x2"+ "\x2\x557\x559\x5\x8EH\x2\x558\x555\x3\x2\x2\x2\x558\x559\x3\x2\x2\x2\x559"+ "\x55E\x3\x2\x2\x2\x55A\x55C\x5\x1BA\xDE\x2\x55B\x55A\x3\x2\x2\x2\x55B"+ "\x55C\x3\x2\x2\x2\x55C\x55D\x3\x2\x2\x2\x55D\x55F\x5\x15E\xB0\x2\x55E"+ "\x55B\x3\x2\x2\x2\x55E\x55F\x3\x2\x2\x2\x55F\x560\x3\x2\x2\x2\x560\x561"+ - "\x5\x1A4\xD3\x2\x561\x562\x5\x1E\x10\x2\x562\x563\a_\x2\x2\x563\xBD\x3"+ - "\x2\x2\x2\x564\x565\x5\x152\xAA\x2\x565\xBF\x3\x2\x2\x2\x566\x567\aw\x2"+ + "\x5\x1A4\xD3\x2\x561\x562\x5\x1E\x10\x2\x562\x563\a]\x2\x2\x563\xBD\x3"+ + "\x2\x2\x2\x564\x565\x5\x152\xAA\x2\x565\xBF\x3\x2\x2\x2\x566\x567\au\x2"+ "\x2\x567\x568\x5\x1BA\xDE\x2\x568\x569\x5\x176\xBC\x2\x569\xC1\x3\x2\x2"+ - "\x2\x56A\x56B\ax\x2\x2\x56B\x56C\x5\x1BA\xDE\x2\x56C\x56D\x5\x176\xBC"+ - "\x2\x56D\xC3\x3\x2\x2\x2\x56E\x56F\ay\x2\x2\x56F\x570\x5\x1BA\xDE\x2\x570"+ - "\x571\x5\xD6l\x2\x571\x572\x5\x1BA\xDE\x2\x572\x573\a\xC1\x2\x2\x573\x574"+ + "\x2\x56A\x56B\av\x2\x2\x56B\x56C\x5\x1BA\xDE\x2\x56C\x56D\x5\x176\xBC"+ + "\x2\x56D\xC3\x3\x2\x2\x2\x56E\x56F\aw\x2\x2\x56F\x570\x5\x1BA\xDE\x2\x570"+ + "\x571\x5\xD6l\x2\x571\x572\x5\x1BA\xDE\x2\x572\x573\a\xBF\x2\x2\x573\x574"+ "\x5\x1A4\xD3\x2\x574\x578\x5\x1E\x10\x2\x575\x577\x5\xC6\x64\x2\x576\x575"+ "\x3\x2\x2\x2\x577\x57A\x3\x2\x2\x2\x578\x576\x3\x2\x2\x2\x578\x579\x3"+ "\x2\x2\x2\x579\x57C\x3\x2\x2\x2\x57A\x578\x3\x2\x2\x2\x57B\x57D\x5\xC8"+ "\x65\x2\x57C\x57B\x3\x2\x2\x2\x57C\x57D\x3\x2\x2\x2\x57D\x57E\x3\x2\x2"+ - "\x2\x57E\x57F\a`\x2\x2\x57F\xC5\x3\x2\x2\x2\x580\x581\a\\\x2\x2\x581\x582"+ + "\x2\x57E\x57F\a^\x2\x2\x57F\xC5\x3\x2\x2\x2\x580\x581\aZ\x2\x2\x581\x582"+ "\x5\x1BA\xDE\x2\x582\x583\x5\xD6l\x2\x583\x584\x5\x1BA\xDE\x2\x584\x585"+ - "\a\xC1\x2\x2\x585\x586\x5\x1A4\xD3\x2\x586\x587\x5\x1E\x10\x2\x587\x593"+ - "\x3\x2\x2\x2\x588\x589\a\\\x2\x2\x589\x58A\x5\x1BA\xDE\x2\x58A\x58B\x5"+ - "\xD6l\x2\x58B\x58C\x5\x1BA\xDE\x2\x58C\x58E\a\xC1\x2\x2\x58D\x58F\x5\x1BA"+ + "\a\xBF\x2\x2\x585\x586\x5\x1A4\xD3\x2\x586\x587\x5\x1E\x10\x2\x587\x593"+ + "\x3\x2\x2\x2\x588\x589\aZ\x2\x2\x589\x58A\x5\x1BA\xDE\x2\x58A\x58B\x5"+ + "\xD6l\x2\x58B\x58C\x5\x1BA\xDE\x2\x58C\x58E\a\xBF\x2\x2\x58D\x58F\x5\x1BA"+ "\xDE\x2\x58E\x58D\x3\x2\x2\x2\x58E\x58F\x3\x2\x2\x2\x58F\x590\x3\x2\x2"+ "\x2\x590\x591\x5\x1E\x10\x2\x591\x593\x3\x2\x2\x2\x592\x580\x3\x2\x2\x2"+ - "\x592\x588\x3\x2\x2\x2\x593\xC7\x3\x2\x2\x2\x594\x595\a[\x2\x2\x595\x596"+ + "\x592\x588\x3\x2\x2\x2\x593\xC7\x3\x2\x2\x2\x594\x595\aY\x2\x2\x595\x596"+ "\x5\x1A4\xD3\x2\x596\x597\x5\x1E\x10\x2\x597\xC9\x3\x2\x2\x2\x598\x59B"+ "\x5\xCCg\x2\x599\x59B\x5\xCEh\x2\x59A\x598\x3\x2\x2\x2\x59A\x599\x3\x2"+ - "\x2\x2\x59B\xCB\x3\x2\x2\x2\x59C\x59E\ay\x2\x2\x59D\x59F\x5\x1BA\xDE\x2"+ + "\x2\x2\x59B\xCB\x3\x2\x2\x2\x59C\x59E\aw\x2\x2\x59D\x59F\x5\x1BA\xDE\x2"+ "\x59E\x59D\x3\x2\x2\x2\x59E\x59F\x3\x2\x2\x2\x59F\x5A0\x3\x2\x2\x2\x5A0"+ "\x5A2\x5\xD6l\x2\x5A1\x5A3\x5\x1BA\xDE\x2\x5A2\x5A1\x3\x2\x2\x2\x5A2\x5A3"+ - "\x3\x2\x2\x2\x5A3\x5A4\x3\x2\x2\x2\x5A4\x5A6\a\xC1\x2\x2\x5A5\x5A7\x5"+ + "\x3\x2\x2\x2\x5A3\x5A4\x3\x2\x2\x2\x5A4\x5A6\a\xBF\x2\x2\x5A5\x5A7\x5"+ "\x1BA\xDE\x2\x5A6\x5A5\x3\x2\x2\x2\x5A6\x5A7\x3\x2\x2\x2\x5A7\x5A8\x3"+ "\x2\x2\x2\x5A8\x5AC\x5\xD2j\x2\x5A9\x5AA\x5\x1BA\xDE\x2\x5AA\x5AB\x5\xD0"+ "i\x2\x5AB\x5AD\x3\x2\x2\x2\x5AC\x5A9\x3\x2\x2\x2\x5AC\x5AD\x3\x2\x2\x2"+ - "\x5AD\xCD\x3\x2\x2\x2\x5AE\x5B0\ay\x2\x2\x5AF\x5B1\x5\x1BA\xDE\x2\x5B0"+ + "\x5AD\xCD\x3\x2\x2\x2\x5AE\x5B0\aw\x2\x2\x5AF\x5B1\x5\x1BA\xDE\x2\x5B0"+ "\x5AF\x3\x2\x2\x2\x5B0\x5B1\x3\x2\x2\x2\x5B1\x5B2\x3\x2\x2\x2\x5B2\x5B4"+ "\x5\xD6l\x2\x5B3\x5B5\x5\x1BA\xDE\x2\x5B4\x5B3\x3\x2\x2\x2\x5B4\x5B5\x3"+ - "\x2\x2\x2\x5B5\x5B6\x3\x2\x2\x2\x5B6\x5B7\a\xC1\x2\x2\x5B7\x5B9\x5\x1A4"+ + "\x2\x2\x2\x5B5\x5B6\x3\x2\x2\x2\x5B6\x5B7\a\xBF\x2\x2\x5B7\x5B9\x5\x1A4"+ "\xD3\x2\x5B8\x5BA\x5\x1BA\xDE\x2\x5B9\x5B8\x3\x2\x2\x2\x5B9\x5BA\x3\x2"+ "\x2\x2\x5BA\x5BB\x3\x2\x2\x2\x5BB\x5BC\x5\xD0i\x2\x5BC\xCF\x3\x2\x2\x2"+ - "\x5BD\x5BF\a[\x2\x2\x5BE\x5C0\x5\x1BA\xDE\x2\x5BF\x5BE\x3\x2\x2\x2\x5BF"+ + "\x5BD\x5BF\aY\x2\x2\x5BE\x5C0\x5\x1BA\xDE\x2\x5BF\x5BE\x3\x2\x2\x2\x5BF"+ "\x5C0\x3\x2\x2\x2\x5C0\x5C2\x3\x2\x2\x2\x5C1\x5C3\x5\xD2j\x2\x5C2\x5C1"+ "\x3\x2\x2\x2\x5C2\x5C3\x3\x2\x2\x2\x5C3\xD1\x3\x2\x2\x2\x5C4\x5D1\x5\x16C"+ "\xB7\x2\x5C5\x5C7\x5\x1BA\xDE\x2\x5C6\x5C5\x3\x2\x2\x2\x5C6\x5C7\x3\x2"+ - "\x2\x2\x5C7\x5C8\x3\x2\x2\x2\x5C8\x5CA\a,\x2\x2\x5C9\x5CB\x5\x1BA\xDE"+ + "\x2\x2\x5C7\x5C8\x3\x2\x2\x2\x5C8\x5CA\a*\x2\x2\x5C9\x5CB\x5\x1BA\xDE"+ "\x2\x5CA\x5C9\x3\x2\x2\x2\x5CA\x5CB\x3\x2\x2\x2\x5CB\x5CD\x3\x2\x2\x2"+ "\x5CC\x5CE\x5\xD4k\x2\x5CD\x5CC\x3\x2\x2\x2\x5CD\x5CE\x3\x2\x2\x2\x5CE"+ "\x5D0\x3\x2\x2\x2\x5CF\x5C6\x3\x2\x2\x2\x5D0\x5D3\x3\x2\x2\x2\x5D1\x5CF"+ "\x3\x2\x2\x2\x5D1\x5D2\x3\x2\x2\x2\x5D2\x5EB\x3\x2\x2\x2\x5D3\x5D1\x3"+ - "\x2\x2\x2\x5D4\x5D6\a,\x2\x2\x5D5\x5D7\x5\x1BA\xDE\x2\x5D6\x5D5\x3\x2"+ + "\x2\x2\x2\x5D4\x5D6\a*\x2\x2\x5D5\x5D7\x5\x1BA\xDE\x2\x5D6\x5D5\x3\x2"+ "\x2\x2\x5D6\x5D7\x3\x2\x2\x2\x5D7\x5D9\x3\x2\x2\x2\x5D8\x5D4\x3\x2\x2"+ "\x2\x5D8\x5D9\x3\x2\x2\x2\x5D9\x5DA\x3\x2\x2\x2\x5DA\x5E7\x5\xD4k\x2\x5DB"+ "\x5DD\x5\x1BA\xDE\x2\x5DC\x5DB\x3\x2\x2\x2\x5DC\x5DD\x3\x2\x2\x2\x5DD"+ - "\x5DE\x3\x2\x2\x2\x5DE\x5E0\a,\x2\x2\x5DF\x5E1\x5\x1BA\xDE\x2\x5E0\x5DF"+ + "\x5DE\x3\x2\x2\x2\x5DE\x5E0\a*\x2\x2\x5DF\x5E1\x5\x1BA\xDE\x2\x5E0\x5DF"+ "\x3\x2\x2\x2\x5E0\x5E1\x3\x2\x2\x2\x5E1\x5E3\x3\x2\x2\x2\x5E2\x5E4\x5"+ "\xD4k\x2\x5E3\x5E2\x3\x2\x2\x2\x5E3\x5E4\x3\x2\x2\x2\x5E4\x5E6\x3\x2\x2"+ "\x2\x5E5\x5DC\x3\x2\x2\x2\x5E6\x5E9\x3\x2\x2\x2\x5E7\x5E5\x3\x2\x2\x2"+ "\x5E7\x5E8\x3\x2\x2\x2\x5E8\x5EB\x3\x2\x2\x2\x5E9\x5E7\x3\x2\x2\x2\x5EA"+ "\x5C4\x3\x2\x2\x2\x5EA\x5D8\x3\x2\x2\x2\x5EB\xD3\x3\x2\x2\x2\x5EC\x5ED"+ "\x5 \x11\x2\x5ED\xD5\x3\x2\x2\x2\x5EE\x5EF\x5\x176\xBC\x2\x5EF\xD7\x3"+ - "\x2\x2\x2\x5F0\x5F1\a{\x2\x2\x5F1\x5F2\x5\x1BA\xDE\x2\x5F2\x5F3\x5\x176"+ - "\xBC\x2\x5F3\xD9\x3\x2\x2\x2\x5F4\x5F5\a\x83\x2\x2\x5F5\x5F7\x5\x1BA\xDE"+ + "\x2\x2\x2\x5F0\x5F1\ay\x2\x2\x5F1\x5F2\x5\x1BA\xDE\x2\x5F2\x5F3\x5\x176"+ + "\xBC\x2\x5F3\xD9\x3\x2\x2\x2\x5F4\x5F5\a\x81\x2\x2\x5F5\x5F7\x5\x1BA\xDE"+ "\x2\x5F6\x5F4\x3\x2\x2\x2\x5F6\x5F7\x3\x2\x2\x2\x5F7\x5F8\x3\x2\x2\x2"+ "\x5F8\x5FA\x5\x182\xC2\x2\x5F9\x5FB\x5\x1BA\xDE\x2\x5FA\x5F9\x3\x2\x2"+ - "\x2\x5FA\x5FB\x3\x2\x2\x2\x5FB\x5FC\x3\x2\x2\x2\x5FC\x5FE\a\xD4\x2\x2"+ + "\x2\x5FA\x5FB\x3\x2\x2\x2\x5FB\x5FC\x3\x2\x2\x2\x5FC\x5FE\a\xD2\x2\x2"+ "\x5FD\x5FF\x5\x1BA\xDE\x2\x5FE\x5FD\x3\x2\x2\x2\x5FE\x5FF\x3\x2\x2\x2"+ "\x5FF\x600\x3\x2\x2\x2\x600\x601\x5\x176\xBC\x2\x601\xDB\x3\x2\x2\x2\x602"+ - "\x603\a\x8A\x2\x2\x603\x604\x5\x1BA\xDE\x2\x604\x606\x5\x176\xBC\x2\x605"+ + "\x603\a\x88\x2\x2\x603\x604\x5\x1BA\xDE\x2\x604\x606\x5\x176\xBC\x2\x605"+ "\x607\x5\x1BA\xDE\x2\x606\x605\x3\x2\x2\x2\x606\x607\x3\x2\x2\x2\x607"+ - "\x608\x3\x2\x2\x2\x608\x60A\a\xD4\x2\x2\x609\x60B\x5\x1BA\xDE\x2\x60A"+ + "\x608\x3\x2\x2\x2\x608\x60A\a\xD2\x2\x2\x609\x60B\x5\x1BA\xDE\x2\x60A"+ "\x609\x3\x2\x2\x2\x60A\x60B\x3\x2\x2\x2\x60B\x60C\x3\x2\x2\x2\x60C\x60D"+ "\x5\x176\xBC\x2\x60D\xDD\x3\x2\x2\x2\x60E\x60F\t\f\x2\x2\x60F\x618\x5"+ - "\x1BA\xDE\x2\x610\x611\ax\x2\x2\x611\x612\x5\x1BA\xDE\x2\x612\x613\x5"+ - "\x176\xBC\x2\x613\x619\x3\x2\x2\x2\x614\x615\a\xB1\x2\x2\x615\x616\x5"+ - "\x1BA\xDE\x2\x616\x617\a\x8F\x2\x2\x617\x619\x3\x2\x2\x2\x618\x610\x3"+ - "\x2\x2\x2\x618\x614\x3\x2\x2\x2\x619\xDF\x3\x2\x2\x2\x61A\x61B\a\x95\x2"+ + "\x1BA\xDE\x2\x610\x611\av\x2\x2\x611\x612\x5\x1BA\xDE\x2\x612\x613\x5"+ + "\x176\xBC\x2\x613\x619\x3\x2\x2\x2\x614\x615\a\xAF\x2\x2\x615\x616\x5"+ + "\x1BA\xDE\x2\x616\x617\a\x8D\x2\x2\x617\x619\x3\x2\x2\x2\x618\x610\x3"+ + "\x2\x2\x2\x618\x614\x3\x2\x2\x2\x619\xDF\x3\x2\x2\x2\x61A\x61B\a\x93\x2"+ "\x2\x61B\x61C\x5\x1BA\xDE\x2\x61C\x61D\x5\x176\xBC\x2\x61D\x61E\x5\x1BA"+ - "\xDE\x2\x61E\x61F\ax\x2\x2\x61F\x620\x5\x1BA\xDE\x2\x620\x62B\x5\x176"+ + "\xDE\x2\x61E\x61F\av\x2\x2\x61F\x620\x5\x1BA\xDE\x2\x620\x62B\x5\x176"+ "\xBC\x2\x621\x623\x5\x1BA\xDE\x2\x622\x621\x3\x2\x2\x2\x622\x623\x3\x2"+ - "\x2\x2\x623\x624\x3\x2\x2\x2\x624\x626\a+\x2\x2\x625\x627\x5\x1BA\xDE"+ + "\x2\x2\x623\x624\x3\x2\x2\x2\x624\x626\a)\x2\x2\x625\x627\x5\x1BA\xDE"+ "\x2\x626\x625\x3\x2\x2\x2\x626\x627\x3\x2\x2\x2\x627\x628\x3\x2\x2\x2"+ "\x628\x62A\x5\x176\xBC\x2\x629\x622\x3\x2\x2\x2\x62A\x62D\x3\x2\x2\x2"+ "\x62B\x629\x3\x2\x2\x2\x62B\x62C\x3\x2\x2\x2\x62C\xE1\x3\x2\x2\x2\x62D"+ - "\x62B\x3\x2\x2\x2\x62E\x62F\a\x95\x2\x2\x62F\x630\x5\x1BA\xDE\x2\x630"+ - "\x631\x5\x176\xBC\x2\x631\x632\x5\x1BA\xDE\x2\x632\x633\aw\x2\x2\x633"+ + "\x62B\x3\x2\x2\x2\x62E\x62F\a\x93\x2\x2\x62F\x630\x5\x1BA\xDE\x2\x630"+ + "\x631\x5\x176\xBC\x2\x631\x632\x5\x1BA\xDE\x2\x632\x633\au\x2\x2\x633"+ "\x634\x5\x1BA\xDE\x2\x634\x63F\x5\x176\xBC\x2\x635\x637\x5\x1BA\xDE\x2"+ "\x636\x635\x3\x2\x2\x2\x636\x637\x3\x2\x2\x2\x637\x638\x3\x2\x2\x2\x638"+ - "\x63A\a+\x2\x2\x639\x63B\x5\x1BA\xDE\x2\x63A\x639\x3\x2\x2\x2\x63A\x63B"+ + "\x63A\a)\x2\x2\x639\x63B\x5\x1BA\xDE\x2\x63A\x639\x3\x2\x2\x2\x63A\x63B"+ "\x3\x2\x2\x2\x63B\x63C\x3\x2\x2\x2\x63C\x63E\x5\x176\xBC\x2\x63D\x636"+ "\x3\x2\x2\x2\x63E\x641\x3\x2\x2\x2\x63F\x63D\x3\x2\x2\x2\x63F\x640\x3"+ "\x2\x2\x2\x640\xE3\x3\x2\x2\x2\x641\x63F\x3\x2\x2\x2\x642\x643\x5\x174"+ "\xBB\x2\x643\x644\x5\x1BA\xDE\x2\x644\x646\x3\x2\x2\x2\x645\x642\x3\x2"+ - "\x2\x2\x645\x646\x3\x2\x2\x2\x646\x649\x3\x2\x2\x2\x647\x648\a\xBA\x2"+ + "\x2\x2\x645\x646\x3\x2\x2\x2\x646\x649\x3\x2\x2\x2\x647\x648\a\xB8\x2"+ "\x2\x648\x64A\x5\x1BA\xDE\x2\x649\x647\x3\x2\x2\x2\x649\x64A\x3\x2\x2"+ - "\x2\x64A\x64B\x3\x2\x2\x2\x64B\x64C\a\xA4\x2\x2\x64C\x64D\x5\x1BA\xDE"+ + "\x2\x64A\x64B\x3\x2\x2\x2\x64B\x64C\a\xA2\x2\x2\x64C\x64D\x5\x1BA\xDE"+ "\x2\x64D\x652\x5\xBE`\x2\x64E\x650\x5\x1BA\xDE\x2\x64F\x64E\x3\x2\x2\x2"+ "\x64F\x650\x3\x2\x2\x2\x650\x651\x3\x2\x2\x2\x651\x653\x5\x8EH\x2\x652"+ "\x64F\x3\x2\x2\x2\x652\x653\x3\x2\x2\x2\x653\x657\x3\x2\x2\x2\x654\x655"+ "\x5\x1BA\xDE\x2\x655\x656\x5\x15E\xB0\x2\x656\x658\x3\x2\x2\x2\x657\x654"+ "\x3\x2\x2\x2\x657\x658\x3\x2\x2\x2\x658\x659\x3\x2\x2\x2\x659\x65A\x5"+ - "\x1A4\xD3\x2\x65A\x65B\x5\x1E\x10\x2\x65B\x65C\a\x61\x2\x2\x65C\xE5\x3"+ - "\x2\x2\x2\x65D\x65E\x5\x174\xBB\x2\x65E\x65F\x5\x1BA\xDE\x2\x65F\x661"+ - "\x3\x2\x2\x2\x660\x65D\x3\x2\x2\x2\x660\x661\x3\x2\x2\x2\x661\x664\x3"+ - "\x2\x2\x2\x662\x663\a\xBA\x2\x2\x663\x665\x5\x1BA\xDE\x2\x664\x662\x3"+ - "\x2\x2\x2\x664\x665\x3\x2\x2\x2\x665\x666\x3\x2\x2\x2\x666\x667\a\xA6"+ - "\x2\x2\x667\x668\x5\x1BA\xDE\x2\x668\x66D\x5\x11A\x8E\x2\x669\x66B\x5"+ - "\x1BA\xDE\x2\x66A\x669\x3\x2\x2\x2\x66A\x66B\x3\x2\x2\x2\x66B\x66C\x3"+ - "\x2\x2\x2\x66C\x66E\x5\x8EH\x2\x66D\x66A\x3\x2\x2\x2\x66D\x66E\x3\x2\x2"+ - "\x2\x66E\x66F\x3\x2\x2\x2\x66F\x670\x5\x1A4\xD3\x2\x670\x671\x5\x1E\x10"+ - "\x2\x671\x672\a\x61\x2\x2\x672\xE7\x3\x2\x2\x2\x673\x674\x5\x174\xBB\x2"+ - "\x674\x675\x5\x1BA\xDE\x2\x675\x677\x3\x2\x2\x2\x676\x673\x3\x2\x2\x2"+ - "\x676\x677\x3\x2\x2\x2\x677\x67A\x3\x2\x2\x2\x678\x679\a\xBA\x2\x2\x679"+ - "\x67B\x5\x1BA\xDE\x2\x67A\x678\x3\x2\x2\x2\x67A\x67B\x3\x2\x2\x2\x67B"+ - "\x67C\x3\x2\x2\x2\x67C\x67D\a\xA5\x2\x2\x67D\x67E\x5\x1BA\xDE\x2\x67E"+ - "\x683\x5\x11A\x8E\x2\x67F\x681\x5\x1BA\xDE\x2\x680\x67F\x3\x2\x2\x2\x680"+ - "\x681\x3\x2\x2\x2\x681\x682\x3\x2\x2\x2\x682\x684\x5\x8EH\x2\x683\x680"+ - "\x3\x2\x2\x2\x683\x684\x3\x2\x2\x2\x684\x685\x3\x2\x2\x2\x685\x686\x5"+ - "\x1A4\xD3\x2\x686\x687\x5\x1E\x10\x2\x687\x688\a\x61\x2\x2\x688\xE9\x3"+ - "\x2\x2\x2\x689\x68A\a\xAB\x2\x2\x68A\x68B\x5\x1BA\xDE\x2\x68B\x69A\x5"+ - "\x152\xAA\x2\x68C\x68E\x5\x1BA\xDE\x2\x68D\x68C\x3\x2\x2\x2\x68D\x68E"+ - "\x3\x2\x2\x2\x68E\x68F\x3\x2\x2\x2\x68F\x691\a\xD8\x2\x2\x690\x692\x5"+ - "\x1BA\xDE\x2\x691\x690\x3\x2\x2\x2\x691\x692\x3\x2\x2\x2\x692\x694\x3"+ - "\x2\x2\x2\x693\x695\x5\xECw\x2\x694\x693\x3\x2\x2\x2\x694\x695\x3\x2\x2"+ - "\x2\x695\x697\x3\x2\x2\x2\x696\x698\x5\x1BA\xDE\x2\x697\x696\x3\x2\x2"+ - "\x2\x697\x698\x3\x2\x2\x2\x698\x699\x3\x2\x2\x2\x699\x69B\a\xDF\x2\x2"+ - "\x69A\x68D\x3\x2\x2\x2\x69A\x69B\x3\x2\x2\x2\x69B\xEB\x3\x2\x2\x2\x69C"+ - "\x6A7\x5\xEEx\x2\x69D\x69F\x5\x1BA\xDE\x2\x69E\x69D\x3\x2\x2\x2\x69E\x69F"+ - "\x3\x2\x2\x2\x69F\x6A0\x3\x2\x2\x2\x6A0\x6A2\a+\x2\x2\x6A1\x6A3\x5\x1BA"+ - "\xDE\x2\x6A2\x6A1\x3\x2\x2\x2\x6A2\x6A3\x3\x2\x2\x2\x6A3\x6A4\x3\x2\x2"+ - "\x2\x6A4\x6A6\x5\xEEx\x2\x6A5\x69E\x3\x2\x2\x2\x6A6\x6A9\x3\x2\x2\x2\x6A7"+ - "\x6A5\x3\x2\x2\x2\x6A7\x6A8\x3\x2\x2\x2\x6A8\xED\x3\x2\x2\x2\x6A9\x6A7"+ - "\x3\x2\x2\x2\x6AA\x6AB\x5\x176\xBC\x2\x6AB\xEF\x3\x2\x2\x2\x6AC\x6AD\a"+ - "\xAE\x2\x2\x6AD\x6B0\x5\x1BA\xDE\x2\x6AE\x6AF\a\xA1\x2\x2\x6AF\x6B1\x5"+ - "\x1BA\xDE\x2\x6B0\x6AE\x3\x2\x2\x2\x6B0\x6B1\x3\x2\x2\x2\x6B1\x6B2\x3"+ - "\x2\x2\x2\x6B2\x6B3\x5\xF2z\x2\x6B3\xF1\x3\x2\x2\x2\x6B4\x6BF\x5\xF4{"+ - "\x2\x6B5\x6B7\x5\x1BA\xDE\x2\x6B6\x6B5\x3\x2\x2\x2\x6B6\x6B7\x3\x2\x2"+ - "\x2\x6B7\x6B8\x3\x2\x2\x2\x6B8\x6BA\a+\x2\x2\x6B9\x6BB\x5\x1BA\xDE\x2"+ - "\x6BA\x6B9\x3\x2\x2\x2\x6BA\x6BB\x3\x2\x2\x2\x6BB\x6BC\x3\x2\x2\x2\x6BC"+ - "\x6BE\x5\xF4{\x2\x6BD\x6B6\x3\x2\x2\x2\x6BE\x6C1\x3\x2\x2\x2\x6BF\x6BD"+ - "\x3\x2\x2\x2\x6BF\x6C0\x3\x2\x2\x2\x6C0\xF3\x3\x2\x2\x2\x6C1\x6BF\x3\x2"+ - "\x2\x2\x6C2\x6C6\x5\x176\xBC\x2\x6C3\x6C4\x5\x1BA\xDE\x2\x6C4\x6C5\x5"+ - "\x15E\xB0\x2\x6C5\x6C7\x3\x2\x2\x2\x6C6\x6C3\x3\x2\x2\x2\x6C6\x6C7\x3"+ - "\x2\x2\x2\x6C7\xF5\x3\x2\x2\x2\x6C8\x6C9\x5\xF8}\x2\x6C9\x6CB\a\xD8\x2"+ - "\x2\x6CA\x6CC\x5\x1BA\xDE\x2\x6CB\x6CA\x3\x2\x2\x2\x6CB\x6CC\x3\x2\x2"+ - "\x2\x6CC\x6CD\x3\x2\x2\x2\x6CD\x6CF\x5\x182\xC2\x2\x6CE\x6D0\x5\x1BA\xDE"+ - "\x2\x6CF\x6CE\x3\x2\x2\x2\x6CF\x6D0\x3\x2\x2\x2\x6D0\x6D1\x3\x2\x2\x2"+ - "\x6D1\x6D3\a+\x2\x2\x6D2\x6D4\x5\x1BA\xDE\x2\x6D3\x6D2\x3\x2\x2\x2\x6D3"+ - "\x6D4\x3\x2\x2\x2\x6D4\x6D5\x3\x2\x2\x2\x6D5\x6D7\x5\x182\xC2\x2\x6D6"+ - "\x6D8\x5\x1BA\xDE\x2\x6D7\x6D6\x3\x2\x2\x2\x6D7\x6D8\x3\x2\x2\x2\x6D8"+ - "\x6E1\x3\x2\x2\x2\x6D9\x6DB\a+\x2\x2\x6DA\x6DC\x5\x1BA\xDE\x2\x6DB\x6DA"+ - "\x3\x2\x2\x2\x6DB\x6DC\x3\x2\x2\x2\x6DC\x6DD\x3\x2\x2\x2\x6DD\x6DF\x5"+ - "\x182\xC2\x2\x6DE\x6E0\x5\x1BA\xDE\x2\x6DF\x6DE\x3\x2\x2\x2\x6DF\x6E0"+ - "\x3\x2\x2\x2\x6E0\x6E2\x3\x2\x2\x2\x6E1\x6D9\x3\x2\x2\x2\x6E1\x6E2\x3"+ - "\x2\x2\x2\x6E2\x6E3\x3\x2\x2\x2\x6E3\x6E5\a\xDF\x2\x2\x6E4\x6E6\x5\x1BA"+ - "\xDE\x2\x6E5\x6E4\x3\x2\x2\x2\x6E5\x6E6\x3\x2\x2\x2\x6E6\x6E7\x3\x2\x2"+ - "\x2\x6E7\x6E9\a\xD1\x2\x2\x6E8\x6EA\x5\x1BA\xDE\x2\x6E9\x6E8\x3\x2\x2"+ - "\x2\x6E9\x6EA\x3\x2\x2\x2\x6EA\x6EB\x3\x2\x2\x2\x6EB\x6EC\x5\x176\xBC"+ - "\x2\x6EC\xF7\x3\x2\x2\x2\x6ED\x6EE\t\r\x2\x2\x6EE\xF9\x3\x2\x2\x2\x6EF"+ - "\x6F0\x5\x176\xBC\x2\x6F0\xFB\x3\x2\x2\x2\x6F1\x6F2\a\x42\x2\x2\x6F2\x6F3"+ - "\x5\x1BA\xDE\x2\x6F3\x6F4\x5\x176\xBC\x2\x6F4\x6FC\x3\x2\x2\x2\x6F5\x6F9"+ - "\x5\x176\xBC\x2\x6F6\x6F7\x5\x1BA\xDE\x2\x6F7\x6F8\x5\x186\xC4\x2\x6F8"+ - "\x6FA\x3\x2\x2\x2\x6F9\x6F6\x3\x2\x2\x2\x6F9\x6FA\x3\x2\x2\x2\x6FA\x6FC"+ - "\x3\x2\x2\x2\x6FB\x6F1\x3\x2\x2\x2\x6FB\x6F5\x3\x2\x2\x2\x6FC\xFD\x3\x2"+ - "\x2\x2\x6FD\x703\a\xB1\x2\x2\x6FE\x701\x5\x1BA\xDE\x2\x6FF\x702\a\x8F"+ - "\x2\x2\x700\x702\x5\x176\xBC\x2\x701\x6FF\x3\x2\x2\x2\x701\x700\x3\x2"+ - "\x2\x2\x702\x704\x3\x2\x2\x2\x703\x6FE\x3\x2\x2\x2\x703\x704\x3\x2\x2"+ - "\x2\x704\xFF\x3\x2\x2\x2\x705\x706\a\xB2\x2\x2\x706\x101\x3\x2\x2\x2\x707"+ - "\x708\a\xB3\x2\x2\x708\x709\x5\x1BA\xDE\x2\x709\x70B\x5\x176\xBC\x2\x70A"+ - "\x70C\x5\x1BA\xDE\x2\x70B\x70A\x3\x2\x2\x2\x70B\x70C\x3\x2\x2\x2\x70C"+ - "\x70D\x3\x2\x2\x2\x70D\x70F\a\xD4\x2\x2\x70E\x710\x5\x1BA\xDE\x2\x70F"+ - "\x70E\x3\x2\x2\x2\x70F\x710\x3\x2\x2\x2\x710\x711\x3\x2\x2\x2\x711\x712"+ - "\x5\x176\xBC\x2\x712\x103\x3\x2\x2\x2\x713\x714\a\xBC\x2\x2\x714\x105"+ - "\x3\x2\x2\x2\x715\x716\a\x8E\x2\x2\x716\x717\x5\x1BA\xDE\x2\x717\x718"+ - "\x5\x176\xBC\x2\x718\x719\x5\x1BA\xDE\x2\x719\x71A\a;\x2\x2\x71A\x71B"+ - "\x5\x1BA\xDE\x2\x71B\x71C\x5\x176\xBC\x2\x71C\x107\x3\x2\x2\x2\x71D\x71F"+ - "\a\xB5\x2\x2\x71E\x720\x5\x1BA\xDE\x2\x71F\x71E\x3\x2\x2\x2\x71F\x720"+ - "\x3\x2\x2\x2\x720\x721\x3\x2\x2\x2\x721\x723\a\x43\x2\x2\x722\x724\x5"+ - "\x1BA\xDE\x2\x723\x722\x3\x2\x2\x2\x723\x724\x3\x2\x2\x2\x724\x725\x3"+ - "\x2\x2\x2\x725\x726\x5\x10A\x86\x2\x726\x72A\x5\x1A4\xD3\x2\x727\x729"+ - "\x5\x10C\x87\x2\x728\x727\x3\x2\x2\x2\x729\x72C\x3\x2\x2\x2\x72A\x728"+ - "\x3\x2\x2\x2\x72A\x72B\x3\x2\x2\x2\x72B\x72E\x3\x2\x2\x2\x72C\x72A\x3"+ - "\x2\x2\x2\x72D\x72F\x5\x10E\x88\x2\x72E\x72D\x3\x2\x2\x2\x72E\x72F\x3"+ - "\x2\x2\x2\x72F\x730\x3\x2\x2\x2\x730\x731\a\x62\x2\x2\x731\x109\x3\x2"+ - "\x2\x2\x732\x733\x5\x176\xBC\x2\x733\x10B\x3\x2\x2\x2\x734\x735\a\x43"+ - "\x2\x2\x735\x736\x5\x1BA\xDE\x2\x736\x741\x5\x110\x89\x2\x737\x739\x5"+ - "\x1BA\xDE\x2\x738\x737\x3\x2\x2\x2\x738\x739\x3\x2\x2\x2\x739\x73A\x3"+ - "\x2\x2\x2\x73A\x73C\a+\x2\x2\x73B\x73D\x5\x1BA\xDE\x2\x73C\x73B\x3\x2"+ - "\x2\x2\x73C\x73D\x3\x2\x2\x2\x73D\x73E\x3\x2\x2\x2\x73E\x740\x5\x110\x89"+ - "\x2\x73F\x738\x3\x2\x2\x2\x740\x743\x3\x2\x2\x2\x741\x73F\x3\x2\x2\x2"+ - "\x741\x742\x3\x2\x2\x2\x742\x744\x3\x2\x2\x2\x743\x741\x3\x2\x2\x2\x744"+ - "\x745\x5\x1A4\xD3\x2\x745\x746\x5\x1E\x10\x2\x746\x10D\x3\x2\x2\x2\x747"+ - "\x749\a\x43\x2\x2\x748\x74A\x5\x1BA\xDE\x2\x749\x748\x3\x2\x2\x2\x749"+ - "\x74A\x3\x2\x2\x2\x74A\x74B\x3\x2\x2\x2\x74B\x74C\a[\x2\x2\x74C\x74D\x5"+ - "\x1A4\xD3\x2\x74D\x74E\x5\x1E\x10\x2\x74E\x10F\x3\x2\x2\x2\x74F\x751\a"+ - "~\x2\x2\x750\x752\x5\x1BA\xDE\x2\x751\x750\x3\x2\x2\x2\x751\x752\x3\x2"+ - "\x2\x2\x752\x754\x3\x2\x2\x2\x753\x74F\x3\x2\x2\x2\x753\x754\x3\x2\x2"+ - "\x2\x754\x755\x3\x2\x2\x2\x755\x757\x5\x162\xB2\x2\x756\x758\x5\x1BA\xDE"+ - "\x2\x757\x756\x3\x2\x2\x2\x757\x758\x3\x2\x2\x2\x758\x759\x3\x2\x2\x2"+ - "\x759\x75A\x5\x176\xBC\x2\x75A\x763\x3\x2\x2\x2\x75B\x75C\x5\x112\x8A"+ - "\x2\x75C\x75D\x5\x1BA\xDE\x2\x75D\x75E\a\xC2\x2\x2\x75E\x75F\x5\x1BA\xDE"+ - "\x2\x75F\x760\x5\x114\x8B\x2\x760\x763\x3\x2\x2\x2\x761\x763\x5\x176\xBC"+ - "\x2\x762\x753\x3\x2\x2\x2\x762\x75B\x3\x2\x2\x2\x762\x761\x3\x2\x2\x2"+ - "\x763\x111\x3\x2\x2\x2\x764\x765\x5\x176\xBC\x2\x765\x113\x3\x2\x2\x2"+ - "\x766\x767\x5\x176\xBC\x2\x767\x115\x3\x2\x2\x2\x768\x769\a\xB6\x2\x2"+ - "\x769\x76A\x5\x1BA\xDE\x2\x76A\x76C\x5\x182\xC2\x2\x76B\x76D\x5\x1BA\xDE"+ - "\x2\x76C\x76B\x3\x2\x2\x2\x76C\x76D\x3\x2\x2\x2\x76D\x76E\x3\x2\x2\x2"+ - "\x76E\x770\a\xD4\x2\x2\x76F\x771\x5\x1BA\xDE\x2\x770\x76F\x3\x2\x2\x2"+ - "\x770\x771\x3\x2\x2\x2\x771\x772\x3\x2\x2\x2\x772\x773\x5\x176\xBC\x2"+ - "\x773\x117\x3\x2\x2\x2\x774\x775\x5\x174\xBB\x2\x775\x776\x5\x1BA\xDE"+ - "\x2\x776\x778\x3\x2\x2\x2\x777\x774\x3\x2\x2\x2\x777\x778\x3\x2\x2\x2"+ - "\x778\x77B\x3\x2\x2\x2\x779\x77A\a\xBA\x2\x2\x77A\x77C\x5\x1BA\xDE\x2"+ - "\x77B\x779\x3\x2\x2\x2\x77B\x77C\x3\x2\x2\x2\x77C\x77D\x3\x2\x2\x2\x77D"+ - "\x77F\a\xBE\x2\x2\x77E\x780\x5\x1BA\xDE\x2\x77F\x77E\x3\x2\x2\x2\x77F"+ - "\x780\x3\x2\x2\x2\x780\x781\x3\x2\x2\x2\x781\x786\x5\x11A\x8E\x2\x782"+ - "\x784\x5\x1BA\xDE\x2\x783\x782\x3\x2\x2\x2\x783\x784\x3\x2\x2\x2\x784"+ - "\x785\x3\x2\x2\x2\x785\x787\x5\x8EH\x2\x786\x783\x3\x2\x2\x2\x786\x787"+ - "\x3\x2\x2\x2\x787\x788\x3\x2\x2\x2\x788\x789\x5\x1A4\xD3\x2\x789\x78A"+ - "\x5\x1E\x10\x2\x78A\x78B\a\x63\x2\x2\x78B\x119\x3\x2\x2\x2\x78C\x78D\x5"+ - "\x152\xAA\x2\x78D\x11B\x3\x2\x2\x2\x78E\x78F\t\xE\x2\x2\x78F\x791\x5\x1BA"+ - "\xDE\x2\x790\x78E\x3\x2\x2\x2\x790\x791\x3\x2\x2\x2\x791\x792\x3\x2\x2"+ - "\x2\x792\x793\x5\x120\x91\x2\x793\x11D\x3\x2\x2\x2\x794\x795\a\xA3\x2"+ - "\x2\x795\x796\x5\x1BA\xDE\x2\x796\x797\x5\x120\x91\x2\x797\x11F\x3\x2"+ - "\x2\x2\x798\x799\a\xC4\x2\x2\x799\x79A\x5\x1BA\xDE\x2\x79A\x79B\x5\x154"+ - "\xAB\x2\x79B\x79C\x5\x1A4\xD3\x2\x79C\x79D\x5\x122\x92\x2\x79D\x79E\x5"+ - "\x1A4\xD3\x2\x79E\x79F\a\x64\x2\x2\x79F\x121\x3\x2\x2\x2\x7A0\x7A6\x5"+ - "\x124\x93\x2\x7A1\x7A2\x5\x1A4\xD3\x2\x7A2\x7A3\x5\x124\x93\x2\x7A3\x7A5"+ - "\x3\x2\x2\x2\x7A4\x7A1\x3\x2\x2\x2\x7A5\x7A8\x3\x2\x2\x2\x7A6\x7A4\x3"+ - "\x2\x2\x2\x7A6\x7A7\x3\x2\x2\x2\x7A7\x123\x3\x2\x2\x2\x7A8\x7A6\x3\x2"+ - "\x2\x2\x7A9\x7AC\x5\x128\x95\x2\x7AA\x7AC\x5\x126\x94\x2\x7AB\x7A9\x3"+ - "\x2\x2\x2\x7AB\x7AA\x3\x2\x2\x2\x7AC\x125\x3\x2\x2\x2\x7AD\x7AF\x5\x154"+ - "\xAB\x2\x7AE\x7B0\x5\x1BA\xDE\x2\x7AF\x7AE\x3\x2\x2\x2\x7AF\x7B0\x3\x2"+ - "\x2\x2\x7B0\x7B1\x3\x2\x2\x2\x7B1\x7B2\x5\x12A\x96\x2\x7B2\x127\x3\x2"+ - "\x2\x2\x7B3\x7B4\x5\x150\xA9\x2\x7B4\x7B5\x5\x1BA\xDE\x2\x7B5\x7B6\x5"+ - "\x15E\xB0\x2\x7B6\x129\x3\x2\x2\x2\x7B7\x7B8\x5\x12C\x97\x2\x7B8\x7B9"+ - "\x5\x1BA\xDE\x2\x7B9\x7BB\x3\x2\x2\x2\x7BA\x7B7\x3\x2\x2\x2\x7BA\x7BB"+ - "\x3\x2\x2\x2\x7BB\x7BC\x3\x2\x2\x2\x7BC\x7BD\x5\x15E\xB0\x2\x7BD\x12B"+ - "\x3\x2\x2\x2\x7BE\x7C0\a\xD8\x2\x2\x7BF\x7C1\x5\x1BA\xDE\x2\x7C0\x7BF"+ - "\x3\x2\x2\x2\x7C0\x7C1\x3\x2\x2\x2\x7C1\x7C3\x3\x2\x2\x2\x7C2\x7C4\x5"+ - "\x12E\x98\x2\x7C3\x7C2\x3\x2\x2\x2\x7C3\x7C4\x3\x2\x2\x2\x7C4\x7C6\x3"+ - "\x2\x2\x2\x7C5\x7C7\x5\x1BA\xDE\x2\x7C6\x7C5\x3\x2\x2\x2\x7C6\x7C7\x3"+ - "\x2\x2\x2\x7C7\x7C8\x3\x2\x2\x2\x7C8\x7C9\a\xDF\x2\x2\x7C9\x12D\x3\x2"+ - "\x2\x2\x7CA\x7D5\x5\x130\x99\x2\x7CB\x7CD\x5\x1BA\xDE\x2\x7CC\x7CB\x3"+ - "\x2\x2\x2\x7CC\x7CD\x3\x2\x2\x2\x7CD\x7CE\x3\x2\x2\x2\x7CE\x7D0\a+\x2"+ - "\x2\x7CF\x7D1\x5\x1BA\xDE\x2\x7D0\x7CF\x3\x2\x2\x2\x7D0\x7D1\x3\x2\x2"+ - "\x2\x7D1\x7D2\x3\x2\x2\x2\x7D2\x7D4\x5\x130\x99\x2\x7D3\x7CC\x3\x2\x2"+ - "\x2\x7D4\x7D7\x3\x2\x2\x2\x7D5\x7D3\x3\x2\x2\x2\x7D5\x7D6\x3\x2\x2\x2"+ - "\x7D6\x12F\x3\x2\x2\x2\x7D7\x7D5\x3\x2\x2\x2\x7D8\x7DA\x5\x132\x9A\x2"+ - "\x7D9\x7DB\x5\x1BA\xDE\x2\x7DA\x7D9\x3\x2\x2\x2\x7DA\x7DB\x3\x2\x2\x2"+ - "\x7DB\x7DD\x3\x2\x2\x2\x7DC\x7D8\x3\x2\x2\x2\x7DC\x7DD\x3\x2\x2\x2\x7DD"+ - "\x7DE\x3\x2\x2\x2\x7DE\x7DF\x5\x134\x9B\x2\x7DF\x131\x3\x2\x2\x2\x7E0"+ - "\x7E2\x5\x136\x9C\x2\x7E1\x7E3\x5\x1BA\xDE\x2\x7E2\x7E1\x3\x2\x2\x2\x7E2"+ - "\x7E3\x3\x2\x2\x2\x7E3\x7E4\x3\x2\x2\x2\x7E4\x7E5\a\xC2\x2\x2\x7E5\x133"+ - "\x3\x2\x2\x2\x7E6\x7E7\x5\x136\x9C\x2\x7E7\x135\x3\x2\x2\x2\x7E8\x7E9"+ - "\x5\x176\xBC\x2\x7E9\x137\x3\x2\x2\x2\x7EA\x7EE\aW\x2\x2\x7EB\x7EE\a\xBA"+ - "\x2\x2\x7EC\x7EE\x5\x174\xBB\x2\x7ED\x7EA\x3\x2\x2\x2\x7ED\x7EB\x3\x2"+ - "\x2\x2\x7ED\x7EC\x3\x2\x2\x2\x7EE\x7EF\x3\x2\x2\x2\x7EF\x7F2\x5\x1BA\xDE"+ - "\x2\x7F0\x7F1\a\xCE\x2\x2\x7F1\x7F3\x5\x1BA\xDE\x2\x7F2\x7F0\x3\x2\x2"+ - "\x2\x7F2\x7F3\x3\x2\x2\x2\x7F3\x7F4\x3\x2\x2\x2\x7F4\x7F5\x5\x13A\x9E"+ - "\x2\x7F5\x139\x3\x2\x2\x2\x7F6\x801\x5\x13C\x9F\x2\x7F7\x7F9\x5\x1BA\xDE"+ - "\x2\x7F8\x7F7\x3\x2\x2\x2\x7F8\x7F9\x3\x2\x2\x2\x7F9\x7FA\x3\x2\x2\x2"+ - "\x7FA\x7FC\a+\x2\x2\x7FB\x7FD\x5\x1BA\xDE\x2\x7FC\x7FB\x3\x2\x2\x2\x7FC"+ - "\x7FD\x3\x2\x2\x2\x7FD\x7FE\x3\x2\x2\x2\x7FE\x800\x5\x13C\x9F\x2\x7FF"+ - "\x7F8\x3\x2\x2\x2\x800\x803\x3\x2\x2\x2\x801\x7FF\x3\x2\x2\x2\x801\x802"+ - "\x3\x2\x2\x2\x802\x13B\x3\x2\x2\x2\x803\x801\x3\x2\x2\x2\x804\x816\x5"+ - "\x152\xAA\x2\x805\x807\x5\x1BA\xDE\x2\x806\x805\x3\x2\x2\x2\x806\x807"+ - "\x3\x2\x2\x2\x807\x808\x3\x2\x2\x2\x808\x80A\a\xD8\x2\x2\x809\x80B\x5"+ - "\x1BA\xDE\x2\x80A\x809\x3\x2\x2\x2\x80A\x80B\x3\x2\x2\x2\x80B\x810\x3"+ - "\x2\x2\x2\x80C\x80E\x5\x14C\xA7\x2\x80D\x80F\x5\x1BA\xDE\x2\x80E\x80D"+ - "\x3\x2\x2\x2\x80E\x80F\x3\x2\x2\x2\x80F\x811\x3\x2\x2\x2\x810\x80C\x3"+ - "\x2\x2\x2\x810\x811\x3\x2\x2\x2\x811\x812\x3\x2\x2\x2\x812\x814\a\xDF"+ - "\x2\x2\x813\x815\x5\x1BA\xDE\x2\x814\x813\x3\x2\x2\x2\x814\x815\x3\x2"+ - "\x2\x2\x815\x817\x3\x2\x2\x2\x816\x806\x3\x2\x2\x2\x816\x817\x3\x2\x2"+ - "\x2\x817\x81B\x3\x2\x2\x2\x818\x819\x5\x1BA\xDE\x2\x819\x81A\x5\x15E\xB0"+ - "\x2\x81A\x81C\x3\x2\x2\x2\x81B\x818\x3\x2\x2\x2\x81B\x81C\x3\x2\x2\x2"+ - "\x81C\x13D\x3\x2\x2\x2\x81D\x81E\a\xCB\x2\x2\x81E\x81F\x5\x1BA\xDE\x2"+ - "\x81F\x820\x5\x176\xBC\x2\x820\x821\x5\x1A4\xD3\x2\x821\x822\x5\x1E\x10"+ - "\x2\x822\x823\a\xCA\x2\x2\x823\x13F\x3\x2\x2\x2\x824\x825\a\xCD\x2\x2"+ - "\x825\x826\x5\x1BA\xDE\x2\x826\x827\x5\x176\xBC\x2\x827\x828\x5\x1A4\xD3"+ - "\x2\x828\x829\x5\x1E\x10\x2\x829\x82A\a\x65\x2\x2\x82A\x141\x3\x2\x2\x2"+ - "\x82B\x82C\x5\x176\xBC\x2\x82C\x831\x5\x1BA\xDE\x2\x82D\x82F\a\xBB\x2"+ - "\x2\x82E\x830\x5\x1BA\xDE\x2\x82F\x82E\x3\x2\x2\x2\x82F\x830\x3\x2\x2"+ - "\x2\x830\x832\x3\x2\x2\x2\x831\x82D\x3\x2\x2\x2\x831\x832\x3\x2\x2\x2"+ - "\x832\x833\x3\x2\x2\x2\x833\x834\x5\x148\xA5\x2\x834\x839\a\xDA\x2\x2"+ - "\x835\x837\a\xBB\x2\x2\x836\x838\x5\x1BA\xDE\x2\x837\x836\x3\x2\x2\x2"+ - "\x837\x838\x3\x2\x2\x2\x838\x83A\x3\x2\x2\x2\x839\x835\x3\x2\x2\x2\x839"+ - "\x83A\x3\x2\x2\x2\x83A\x83B\x3\x2\x2\x2\x83B\x83D\x5\x148\xA5\x2\x83C"+ - "\x83E\x5\x1BA\xDE\x2\x83D\x83C\x3\x2\x2\x2\x83D\x83E\x3\x2\x2\x2\x83E"+ - "\x844\x3\x2\x2\x2\x83F\x841\a+\x2\x2\x840\x842\x5\x1BA\xDE\x2\x841\x840"+ - "\x3\x2\x2\x2\x841\x842\x3\x2\x2\x2\x842\x843\x3\x2\x2\x2\x843\x845\x5"+ - "\x176\xBC\x2\x844\x83F\x3\x2\x2\x2\x844\x845\x3\x2\x2\x2\x845\x847\x3"+ - "\x2\x2\x2\x846\x848\x5\x1BA\xDE\x2\x847\x846\x3\x2\x2\x2\x847\x848\x3"+ - "\x2\x2\x2\x848\x84E\x3\x2\x2\x2\x849\x84B\a+\x2\x2\x84A\x84C\x5\x1BA\xDE"+ - "\x2\x84B\x84A\x3\x2\x2\x2\x84B\x84C\x3\x2\x2\x2\x84C\x84D\x3\x2\x2\x2"+ - "\x84D\x84F\x5\x14A\xA6\x2\x84E\x849\x3\x2\x2\x2\x84E\x84F\x3\x2\x2\x2"+ - "\x84F\x143\x3\x2\x2\x2\x850\x852\x5\x176\xBC\x2\x851\x853\x5\x1BA\xDE"+ - "\x2\x852\x851\x3\x2\x2\x2\x852\x853\x3\x2\x2\x2\x853\x854\x3\x2\x2\x2"+ - "\x854\x856\a/\x2\x2\x855\x857\x5\x1BA\xDE\x2\x856\x855\x3\x2\x2\x2\x856"+ - "\x857\x3\x2\x2\x2\x857\x859\x3\x2\x2\x2\x858\x850\x3\x2\x2\x2\x858\x859"+ - "\x3\x2\x2\x2\x859\x85A\x3\x2\x2\x2\x85A\x85B\a\xF\x2\x2\x85B\x860\x5\x1BA"+ - "\xDE\x2\x85C\x85E\a\xBB\x2\x2\x85D\x85F\x5\x1BA\xDE\x2\x85E\x85D\x3\x2"+ - "\x2\x2\x85E\x85F\x3\x2\x2\x2\x85F\x861\x3\x2\x2\x2\x860\x85C\x3\x2\x2"+ - "\x2\x860\x861\x3\x2\x2\x2\x861\x862\x3\x2\x2\x2\x862\x86B\x5\x148\xA5"+ - "\x2\x863\x865\x5\x1BA\xDE\x2\x864\x863\x3\x2\x2\x2\x864\x865\x3\x2\x2"+ - "\x2\x865\x866\x3\x2\x2\x2\x866\x868\a+\x2\x2\x867\x869\x5\x1BA\xDE\x2"+ - "\x868\x867\x3\x2\x2\x2\x868\x869\x3\x2\x2\x2\x869\x86A\x3\x2\x2\x2\x86A"+ - "\x86C\x5\x176\xBC\x2\x86B\x864\x3\x2\x2\x2\x86C\x86D\x3\x2\x2\x2\x86D"+ - "\x86B\x3\x2\x2\x2\x86D\x86E\x3\x2\x2\x2\x86E\x145\x3\x2\x2\x2\x86F\x871"+ - "\x5\x176\xBC\x2\x870\x872\x5\x1BA\xDE\x2\x871\x870\x3\x2\x2\x2\x871\x872"+ - "\x3\x2\x2\x2\x872\x873\x3\x2\x2\x2\x873\x875\a/\x2\x2\x874\x876\x5\x1BA"+ - "\xDE\x2\x875\x874\x3\x2\x2\x2\x875\x876\x3\x2\x2\x2\x876\x878\x3\x2\x2"+ - "\x2\x877\x86F\x3\x2\x2\x2\x877\x878\x3\x2\x2\x2\x878\x879\x3\x2\x2\x2"+ - "\x879\x87A\a(\x2\x2\x87A\x87B\x5\x1BA\xDE\x2\x87B\x87D\x5\x148\xA5\x2"+ - "\x87C\x87E\x5\x1BA\xDE\x2\x87D\x87C\x3\x2\x2\x2\x87D\x87E\x3\x2\x2\x2"+ - "\x87E\x87F\x3\x2\x2\x2\x87F\x881\a\xDA\x2\x2\x880\x882\x5\x1BA\xDE\x2"+ - "\x881\x880\x3\x2\x2\x2\x881\x882\x3\x2\x2\x2\x882\x883\x3\x2\x2\x2\x883"+ - "\x884\x5\x148\xA5\x2\x884\x147\x3\x2\x2\x2\x885\x887\a\xD8\x2\x2\x886"+ - "\x888\x5\x1BA\xDE\x2\x887\x886\x3\x2\x2\x2\x887\x888\x3\x2\x2\x2\x888"+ - "\x889\x3\x2\x2\x2\x889\x88B\x5\x176\xBC\x2\x88A\x88C\x5\x1BA\xDE\x2\x88B"+ - "\x88A\x3\x2\x2\x2\x88B\x88C\x3\x2\x2\x2\x88C\x88D\x3\x2\x2\x2\x88D\x88F"+ - "\a+\x2\x2\x88E\x890\x5\x1BA\xDE\x2\x88F\x88E\x3\x2\x2\x2\x88F\x890\x3"+ - "\x2\x2\x2\x890\x891\x3\x2\x2\x2\x891\x893\x5\x176\xBC\x2\x892\x894\x5"+ - "\x1BA\xDE\x2\x893\x892\x3\x2\x2\x2\x893\x894\x3\x2\x2\x2\x894\x895\x3"+ - "\x2\x2\x2\x895\x896\a\xDF\x2\x2\x896\x149\x3\x2\x2\x2\x897\x898\t\xF\x2"+ - "\x2\x898\x14B\x3\x2\x2\x2\x899\x8A4\x5\x14E\xA8\x2\x89A\x89C\x5\x1BA\xDE"+ - "\x2\x89B\x89A\x3\x2\x2\x2\x89B\x89C\x3\x2\x2\x2\x89C\x89D\x3\x2\x2\x2"+ - "\x89D\x89F\a+\x2\x2\x89E\x8A0\x5\x1BA\xDE\x2\x89F\x89E\x3\x2\x2\x2\x89F"+ - "\x8A0\x3\x2\x2\x2\x8A0\x8A1\x3\x2\x2\x2\x8A1\x8A3\x5\x14E\xA8\x2\x8A2"+ - "\x89B\x3\x2\x2\x2\x8A3\x8A6\x3\x2\x2\x2\x8A4\x8A2\x3\x2\x2\x2\x8A4\x8A5"+ - "\x3\x2\x2\x2\x8A5\x14D\x3\x2\x2\x2\x8A6\x8A4\x3\x2\x2\x2\x8A7\x8A8\x5"+ - "\x176\xBC\x2\x8A8\x8A9\x5\x1BA\xDE\x2\x8A9\x8AA\a\xC2\x2\x2\x8AA\x8AB"+ - "\x5\x1BA\xDE\x2\x8AB\x8AD\x3\x2\x2\x2\x8AC\x8A7\x3\x2\x2\x2\x8AC\x8AD"+ - "\x3\x2\x2\x2\x8AD\x8AE\x3\x2\x2\x2\x8AE\x8AF\x5\x176\xBC\x2\x8AF\x14F"+ - "\x3\x2\x2\x2\x8B0\x8B4\x5\x152\xAA\x2\x8B1\x8B4\x5\x1A0\xD1\x2\x8B2\x8B4"+ - "\x5\x19E\xD0\x2\x8B3\x8B0\x3\x2\x2\x2\x8B3\x8B1\x3\x2\x2\x2\x8B3\x8B2"+ - "\x3\x2\x2\x2\x8B4\x151\x3\x2\x2\x2\x8B5\x8B8\x5\x156\xAC\x2\x8B6\x8B8"+ - "\x5\x154\xAB\x2\x8B7\x8B5\x3\x2\x2\x2\x8B7\x8B6\x3\x2\x2\x2\x8B8\x153"+ - "\x3\x2\x2\x2\x8B9\x8BA\x5\x158\xAD\x2\x8BA\x155\x3\x2\x2\x2\x8BB\x8BC"+ - "\x5\x154\xAB\x2\x8BC\x8BD\x5\x172\xBA\x2\x8BD\x157\x3\x2\x2\x2\x8BE\x8C3"+ - "\a\xED\x2\x2\x8BF\x8C3\x5\x19C\xCF\x2\x8C0\x8C3\x5\x15A\xAE\x2\x8C1\x8C3"+ - "\a\a\x2\x2\x8C2\x8BE\x3\x2\x2\x2\x8C2\x8BF\x3\x2\x2\x2\x8C2\x8C0\x3\x2"+ - "\x2\x2\x8C2\x8C1\x3\x2\x2\x2\x8C3\x159\x3\x2\x2\x2\x8C4\x8C8\a\xE0\x2"+ - "\x2\x8C5\x8C7\x5\x15C\xAF\x2\x8C6\x8C5\x3\x2\x2\x2\x8C7\x8CA\x3\x2\x2"+ - "\x2\x8C8\x8C6\x3\x2\x2\x2\x8C8\x8C9\x3\x2\x2\x2\x8C9\x8CB\x3\x2\x2\x2"+ - "\x8CA\x8C8\x3\x2\x2\x2\x8CB\x8CC\a\xE1\x2\x2\x8CC\x15B\x3\x2\x2\x2\x8CD"+ - "\x8D0\n\x10\x2\x2\x8CE\x8D0\x5\x15A\xAE\x2\x8CF\x8CD\x3\x2\x2\x2\x8CF"+ - "\x8CE\x3\x2\x2\x2\x8D0\x15D\x3\x2\x2\x2\x8D1\x8D3\a;\x2\x2\x8D2\x8D4\x5"+ - "\x1BA\xDE\x2\x8D3\x8D2\x3\x2\x2\x2\x8D3\x8D4\x3\x2\x2\x2\x8D4\x8D7\x3"+ - "\x2\x2\x2\x8D5\x8D6\a\x90\x2\x2\x8D6\x8D8\x5\x1BA\xDE\x2\x8D7\x8D5\x3"+ - "\x2\x2\x2\x8D7\x8D8\x3\x2\x2\x2\x8D8\x8D9\x3\x2\x2\x2\x8D9\x8DE\x5\x170"+ - "\xB9\x2\x8DA\x8DC\x5\x1BA\xDE\x2\x8DB\x8DA\x3\x2\x2\x2\x8DB\x8DC\x3\x2"+ - "\x2\x2\x8DC\x8DD\x3\x2\x2\x2\x8DD\x8DF\x5\x166\xB4\x2\x8DE\x8DB\x3\x2"+ - "\x2\x2\x8DE\x8DF\x3\x2\x2\x2\x8DF\x15F\x3\x2\x2\x2\x8E0\x8E1\t\x11\x2"+ - "\x2\x8E1\x161\x3\x2\x2\x2\x8E2\x8E3\t\x12\x2\x2\x8E3\x163\x3\x2\x2\x2"+ - "\x8E4\x8FC\x5\x178\xBD\x2\x8E5\x8FC\x5\x182\xC2\x2\x8E6\x8FC\x5\x184\xC3"+ - "\x2\x8E7\x8E9\a\xD8\x2\x2\x8E8\x8EA\x5\x1BA\xDE\x2\x8E9\x8E8\x3\x2\x2"+ - "\x2\x8E9\x8EA\x3\x2\x2\x2\x8EA\x8EB\x3\x2\x2\x2\x8EB\x8ED\x5\x164\xB3"+ - "\x2\x8EC\x8EE\x5\x1BA\xDE\x2\x8ED\x8EC\x3\x2\x2\x2\x8ED\x8EE\x3\x2\x2"+ - "\x2\x8EE\x8EF\x3\x2\x2\x2\x8EF\x8F0\a\xDF\x2\x2\x8F0\x8FC\x3\x2\x2\x2"+ - "\x8F1\x8F2\a\xC5\x2\x2\x8F2\x8F3\x5\x1BA\xDE\x2\x8F3\x8F4\x5\x164\xB3"+ - "\x2\x8F4\x8FC\x3\x2\x2\x2\x8F5\x8F6\a\x90\x2\x2\x8F6\x8F7\x5\x1BA\xDE"+ - "\x2\x8F7\x8F8\x5\x164\xB3\x2\x8F8\x8FC\x3\x2\x2\x2\x8F9\x8FA\a\x30\x2"+ - "\x2\x8FA\x8FC\x5\x176\xBC\x2\x8FB\x8E4\x3\x2\x2\x2\x8FB\x8E5\x3\x2\x2"+ - "\x2\x8FB\x8E6\x3\x2\x2\x2\x8FB\x8E7\x3\x2\x2\x2\x8FB\x8F1\x3\x2\x2\x2"+ - "\x8FB\x8F5\x3\x2\x2\x2\x8FB\x8F9\x3\x2\x2\x2\x8FC\x165\x3\x2\x2\x2\x8FD"+ - "\x8FF\a\xDB\x2\x2\x8FE\x900\x5\x1BA\xDE\x2\x8FF\x8FE\x3\x2\x2\x2\x8FF"+ - "\x900\x3\x2\x2\x2\x900\x903\x3\x2\x2\x2\x901\x904\x5\x16E\xB8\x2\x902"+ - "\x904\x5\x158\xAD\x2\x903\x901\x3\x2\x2\x2\x903\x902\x3\x2\x2\x2\x904"+ - "\x167\x3\x2\x2\x2\x905\x908\x5\x16A\xB6\x2\x906\x908\x5\x16C\xB7\x2\x907"+ - "\x905\x3\x2\x2\x2\x907\x906\x3\x2\x2\x2\x908\x169\x3\x2\x2\x2\x909\x90B"+ - "\x5\x150\xA9\x2\x90A\x90C\x5\x1BA\xDE\x2\x90B\x90A\x3\x2\x2\x2\x90B\x90C"+ - "\x3\x2\x2\x2\x90C\x90D\x3\x2\x2\x2\x90D\x90E\a,\x2\x2\x90E\x16B\x3\x2"+ - "\x2\x2\x90F\x911\x5\x16E\xB8\x2\x910\x912\x5\x1BA\xDE\x2\x911\x910\x3"+ - "\x2\x2\x2\x911\x912\x3\x2\x2\x2\x912\x914\x3\x2\x2\x2\x913\x915\a,\x2"+ - "\x2\x914\x913\x3\x2\x2\x2\x914\x915\x3\x2\x2\x2\x915\x16D\x3\x2\x2\x2"+ - "\x916\x917\t\x13\x2\x2\x917\x16F\x3\x2\x2\x2\x918\x91B\x5\x160\xB1\x2"+ - "\x919\x91B\x5\x164\xB3\x2\x91A\x918\x3\x2\x2\x2\x91A\x919\x3\x2\x2\x2"+ - "\x91B\x924\x3\x2\x2\x2\x91C\x91E\x5\x1BA\xDE\x2\x91D\x91C\x3\x2\x2\x2"+ - "\x91D\x91E\x3\x2\x2\x2\x91E\x91F\x3\x2\x2\x2\x91F\x921\a\xD8\x2\x2\x920"+ - "\x922\x5\x1BA\xDE\x2\x921\x920\x3\x2\x2\x2\x921\x922\x3\x2\x2\x2\x922"+ - "\x923\x3\x2\x2\x2\x923\x925\a\xDF\x2\x2\x924\x91D\x3\x2\x2\x2\x924\x925"+ - "\x3\x2\x2\x2\x925\x171\x3\x2\x2\x2\x926\x927\t\x14\x2\x2\x927\x173\x3"+ - "\x2\x2\x2\x928\x929\t\x15\x2\x2\x929\x175\x3\x2\x2\x2\x92A\x92B\b\xBC"+ - "\x1\x2\x92B\x92C\a\xC5\x2\x2\x92C\x92D\x5\x1BA\xDE\x2\x92D\x92E\x5\x176"+ - "\xBC\x13\x92E\x950\x3\x2\x2\x2\x92F\x930\a\x90\x2\x2\x930\x931\x5\x1BA"+ - "\xDE\x2\x931\x932\x5\x176\xBC\x12\x932\x950\x3\x2\x2\x2\x933\x935\a\xDA"+ - "\x2\x2\x934\x936\x5\x1BA\xDE\x2\x935\x934\x3\x2\x2\x2\x935\x936\x3\x2"+ - "\x2\x2\x936\x937\x3\x2\x2\x2\x937\x950\x5\x176\xBC\x10\x938\x93A\a\x91"+ - "\x2\x2\x939\x93B\x5\x1BA\xDE\x2\x93A\x939\x3\x2\x2\x2\x93A\x93B\x3\x2"+ - "\x2\x2\x93B\x93C\x3\x2\x2\x2\x93C\x950\x5\x176\xBC\t\x93D\x93E\a\x30\x2"+ - "\x2\x93E\x950\x5\x176\xBC\x3\x93F\x941\x5\x1BA\xDE\x2\x940\x93F\x3\x2"+ - "\x2\x2\x940\x941\x3\x2\x2\x2\x941\x942\x3\x2\x2\x2\x942\x944\a\xD8\x2"+ - "\x2\x943\x945\x5\x1BA\xDE\x2\x944\x943\x3\x2\x2\x2\x944\x945\x3\x2\x2"+ - "\x2\x945\x946\x3\x2\x2\x2\x946\x948\x5\x176\xBC\x2\x947\x949\x5\x1BA\xDE"+ - "\x2\x948\x947\x3\x2\x2\x2\x948\x949\x3\x2\x2\x2\x949\x94A\x3\x2\x2\x2"+ - "\x94A\x94B\a\xDF\x2\x2\x94B\x950\x3\x2\x2\x2\x94C\x950\x5\x178\xBD\x2"+ - "\x94D\x950\x5\x182\xC2\x2\x94E\x950\x5\x184\xC3\x2\x94F\x92A\x3\x2\x2"+ - "\x2\x94F\x92F\x3\x2\x2\x2\x94F\x933\x3\x2\x2\x2\x94F\x938\x3\x2\x2\x2"+ - "\x94F\x93D\x3\x2\x2\x2\x94F\x940\x3\x2\x2\x2\x94F\x94C\x3\x2\x2\x2\x94F"+ - "\x94D\x3\x2\x2\x2\x94F\x94E\x3\x2\x2\x2\x950\x9BF\x3\x2\x2\x2\x951\x953"+ - "\f\x11\x2\x2\x952\x954\x5\x1BA\xDE\x2\x953\x952\x3\x2\x2\x2\x953\x954"+ - "\x3\x2\x2\x2\x954\x955\x3\x2\x2\x2\x955\x957\a\xDE\x2\x2\x956\x958\x5"+ - "\x1BA\xDE\x2\x957\x956\x3\x2\x2\x2\x957\x958\x3\x2\x2\x2\x958\x959\x3"+ - "\x2\x2\x2\x959\x9BE\x5\x176\xBC\x12\x95A\x95C\f\xF\x2\x2\x95B\x95D\x5"+ - "\x1BA\xDE\x2\x95C\x95B\x3\x2\x2\x2\x95C\x95D\x3\x2\x2\x2\x95D\x95E\x3"+ - "\x2\x2\x2\x95E\x960\t\x16\x2\x2\x95F\x961\x5\x1BA\xDE\x2\x960\x95F\x3"+ - "\x2\x2\x2\x960\x961\x3\x2\x2\x2\x961\x962\x3\x2\x2\x2\x962\x9BE\x5\x176"+ - "\xBC\x10\x963\x965\f\xE\x2\x2\x964\x966\x5\x1BA\xDE\x2\x965\x964\x3\x2"+ - "\x2\x2\x965\x966\x3\x2\x2\x2\x966\x967\x3\x2\x2\x2\x967\x969\a\xD3\x2"+ - "\x2\x968\x96A\x5\x1BA\xDE\x2\x969\x968\x3\x2\x2\x2\x969\x96A\x3\x2\x2"+ - "\x2\x96A\x96B\x3\x2\x2\x2\x96B\x9BE\x5\x176\xBC\xF\x96C\x96E\f\r\x2\x2"+ - "\x96D\x96F\x5\x1BA\xDE\x2\x96E\x96D\x3\x2\x2\x2\x96E\x96F\x3\x2\x2\x2"+ - "\x96F\x970\x3\x2\x2\x2\x970\x972\a\x8D\x2\x2\x971\x973\x5\x1BA\xDE\x2"+ - "\x972\x971\x3\x2\x2\x2\x972\x973\x3\x2\x2\x2\x973\x974\x3\x2\x2\x2\x974"+ - "\x9BE\x5\x176\xBC\xE\x975\x977\f\f\x2\x2\x976\x978\x5\x1BA\xDE\x2\x977"+ - "\x976\x3\x2\x2\x2\x977\x978\x3\x2\x2\x2\x978\x979\x3\x2\x2\x2\x979\x97B"+ - "\t\x17\x2\x2\x97A\x97C\x5\x1BA\xDE\x2\x97B\x97A\x3\x2\x2\x2\x97B\x97C"+ - "\x3\x2\x2\x2\x97C\x97D\x3\x2\x2\x2\x97D\x9BE\x5\x176\xBC\r\x97E\x980\f"+ - "\v\x2\x2\x97F\x981\x5\x1BA\xDE\x2\x980\x97F\x3\x2\x2\x2\x980\x981\x3\x2"+ - "\x2\x2\x981\x982\x3\x2\x2\x2\x982\x984\a\x34\x2\x2\x983\x985\x5\x1BA\xDE"+ - "\x2\x984\x983\x3\x2\x2\x2\x984\x985\x3\x2\x2\x2\x985\x986\x3\x2\x2\x2"+ - "\x986\x9BE\x5\x176\xBC\f\x987\x989\f\n\x2\x2\x988\x98A\x5\x1BA\xDE\x2"+ - "\x989\x988\x3\x2\x2\x2\x989\x98A\x3\x2\x2\x2\x98A\x98B\x3\x2\x2\x2\x98B"+ - "\x98D\t\x12\x2\x2\x98C\x98E\x5\x1BA\xDE\x2\x98D\x98C\x3\x2\x2\x2\x98D"+ - "\x98E\x3\x2\x2\x2\x98E\x98F\x3\x2\x2\x2\x98F\x9BE\x5\x176\xBC\v\x990\x992"+ - "\f\b\x2\x2\x991\x993\x5\x1BA\xDE\x2\x992\x991\x3\x2\x2\x2\x992\x993\x3"+ - "\x2\x2\x2\x993\x994\x3\x2\x2\x2\x994\x996\a\x38\x2\x2\x995\x997\x5\x1BA"+ - "\xDE\x2\x996\x995\x3\x2\x2\x2\x996\x997\x3\x2\x2\x2\x997\x998\x3\x2\x2"+ - "\x2\x998\x9BE\x5\x176\xBC\t\x999\x99B\f\a\x2\x2\x99A\x99C\x5\x1BA\xDE"+ - "\x2\x99B\x99A\x3\x2\x2\x2\x99B\x99C\x3\x2\x2\x2\x99C\x99D\x3\x2\x2\x2"+ - "\x99D\x99F\a\x9E\x2\x2\x99E\x9A0\x5\x1BA\xDE\x2\x99F\x99E\x3\x2\x2\x2"+ - "\x99F\x9A0\x3\x2\x2\x2\x9A0\x9A1\x3\x2\x2\x2\x9A1\x9BE\x5\x176\xBC\b\x9A2"+ - "\x9A4\f\x6\x2\x2\x9A3\x9A5\x5\x1BA\xDE\x2\x9A4\x9A3\x3\x2\x2\x2\x9A4\x9A5"+ - "\x3\x2\x2\x2\x9A5\x9A6\x3\x2\x2\x2\x9A6\x9A8\a\xD0\x2\x2\x9A7\x9A9\x5"+ - "\x1BA\xDE\x2\x9A8\x9A7\x3\x2\x2\x2\x9A8\x9A9\x3\x2\x2\x2\x9A9\x9AA\x3"+ - "\x2\x2\x2\x9AA\x9BE\x5\x176\xBC\a\x9AB\x9AD\f\x5\x2\x2\x9AC\x9AE\x5\x1BA"+ - "\xDE\x2\x9AD\x9AC\x3\x2\x2\x2\x9AD\x9AE\x3\x2\x2\x2\x9AE\x9AF\x3\x2\x2"+ - "\x2\x9AF\x9B1\ah\x2\x2\x9B0\x9B2\x5\x1BA\xDE\x2\x9B1\x9B0\x3\x2\x2\x2"+ - "\x9B1\x9B2\x3\x2\x2\x2\x9B2\x9B3\x3\x2\x2\x2\x9B3\x9BE\x5\x176\xBC\x6"+ - "\x9B4\x9B6\f\x4\x2\x2\x9B5\x9B7\x5\x1BA\xDE\x2\x9B6\x9B5\x3\x2\x2\x2\x9B6"+ - "\x9B7\x3\x2\x2\x2\x9B7\x9B8\x3\x2\x2\x2\x9B8\x9BA\az\x2\x2\x9B9\x9BB\x5"+ - "\x1BA\xDE\x2\x9BA\x9B9\x3\x2\x2\x2\x9BA\x9BB\x3\x2\x2\x2\x9BB\x9BC\x3"+ - "\x2\x2\x2\x9BC\x9BE\x5\x176\xBC\x5\x9BD\x951\x3\x2\x2\x2\x9BD\x95A\x3"+ - "\x2\x2\x2\x9BD\x963\x3\x2\x2\x2\x9BD\x96C\x3\x2\x2\x2\x9BD\x975\x3\x2"+ - "\x2\x2\x9BD\x97E\x3\x2\x2\x2\x9BD\x987\x3\x2\x2\x2\x9BD\x990\x3\x2\x2"+ - "\x2\x9BD\x999\x3\x2\x2\x2\x9BD\x9A2\x3\x2\x2\x2\x9BD\x9AB\x3\x2\x2\x2"+ - "\x9BD\x9B4\x3\x2\x2\x2\x9BE\x9C1\x3\x2\x2\x2\x9BF\x9BD\x3\x2\x2\x2\x9BF"+ - "\x9C0\x3\x2\x2\x2\x9C0\x177\x3\x2\x2\x2\x9C1\x9BF\x3\x2\x2\x2\x9C2\x9CA"+ - "\x5\x16E\xB8\x2\x9C3\x9CA\a\xE7\x2\x2\x9C4\x9CA\a\xE2\x2\x2\x9C5\x9C7"+ - "\x5\x17A\xBE\x2\x9C6\x9C8\x5\x172\xBA\x2\x9C7\x9C6\x3\x2\x2\x2\x9C7\x9C8"+ - "\x3\x2\x2\x2\x9C8\x9CA\x3\x2\x2\x2\x9C9\x9C2\x3\x2\x2\x2\x9C9\x9C3\x3"+ - "\x2\x2\x2\x9C9\x9C4\x3\x2\x2\x2\x9C9\x9C5\x3\x2\x2\x2\x9CA\x179\x3\x2"+ - "\x2\x2\x9CB\x9CF\x5\x17C\xBF\x2\x9CC\x9CF\x5\x17E\xC0\x2\x9CD\x9CF\x5"+ - "\x180\xC1\x2\x9CE\x9CB\x3\x2\x2\x2\x9CE\x9CC\x3\x2\x2\x2\x9CE\x9CD\x3"+ - "\x2\x2\x2\x9CF\x17B\x3\x2\x2\x2\x9D0\x9D1\t\x18\x2\x2\x9D1\x17D\x3\x2"+ - "\x2\x2\x9D2\x9D3\a\x92\x2\x2\x9D3\x17F\x3\x2\x2\x2\x9D4\x9D5\t\x19\x2"+ - "\x2\x9D5\x181\x3\x2\x2\x2\x9D6\x9D7\b\xC2\x1\x2\x9D7\x9E4\a\x8B\x2\x2"+ - "\x9D8\x9E4\x5\x152\xAA\x2\x9D9\x9DB\a/\x2\x2\x9DA\x9DC\x5\x1B8\xDD\x2"+ - "\x9DB\x9DA\x3\x2\x2\x2\x9DB\x9DC\x3\x2\x2\x2\x9DC\x9DD\x3\x2\x2\x2\x9DD"+ - "\x9E4\x5\x150\xA9\x2\x9DE\x9E0\a.\x2\x2\x9DF\x9E1\x5\x1B8\xDD\x2\x9E0"+ - "\x9DF\x3\x2\x2\x2\x9E0\x9E1\x3\x2\x2\x2\x9E1\x9E2\x3\x2\x2\x2\x9E2\x9E4"+ - "\x5\x150\xA9\x2\x9E3\x9D6\x3\x2\x2\x2\x9E3\x9D8\x3\x2\x2\x2\x9E3\x9D9"+ - "\x3\x2\x2\x2\x9E3\x9DE\x3\x2\x2\x2\x9E4\xA05\x3\x2\x2\x2\x9E5\x9E6\f\t"+ - "\x2\x2\x9E6\x9E8\a\xD8\x2\x2\x9E7\x9E9\x5\x1BA\xDE\x2\x9E8\x9E7\x3\x2"+ - "\x2\x2\x9E8\x9E9\x3\x2\x2\x2\x9E9\x9EB\x3\x2\x2\x2\x9EA\x9EC\x5\x186\xC4"+ - "\x2\x9EB\x9EA\x3\x2\x2\x2\x9EB\x9EC\x3\x2\x2\x2\x9EC\x9EE\x3\x2\x2\x2"+ - "\x9ED\x9EF\x5\x1BA\xDE\x2\x9EE\x9ED\x3\x2\x2\x2\x9EE\x9EF\x3\x2\x2\x2"+ - "\x9EF\x9F0\x3\x2\x2\x2\x9F0\xA04\a\xDF\x2\x2\x9F1\x9F3\f\b\x2\x2\x9F2"+ - "\x9F4\x5\x1B8\xDD\x2\x9F3\x9F2\x3\x2\x2\x2\x9F3\x9F4\x3\x2\x2\x2\x9F4"+ - "\x9F5\x3\x2\x2\x2\x9F5\x9F7\a/\x2\x2\x9F6\x9F8\x5\x1B8\xDD\x2\x9F7\x9F6"+ - "\x3\x2\x2\x2\x9F7\x9F8\x3\x2\x2\x2\x9F8\x9F9\x3\x2\x2\x2\x9F9\xA04\x5"+ - "\x150\xA9\x2\x9FA\x9FC\f\a\x2\x2\x9FB\x9FD\x5\x1B8\xDD\x2\x9FC\x9FB\x3"+ - "\x2\x2\x2\x9FC\x9FD\x3\x2\x2\x2\x9FD\x9FE\x3\x2\x2\x2\x9FE\xA00\a.\x2"+ - "\x2\x9FF\xA01\x5\x1B8\xDD\x2\xA00\x9FF\x3\x2\x2\x2\xA00\xA01\x3\x2\x2"+ - "\x2\xA01\xA02\x3\x2\x2\x2\xA02\xA04\x5\x150\xA9\x2\xA03\x9E5\x3\x2\x2"+ - "\x2\xA03\x9F1\x3\x2\x2\x2\xA03\x9FA\x3\x2\x2\x2\xA04\xA07\x3\x2\x2\x2"+ - "\xA05\xA03\x3\x2\x2\x2\xA05\xA06\x3\x2\x2\x2\xA06\x183\x3\x2\x2\x2\xA07"+ - "\xA05\x3\x2\x2\x2\xA08\xA1E\x5\x160\xB1\x2\xA09\xA0B\a\xE0\x2\x2\xA0A"+ - "\xA0C\x5\x1BA\xDE\x2\xA0B\xA0A\x3\x2\x2\x2\xA0B\xA0C\x3\x2\x2\x2\xA0C"+ - "\xA0D\x3\x2\x2\x2\xA0D\xA0F\x5\x160\xB1\x2\xA0E\xA10\x5\x1BA\xDE\x2\xA0F"+ - "\xA0E\x3\x2\x2\x2\xA0F\xA10\x3\x2\x2\x2\xA10\xA11\x3\x2\x2\x2\xA11\xA12"+ - "\a\xE1\x2\x2\xA12\xA1E\x3\x2\x2\x2\xA13\xA1E\a\x94\x2\x2\xA14\xA16\a\xE0"+ - "\x2\x2\xA15\xA17\x5\x1BA\xDE\x2\xA16\xA15\x3\x2\x2\x2\xA16\xA17\x3\x2"+ - "\x2\x2\xA17\xA18\x3\x2\x2\x2\xA18\xA1A\a\x94\x2\x2\xA19\xA1B\x5\x1BA\xDE"+ - "\x2\xA1A\xA19\x3\x2\x2\x2\xA1A\xA1B\x3\x2\x2\x2\xA1B\xA1C\x3\x2\x2\x2"+ - "\xA1C\xA1E\a\xE1\x2\x2\xA1D\xA08\x3\x2\x2\x2\xA1D\xA09\x3\x2\x2\x2\xA1D"+ - "\xA13\x3\x2\x2\x2\xA1D\xA14\x3\x2\x2\x2\xA1E\x185\x3\x2\x2\x2\xA1F\xA20"+ - "\x5\x188\xC5\x2\xA20\x187\x3\x2\x2\x2\xA21\xA23\x5\x18A\xC6\x2\xA22\xA24"+ - "\x5\x1BA\xDE\x2\xA23\xA22\x3\x2\x2\x2\xA23\xA24\x3\x2\x2\x2\xA24\xA26"+ - "\x3\x2\x2\x2\xA25\xA21\x3\x2\x2\x2\xA26\xA29\x3\x2\x2\x2\xA27\xA25\x3"+ - "\x2\x2\x2\xA27\xA28\x3\x2\x2\x2\xA28\xA2A\x3\x2\x2\x2\xA29\xA27\x3\x2"+ - "\x2\x2\xA2A\xA36\x5\x18E\xC8\x2\xA2B\xA2D\x5\x18A\xC6\x2\xA2C\xA2E\x5"+ - "\x1BA\xDE\x2\xA2D\xA2C\x3\x2\x2\x2\xA2D\xA2E\x3\x2\x2\x2\xA2E\xA30\x3"+ - "\x2\x2\x2\xA2F\xA2B\x3\x2\x2\x2\xA30\xA33\x3\x2\x2\x2\xA31\xA2F\x3\x2"+ - "\x2\x2\xA31\xA32\x3\x2\x2\x2\xA32\xA34\x3\x2\x2\x2\xA33\xA31\x3\x2\x2"+ - "\x2\xA34\xA36\x5\x190\xC9\x2\xA35\xA27\x3\x2\x2\x2\xA35\xA31\x3\x2\x2"+ - "\x2\xA36\x189\x3\x2\x2\x2\xA37\xA39\x5\x18C\xC7\x2\xA38\xA3A\x5\x1BA\xDE"+ - "\x2\xA39\xA38\x3\x2\x2\x2\xA39\xA3A\x3\x2\x2\x2\xA3A\xA3B\x3\x2\x2\x2"+ - "\xA3B\xA3C\a+\x2\x2\xA3C\xA42\x3\x2\x2\x2\xA3D\xA3F\x5\x1BA\xDE\x2\xA3E"+ - "\xA3D\x3\x2\x2\x2\xA3E\xA3F\x3\x2\x2\x2\xA3F\xA40\x3\x2\x2\x2\xA40\xA42"+ - "\a+\x2\x2\xA41\xA37\x3\x2\x2\x2\xA41\xA3E\x3\x2\x2\x2\xA42\x18B\x3\x2"+ - "\x2\x2\xA43\xA44\x5\x194\xCB\x2\xA44\x18D\x3\x2\x2\x2\xA45\xA46\x5\x194"+ - "\xCB\x2\xA46\x18F\x3\x2\x2\x2\xA47\xA52\x5\x192\xCA\x2\xA48\xA4A\x5\x1BA"+ - "\xDE\x2\xA49\xA48\x3\x2\x2\x2\xA49\xA4A\x3\x2\x2\x2\xA4A\xA4B\x3\x2\x2"+ - "\x2\xA4B\xA4D\a+\x2\x2\xA4C\xA4E\x5\x1BA\xDE\x2\xA4D\xA4C\x3\x2\x2\x2"+ - "\xA4D\xA4E\x3\x2\x2\x2\xA4E\xA4F\x3\x2\x2\x2\xA4F\xA51\x5\x192\xCA\x2"+ - "\xA50\xA49\x3\x2\x2\x2\xA51\xA54\x3\x2\x2\x2\xA52\xA50\x3\x2\x2\x2\xA52"+ - "\xA53\x3\x2\x2\x2\xA53\x191\x3\x2\x2\x2\xA54\xA52\x3\x2\x2\x2\xA55\xA57"+ - "\x5\x150\xA9\x2\xA56\xA58\x5\x1BA\xDE\x2\xA57\xA56\x3\x2\x2\x2\xA57\xA58"+ - "\x3\x2\x2\x2\xA58\xA59\x3\x2\x2\x2\xA59\xA5B\a\xD1\x2\x2\xA5A\xA5C\x5"+ - "\x1BA\xDE\x2\xA5B\xA5A\x3\x2\x2\x2\xA5B\xA5C\x3\x2\x2\x2\xA5C\xA5D\x3"+ - "\x2\x2\x2\xA5D\xA5E\x5\x194\xCB\x2\xA5E\x193\x3\x2\x2\x2\xA5F\xA60\a?"+ - "\x2\x2\xA60\xA62\x5\x1BA\xDE\x2\xA61\xA5F\x3\x2\x2\x2\xA61\xA62\x3\x2"+ - "\x2\x2\xA62\xA63\x3\x2\x2\x2\xA63\xA6C\x5\x176\xBC\x2\xA64\xA6C\x5\x19A"+ - "\xCE\x2\xA65\xA66\x5\x196\xCC\x2\xA66\xA67\x5\x1BA\xDE\x2\xA67\xA68\a"+ - "\xC2\x2\x2\xA68\xA69\x5\x1BA\xDE\x2\xA69\xA6A\x5\x198\xCD\x2\xA6A\xA6C"+ - "\x3\x2\x2\x2\xA6B\xA61\x3\x2\x2\x2\xA6B\xA64\x3\x2\x2\x2\xA6B\xA65\x3"+ - "\x2\x2\x2\xA6C\x195\x3\x2\x2\x2\xA6D\xA6E\x5\x176\xBC\x2\xA6E\x197\x3"+ - "\x2\x2\x2\xA6F\xA70\x5\x176\xBC\x2\xA70\x199\x3\x2\x2\x2\xA71\xA72\a\x36"+ - "\x2\x2\xA72\xA73\x5\x1BA\xDE\x2\xA73\xA74\x5\x176\xBC\x2\xA74\x19B\x3"+ - "\x2\x2\x2\xA75\xA76\t\x1A\x2\x2\xA76\x19D\x3\x2\x2\x2\xA77\xA78\a;\x2"+ - "\x2\xA78\x19F\x3\x2\x2\x2\xA79\xA7A\t\x1B\x2\x2\xA7A\x1A1\x3\x2\x2\x2"+ - "\xA7B\xA7D\x5\x1BA\xDE\x2\xA7C\xA7B\x3\x2\x2\x2\xA7C\xA7D\x3\x2\x2\x2"+ - "\xA7D\xA7E\x3\x2\x2\x2\xA7E\xA80\a\xE8\x2\x2\xA7F\xA81\x5\x1BA\xDE\x2"+ - "\xA80\xA7F\x3\x2\x2\x2\xA80\xA81\x3\x2\x2\x2\xA81\xA87\x3\x2\x2\x2\xA82"+ - "\xA84\x5\x1BA\xDE\x2\xA83\xA82\x3\x2\x2\x2\xA83\xA84\x3\x2\x2\x2\xA84"+ - "\xA85\x3\x2\x2\x2\xA85\xA87\x5\x1A6\xD4\x2\xA86\xA7C\x3\x2\x2\x2\xA86"+ - "\xA83\x3\x2\x2\x2\xA87\x1A3\x3\x2\x2\x2\xA88\xA91\x5\x1A2\xD2\x2\xA89"+ - "\xA8B\x5\x1BA\xDE\x2\xA8A\xA89\x3\x2\x2\x2\xA8A\xA8B\x3\x2\x2\x2\xA8B"+ - "\xA8C\x3\x2\x2\x2\xA8C\xA8E\a,\x2\x2\xA8D\xA8F\x5\x1BA\xDE\x2\xA8E\xA8D"+ - "\x3\x2\x2\x2\xA8E\xA8F\x3\x2\x2\x2\xA8F\xA91\x3\x2\x2\x2\xA90\xA88\x3"+ - "\x2\x2\x2\xA90\xA8A\x3\x2\x2\x2\xA91\xA94\x3\x2\x2\x2\xA92\xA90\x3\x2"+ - "\x2\x2\xA92\xA93\x3\x2\x2\x2\xA93\x1A5\x3\x2\x2\x2\xA94\xA92\x3\x2\x2"+ - "\x2\xA95\xA99\x5\x1AE\xD8\x2\xA96\xA99\x5\x1A8\xD5\x2\xA97\xA99\x5\x1AA"+ - "\xD6\x2\xA98\xA95\x3\x2\x2\x2\xA98\xA96\x3\x2\x2\x2\xA98\xA97\x3\x2\x2"+ - "\x2\xA99\x1A7\x3\x2\x2\x2\xA9A\xA9C\a\xAF\x2\x2\xA9B\xA9D\x5\x1BA\xDE"+ - "\x2\xA9C\xA9B\x3\x2\x2\x2\xA9C\xA9D\x3\x2\x2\x2\xA9D\xA9E\x3\x2\x2\x2"+ - "\xA9E\xA9F\x5\x1AC\xD7\x2\xA9F\x1A9\x3\x2\x2\x2\xAA0\xAA1\a\xE9\x2\x2"+ - "\xAA1\xAA2\x5\x1AC\xD7\x2\xAA2\x1AB\x3\x2\x2\x2\xAA3\xAA6\a\xEE\x2\x2"+ - "\xAA4\xAA6\n\x1C\x2\x2\xAA5\xAA3\x3\x2\x2\x2\xAA5\xAA4\x3\x2\x2\x2\xAA6"+ - "\xAA9\x3\x2\x2\x2\xAA7\xAA5\x3\x2\x2\x2\xAA7\xAA8\x3\x2\x2\x2\xAA8\x1AD"+ - "\x3\x2\x2\x2\xAA9\xAA7\x3\x2\x2\x2\xAAA\xAB0\a\xE9\x2\x2\xAAB\xAAC\a\x31"+ - "\x2\x2\xAAC\xAAE\x5\x1B0\xD9\x2\xAAD\xAAF\x5\x1BA\xDE\x2\xAAE\xAAD\x3"+ - "\x2\x2\x2\xAAE\xAAF\x3\x2\x2\x2\xAAF\xAB1\x3\x2\x2\x2\xAB0\xAAB\x3\x2"+ - "\x2\x2\xAB1\xAB2\x3\x2\x2\x2\xAB2\xAB0\x3\x2\x2\x2\xAB2\xAB3\x3\x2\x2"+ - "\x2\xAB3\xAB9\x3\x2\x2\x2\xAB4\xAB6\x5\x1BA\xDE\x2\xAB5\xAB4\x3\x2\x2"+ - "\x2\xAB5\xAB6\x3\x2\x2\x2\xAB6\xAB7\x3\x2\x2\x2\xAB7\xAB8\a,\x2\x2\xAB8"+ - "\xABA\x5\x1AC\xD7\x2\xAB9\xAB5\x3\x2\x2\x2\xAB9\xABA\x3\x2\x2\x2\xABA"+ - "\x1AF\x3\x2\x2\x2\xABB\xABD\x5\x1B2\xDA\x2\xABC\xABE\x5\x1B4\xDB\x2\xABD"+ - "\xABC\x3\x2\x2\x2\xABD\xABE\x3\x2\x2\x2\xABE\x1B1\x3\x2\x2\x2\xABF\xAC0"+ - "\x5\x150\xA9\x2\xAC0\x1B3\x3\x2\x2\x2\xAC1\xAC2\x5\x1BA\xDE\x2\xAC2\xAC3"+ - "\x5\x1B6\xDC\x2\xAC3\xAFE\x3\x2\x2\x2\xAC4\xAC5\x5\x1BA\xDE\x2\xAC5\xACE"+ - "\x5\x1B6\xDC\x2\xAC6\xAC8\x5\x1BA\xDE\x2\xAC7\xAC6\x3\x2\x2\x2\xAC7\xAC8"+ - "\x3\x2\x2\x2\xAC8\xAC9\x3\x2\x2\x2\xAC9\xACB\a+\x2\x2\xACA\xACC\x5\x1BA"+ - "\xDE\x2\xACB\xACA\x3\x2\x2\x2\xACB\xACC\x3\x2\x2\x2\xACC\xACD\x3\x2\x2"+ - "\x2\xACD\xACF\x5\x1B6\xDC\x2\xACE\xAC7\x3\x2\x2\x2\xACF\xAD0\x3\x2\x2"+ - "\x2\xAD0\xACE\x3\x2\x2\x2\xAD0\xAD1\x3\x2\x2\x2\xAD1\xAFE\x3\x2\x2\x2"+ - "\xAD2\xAD4\x5\x1BA\xDE\x2\xAD3\xAD2\x3\x2\x2\x2\xAD3\xAD4\x3\x2\x2\x2"+ - "\xAD4\xAD5\x3\x2\x2\x2\xAD5\xAD7\a\xD8\x2\x2\xAD6\xAD8\x5\x1BA\xDE\x2"+ - "\xAD7\xAD6\x3\x2\x2\x2\xAD7\xAD8\x3\x2\x2\x2\xAD8\xAD9\x3\x2\x2\x2\xAD9"+ - "\xAFE\a\xDF\x2\x2\xADA\xADC\x5\x1BA\xDE\x2\xADB\xADA\x3\x2\x2\x2\xADB"+ - "\xADC\x3\x2\x2\x2\xADC\xADD\x3\x2\x2\x2\xADD\xADF\a\xD8\x2\x2\xADE\xAE0"+ - "\x5\x1BA\xDE\x2\xADF\xADE\x3\x2\x2\x2\xADF\xAE0\x3\x2\x2\x2\xAE0\xAE1"+ - "\x3\x2\x2\x2\xAE1\xAE3\x5\x1B6\xDC\x2\xAE2\xAE4\x5\x1BA\xDE\x2\xAE3\xAE2"+ - "\x3\x2\x2\x2\xAE3\xAE4\x3\x2\x2\x2\xAE4\xAE5\x3\x2\x2\x2\xAE5\xAE6\a\xDF"+ - "\x2\x2\xAE6\xAFE\x3\x2\x2\x2\xAE7\xAE9\x5\x1BA\xDE\x2\xAE8\xAE7\x3\x2"+ - "\x2\x2\xAE8\xAE9\x3\x2\x2\x2\xAE9\xAEA\x3\x2\x2\x2\xAEA\xAEB\a\xD8\x2"+ - "\x2\xAEB\xAF4\x5\x1B6\xDC\x2\xAEC\xAEE\x5\x1BA\xDE\x2\xAED\xAEC\x3\x2"+ - "\x2\x2\xAED\xAEE\x3\x2\x2\x2\xAEE\xAEF\x3\x2\x2\x2\xAEF\xAF1\a+\x2\x2"+ - "\xAF0\xAF2\x5\x1BA\xDE\x2\xAF1\xAF0\x3\x2\x2\x2\xAF1\xAF2\x3\x2\x2\x2"+ - "\xAF2\xAF3\x3\x2\x2\x2\xAF3\xAF5\x5\x1B6\xDC\x2\xAF4\xAED\x3\x2\x2\x2"+ - "\xAF5\xAF6\x3\x2\x2\x2\xAF6\xAF4\x3\x2\x2\x2\xAF6\xAF7\x3\x2\x2\x2\xAF7"+ - "\xAF9\x3\x2\x2\x2\xAF8\xAFA\x5\x1BA\xDE\x2\xAF9\xAF8\x3\x2\x2\x2\xAF9"+ - "\xAFA\x3\x2\x2\x2\xAFA\xAFB\x3\x2\x2\x2\xAFB\xAFC\a\xDF\x2\x2\xAFC\xAFE"+ - "\x3\x2\x2\x2\xAFD\xAC1\x3\x2\x2\x2\xAFD\xAC4\x3\x2\x2\x2\xAFD\xAD3\x3"+ - "\x2\x2\x2\xAFD\xADB\x3\x2\x2\x2\xAFD\xAE8\x3\x2\x2\x2\xAFE\x1B5\x3\x2"+ - "\x2\x2\xAFF\xB00\x5\x176\xBC\x2\xB00\x1B7\x3\x2\x2\x2\xB01\xB05\a\xEE"+ - "\x2\x2\xB02\xB04\a\xEB\x2\x2\xB03\xB02\x3\x2\x2\x2\xB04\xB07\x3\x2\x2"+ - "\x2\xB05\xB03\x3\x2\x2\x2\xB05\xB06\x3\x2\x2\x2\xB06\x1B9\x3\x2\x2\x2"+ - "\xB07\xB05\x3\x2\x2\x2\xB08\xB0A\t\x1D\x2\x2\xB09\xB08\x3\x2\x2\x2\xB0A"+ - "\xB0B\x3\x2\x2\x2\xB0B\xB09\x3\x2\x2\x2\xB0B\xB0C\x3\x2\x2\x2\xB0C\x1BB"+ - "\x3\x2\x2\x2\x1A9\x1C2\x1C6\x1CE\x1D4\x1D7\x1E1\x1E3\x1E9\x1F2\x1F9\x1FF"+ - "\x208\x20F\x213\x217\x21B\x220\x22C\x239\x23C\x249\x24C\x253\x25B\x262"+ - "\x28A\x29A\x2A2\x2A7\x2AC\x2B5\x2C9\x2CD\x2D5\x2E0\x2E6\x2EA\x2EF\x2F6"+ - "\x2FA\x304\x308\x30B\x311\x317\x321\x325\x328\x32E\x332\x33C\x340\x34A"+ - "\x34E\x352\x35E\x362\x365\x369\x36E\x375\x379\x37E\x386\x38A\x38E\x396"+ - "\x399\x39D\x3A1\x3AB\x3AF\x3B2\x3B8\x3BC\x3C2\x3C6\x3CB\x3D4\x3D8\x3DB"+ - "\x3DE\x3E2\x3EE\x3F2\x3F5\x3F8\x3FC\x405\x40B\x40F\x414\x41B\x41E\x422"+ - "\x429\x42F\x43D\x440\x443\x448\x44C\x450\x454\x459\x45C\x45F\x465\x469"+ - "\x46D\x471\x475\x478\x47B\x47E\x481\x484\x488\x490\x494\x499\x4A1\x4A7"+ - "\x4AB\x4B7\x4BB\x4DA\x4DF\x4E8\x4EF\x4F3\x4F6\x500\x504\x509\x513\x519"+ - "\x52E\x53C\x544\x549\x54D\x551\x555\x558\x55B\x55E\x578\x57C\x58E\x592"+ - "\x59A\x59E\x5A2\x5A6\x5AC\x5B0\x5B4\x5B9\x5BF\x5C2\x5C6\x5CA\x5CD\x5D1"+ - "\x5D6\x5D8\x5DC\x5E0\x5E3\x5E7\x5EA\x5F6\x5FA\x5FE\x606\x60A\x618\x622"+ - "\x626\x62B\x636\x63A\x63F\x645\x649\x64F\x652\x657\x660\x664\x66A\x66D"+ - "\x676\x67A\x680\x683\x68D\x691\x694\x697\x69A\x69E\x6A2\x6A7\x6B0\x6B6"+ - "\x6BA\x6BF\x6C6\x6CB\x6CF\x6D3\x6D7\x6DB\x6DF\x6E1\x6E5\x6E9\x6F9\x6FB"+ - "\x701\x703\x70B\x70F\x71F\x723\x72A\x72E\x738\x73C\x741\x749\x751\x753"+ - "\x757\x762\x76C\x770\x777\x77B\x77F\x783\x786\x790\x7A6\x7AB\x7AF\x7BA"+ - "\x7C0\x7C3\x7C6\x7CC\x7D0\x7D5\x7DA\x7DC\x7E2\x7ED\x7F2\x7F8\x7FC\x801"+ - "\x806\x80A\x80E\x810\x814\x816\x81B\x82F\x831\x837\x839\x83D\x841\x844"+ - "\x847\x84B\x84E\x852\x856\x858\x85E\x860\x864\x868\x86D\x871\x875\x877"+ - "\x87D\x881\x887\x88B\x88F\x893\x89B\x89F\x8A4\x8AC\x8B3\x8B7\x8C2\x8C8"+ - "\x8CF\x8D3\x8D7\x8DB\x8DE\x8E9\x8ED\x8FB\x8FF\x903\x907\x90B\x911\x914"+ - "\x91A\x91D\x921\x924\x935\x93A\x940\x944\x948\x94F\x953\x957\x95C\x960"+ - "\x965\x969\x96E\x972\x977\x97B\x980\x984\x989\x98D\x992\x996\x99B\x99F"+ - "\x9A4\x9A8\x9AD\x9B1\x9B6\x9BA\x9BD\x9BF\x9C7\x9C9\x9CE\x9DB\x9E0\x9E3"+ - "\x9E8\x9EB\x9EE\x9F3\x9F7\x9FC\xA00\xA03\xA05\xA0B\xA0F\xA16\xA1A\xA1D"+ - "\xA23\xA27\xA2D\xA31\xA35\xA39\xA3E\xA41\xA49\xA4D\xA52\xA57\xA5B\xA61"+ - "\xA6B\xA7C\xA80\xA83\xA86\xA8A\xA8E\xA90\xA92\xA98\xA9C\xAA5\xAA7\xAAE"+ - "\xAB2\xAB5\xAB9\xABD\xAC7\xACB\xAD0\xAD3\xAD7\xADB\xADF\xAE3\xAE8\xAED"+ - "\xAF1\xAF6\xAF9\xAFD\xB05\xB0B"; + "\x1A4\xD3\x2\x65A\x65B\x5\x1E\x10\x2\x65B\x65C\a_\x2\x2\x65C\xE5\x3\x2"+ + "\x2\x2\x65D\x65E\x5\x174\xBB\x2\x65E\x65F\x5\x1BA\xDE\x2\x65F\x661\x3"+ + "\x2\x2\x2\x660\x65D\x3\x2\x2\x2\x660\x661\x3\x2\x2\x2\x661\x664\x3\x2"+ + "\x2\x2\x662\x663\a\xB8\x2\x2\x663\x665\x5\x1BA\xDE\x2\x664\x662\x3\x2"+ + "\x2\x2\x664\x665\x3\x2\x2\x2\x665\x666\x3\x2\x2\x2\x666\x667\a\xA4\x2"+ + "\x2\x667\x668\x5\x1BA\xDE\x2\x668\x66D\x5\x11A\x8E\x2\x669\x66B\x5\x1BA"+ + "\xDE\x2\x66A\x669\x3\x2\x2\x2\x66A\x66B\x3\x2\x2\x2\x66B\x66C\x3\x2\x2"+ + "\x2\x66C\x66E\x5\x8EH\x2\x66D\x66A\x3\x2\x2\x2\x66D\x66E\x3\x2\x2\x2\x66E"+ + "\x66F\x3\x2\x2\x2\x66F\x670\x5\x1A4\xD3\x2\x670\x671\x5\x1E\x10\x2\x671"+ + "\x672\a_\x2\x2\x672\xE7\x3\x2\x2\x2\x673\x674\x5\x174\xBB\x2\x674\x675"+ + "\x5\x1BA\xDE\x2\x675\x677\x3\x2\x2\x2\x676\x673\x3\x2\x2\x2\x676\x677"+ + "\x3\x2\x2\x2\x677\x67A\x3\x2\x2\x2\x678\x679\a\xB8\x2\x2\x679\x67B\x5"+ + "\x1BA\xDE\x2\x67A\x678\x3\x2\x2\x2\x67A\x67B\x3\x2\x2\x2\x67B\x67C\x3"+ + "\x2\x2\x2\x67C\x67D\a\xA3\x2\x2\x67D\x67E\x5\x1BA\xDE\x2\x67E\x683\x5"+ + "\x11A\x8E\x2\x67F\x681\x5\x1BA\xDE\x2\x680\x67F\x3\x2\x2\x2\x680\x681"+ + "\x3\x2\x2\x2\x681\x682\x3\x2\x2\x2\x682\x684\x5\x8EH\x2\x683\x680\x3\x2"+ + "\x2\x2\x683\x684\x3\x2\x2\x2\x684\x685\x3\x2\x2\x2\x685\x686\x5\x1A4\xD3"+ + "\x2\x686\x687\x5\x1E\x10\x2\x687\x688\a_\x2\x2\x688\xE9\x3\x2\x2\x2\x689"+ + "\x68A\a\xA9\x2\x2\x68A\x68B\x5\x1BA\xDE\x2\x68B\x69A\x5\x152\xAA\x2\x68C"+ + "\x68E\x5\x1BA\xDE\x2\x68D\x68C\x3\x2\x2\x2\x68D\x68E\x3\x2\x2\x2\x68E"+ + "\x68F\x3\x2\x2\x2\x68F\x691\a\xD6\x2\x2\x690\x692\x5\x1BA\xDE\x2\x691"+ + "\x690\x3\x2\x2\x2\x691\x692\x3\x2\x2\x2\x692\x694\x3\x2\x2\x2\x693\x695"+ + "\x5\xECw\x2\x694\x693\x3\x2\x2\x2\x694\x695\x3\x2\x2\x2\x695\x697\x3\x2"+ + "\x2\x2\x696\x698\x5\x1BA\xDE\x2\x697\x696\x3\x2\x2\x2\x697\x698\x3\x2"+ + "\x2\x2\x698\x699\x3\x2\x2\x2\x699\x69B\a\xDD\x2\x2\x69A\x68D\x3\x2\x2"+ + "\x2\x69A\x69B\x3\x2\x2\x2\x69B\xEB\x3\x2\x2\x2\x69C\x6A7\x5\xEEx\x2\x69D"+ + "\x69F\x5\x1BA\xDE\x2\x69E\x69D\x3\x2\x2\x2\x69E\x69F\x3\x2\x2\x2\x69F"+ + "\x6A0\x3\x2\x2\x2\x6A0\x6A2\a)\x2\x2\x6A1\x6A3\x5\x1BA\xDE\x2\x6A2\x6A1"+ + "\x3\x2\x2\x2\x6A2\x6A3\x3\x2\x2\x2\x6A3\x6A4\x3\x2\x2\x2\x6A4\x6A6\x5"+ + "\xEEx\x2\x6A5\x69E\x3\x2\x2\x2\x6A6\x6A9\x3\x2\x2\x2\x6A7\x6A5\x3\x2\x2"+ + "\x2\x6A7\x6A8\x3\x2\x2\x2\x6A8\xED\x3\x2\x2\x2\x6A9\x6A7\x3\x2\x2\x2\x6AA"+ + "\x6AB\t\b\x2\x2\x6AB\x6AD\x5\x1BA\xDE\x2\x6AC\x6AA\x3\x2\x2\x2\x6AC\x6AD"+ + "\x3\x2\x2\x2\x6AD\x6AE\x3\x2\x2\x2\x6AE\x6AF\x5\x176\xBC\x2\x6AF\xEF\x3"+ + "\x2\x2\x2\x6B0\x6B1\a\xAC\x2\x2\x6B1\x6B4\x5\x1BA\xDE\x2\x6B2\x6B3\a\x9F"+ + "\x2\x2\x6B3\x6B5\x5\x1BA\xDE\x2\x6B4\x6B2\x3\x2\x2\x2\x6B4\x6B5\x3\x2"+ + "\x2\x2\x6B5\x6B6\x3\x2\x2\x2\x6B6\x6B7\x5\xF2z\x2\x6B7\xF1\x3\x2\x2\x2"+ + "\x6B8\x6C3\x5\xF4{\x2\x6B9\x6BB\x5\x1BA\xDE\x2\x6BA\x6B9\x3\x2\x2\x2\x6BA"+ + "\x6BB\x3\x2\x2\x2\x6BB\x6BC\x3\x2\x2\x2\x6BC\x6BE\a)\x2\x2\x6BD\x6BF\x5"+ + "\x1BA\xDE\x2\x6BE\x6BD\x3\x2\x2\x2\x6BE\x6BF\x3\x2\x2\x2\x6BF\x6C0\x3"+ + "\x2\x2\x2\x6C0\x6C2\x5\xF4{\x2\x6C1\x6BA\x3\x2\x2\x2\x6C2\x6C5\x3\x2\x2"+ + "\x2\x6C3\x6C1\x3\x2\x2\x2\x6C3\x6C4\x3\x2\x2\x2\x6C4\xF3\x3\x2\x2\x2\x6C5"+ + "\x6C3\x3\x2\x2\x2\x6C6\x6CA\x5\x176\xBC\x2\x6C7\x6C8\x5\x1BA\xDE\x2\x6C8"+ + "\x6C9\x5\x15E\xB0\x2\x6C9\x6CB\x3\x2\x2\x2\x6CA\x6C7\x3\x2\x2\x2\x6CA"+ + "\x6CB\x3\x2\x2\x2\x6CB\xF5\x3\x2\x2\x2\x6CC\x6CD\x5\xF8}\x2\x6CD\x6CF"+ + "\a\xD6\x2\x2\x6CE\x6D0\x5\x1BA\xDE\x2\x6CF\x6CE\x3\x2\x2\x2\x6CF\x6D0"+ + "\x3\x2\x2\x2\x6D0\x6D1\x3\x2\x2\x2\x6D1\x6D3\x5\x182\xC2\x2\x6D2\x6D4"+ + "\x5\x1BA\xDE\x2\x6D3\x6D2\x3\x2\x2\x2\x6D3\x6D4\x3\x2\x2\x2\x6D4\x6D5"+ + "\x3\x2\x2\x2\x6D5\x6D7\a)\x2\x2\x6D6\x6D8\x5\x1BA\xDE\x2\x6D7\x6D6\x3"+ + "\x2\x2\x2\x6D7\x6D8\x3\x2\x2\x2\x6D8\x6D9\x3\x2\x2\x2\x6D9\x6DB\x5\x182"+ + "\xC2\x2\x6DA\x6DC\x5\x1BA\xDE\x2\x6DB\x6DA\x3\x2\x2\x2\x6DB\x6DC\x3\x2"+ + "\x2\x2\x6DC\x6E5\x3\x2\x2\x2\x6DD\x6DF\a)\x2\x2\x6DE\x6E0\x5\x1BA\xDE"+ + "\x2\x6DF\x6DE\x3\x2\x2\x2\x6DF\x6E0\x3\x2\x2\x2\x6E0\x6E1\x3\x2\x2\x2"+ + "\x6E1\x6E3\x5\x182\xC2\x2\x6E2\x6E4\x5\x1BA\xDE\x2\x6E3\x6E2\x3\x2\x2"+ + "\x2\x6E3\x6E4\x3\x2\x2\x2\x6E4\x6E6\x3\x2\x2\x2\x6E5\x6DD\x3\x2\x2\x2"+ + "\x6E5\x6E6\x3\x2\x2\x2\x6E6\x6E7\x3\x2\x2\x2\x6E7\x6E9\a\xDD\x2\x2\x6E8"+ + "\x6EA\x5\x1BA\xDE\x2\x6E9\x6E8\x3\x2\x2\x2\x6E9\x6EA\x3\x2\x2\x2\x6EA"+ + "\x6EB\x3\x2\x2\x2\x6EB\x6ED\a\xCF\x2\x2\x6EC\x6EE\x5\x1BA\xDE\x2\x6ED"+ + "\x6EC\x3\x2\x2\x2\x6ED\x6EE\x3\x2\x2\x2\x6EE\x6EF\x3\x2\x2\x2\x6EF\x6F0"+ + "\x5\x176\xBC\x2\x6F0\xF7\x3\x2\x2\x2\x6F1\x6F3\t\r\x2\x2\x6F2\x6F4\a\x31"+ + "\x2\x2\x6F3\x6F2\x3\x2\x2\x2\x6F3\x6F4\x3\x2\x2\x2\x6F4\xF9\x3\x2\x2\x2"+ + "\x6F5\x6F6\x5\x176\xBC\x2\x6F6\xFB\x3\x2\x2\x2\x6F7\x6F8\a@\x2\x2\x6F8"+ + "\x6F9\x5\x1BA\xDE\x2\x6F9\x6FA\x5\x176\xBC\x2\x6FA\x702\x3\x2\x2\x2\x6FB"+ + "\x6FF\x5\x176\xBC\x2\x6FC\x6FD\x5\x1BA\xDE\x2\x6FD\x6FE\x5\x186\xC4\x2"+ + "\x6FE\x700\x3\x2\x2\x2\x6FF\x6FC\x3\x2\x2\x2\x6FF\x700\x3\x2\x2\x2\x700"+ + "\x702\x3\x2\x2\x2\x701\x6F7\x3\x2\x2\x2\x701\x6FB\x3\x2\x2\x2\x702\xFD"+ + "\x3\x2\x2\x2\x703\x709\a\xAF\x2\x2\x704\x707\x5\x1BA\xDE\x2\x705\x708"+ + "\a\x8D\x2\x2\x706\x708\x5\x176\xBC\x2\x707\x705\x3\x2\x2\x2\x707\x706"+ + "\x3\x2\x2\x2\x708\x70A\x3\x2\x2\x2\x709\x704\x3\x2\x2\x2\x709\x70A\x3"+ + "\x2\x2\x2\x70A\xFF\x3\x2\x2\x2\x70B\x70C\a\xB0\x2\x2\x70C\x101\x3\x2\x2"+ + "\x2\x70D\x70E\a\xB1\x2\x2\x70E\x70F\x5\x1BA\xDE\x2\x70F\x711\x5\x176\xBC"+ + "\x2\x710\x712\x5\x1BA\xDE\x2\x711\x710\x3\x2\x2\x2\x711\x712\x3\x2\x2"+ + "\x2\x712\x713\x3\x2\x2\x2\x713\x715\a\xD2\x2\x2\x714\x716\x5\x1BA\xDE"+ + "\x2\x715\x714\x3\x2\x2\x2\x715\x716\x3\x2\x2\x2\x716\x717\x3\x2\x2\x2"+ + "\x717\x718\x5\x176\xBC\x2\x718\x103\x3\x2\x2\x2\x719\x71A\a\xBA\x2\x2"+ + "\x71A\x105\x3\x2\x2\x2\x71B\x71C\a\x8C\x2\x2\x71C\x71D\x5\x1BA\xDE\x2"+ + "\x71D\x71E\x5\x176\xBC\x2\x71E\x71F\x5\x1BA\xDE\x2\x71F\x720\a\x39\x2"+ + "\x2\x720\x721\x5\x1BA\xDE\x2\x721\x722\x5\x176\xBC\x2\x722\x107\x3\x2"+ + "\x2\x2\x723\x725\a\xB3\x2\x2\x724\x726\x5\x1BA\xDE\x2\x725\x724\x3\x2"+ + "\x2\x2\x725\x726\x3\x2\x2\x2\x726\x727\x3\x2\x2\x2\x727\x729\a\x41\x2"+ + "\x2\x728\x72A\x5\x1BA\xDE\x2\x729\x728\x3\x2\x2\x2\x729\x72A\x3\x2\x2"+ + "\x2\x72A\x72B\x3\x2\x2\x2\x72B\x72C\x5\x10A\x86\x2\x72C\x730\x5\x1A4\xD3"+ + "\x2\x72D\x72F\x5\x10C\x87\x2\x72E\x72D\x3\x2\x2\x2\x72F\x732\x3\x2\x2"+ + "\x2\x730\x72E\x3\x2\x2\x2\x730\x731\x3\x2\x2\x2\x731\x734\x3\x2\x2\x2"+ + "\x732\x730\x3\x2\x2\x2\x733\x735\x5\x10E\x88\x2\x734\x733\x3\x2\x2\x2"+ + "\x734\x735\x3\x2\x2\x2\x735\x736\x3\x2\x2\x2\x736\x737\a`\x2\x2\x737\x109"+ + "\x3\x2\x2\x2\x738\x739\x5\x176\xBC\x2\x739\x10B\x3\x2\x2\x2\x73A\x73B"+ + "\a\x41\x2\x2\x73B\x73C\x5\x1BA\xDE\x2\x73C\x747\x5\x110\x89\x2\x73D\x73F"+ + "\x5\x1BA\xDE\x2\x73E\x73D\x3\x2\x2\x2\x73E\x73F\x3\x2\x2\x2\x73F\x740"+ + "\x3\x2\x2\x2\x740\x742\a)\x2\x2\x741\x743\x5\x1BA\xDE\x2\x742\x741\x3"+ + "\x2\x2\x2\x742\x743\x3\x2\x2\x2\x743\x744\x3\x2\x2\x2\x744\x746\x5\x110"+ + "\x89\x2\x745\x73E\x3\x2\x2\x2\x746\x749\x3\x2\x2\x2\x747\x745\x3\x2\x2"+ + "\x2\x747\x748\x3\x2\x2\x2\x748\x74A\x3\x2\x2\x2\x749\x747\x3\x2\x2\x2"+ + "\x74A\x74B\x5\x1A4\xD3\x2\x74B\x74C\x5\x1E\x10\x2\x74C\x10D\x3\x2\x2\x2"+ + "\x74D\x74F\a\x41\x2\x2\x74E\x750\x5\x1BA\xDE\x2\x74F\x74E\x3\x2\x2\x2"+ + "\x74F\x750\x3\x2\x2\x2\x750\x751\x3\x2\x2\x2\x751\x752\aY\x2\x2\x752\x753"+ + "\x5\x1A4\xD3\x2\x753\x754\x5\x1E\x10\x2\x754\x10F\x3\x2\x2\x2\x755\x757"+ + "\a|\x2\x2\x756\x758\x5\x1BA\xDE\x2\x757\x756\x3\x2\x2\x2\x757\x758\x3"+ + "\x2\x2\x2\x758\x75A\x3\x2\x2\x2\x759\x755\x3\x2\x2\x2\x759\x75A\x3\x2"+ + "\x2\x2\x75A\x75B\x3\x2\x2\x2\x75B\x75D\x5\x162\xB2\x2\x75C\x75E\x5\x1BA"+ + "\xDE\x2\x75D\x75C\x3\x2\x2\x2\x75D\x75E\x3\x2\x2\x2\x75E\x75F\x3\x2\x2"+ + "\x2\x75F\x760\x5\x176\xBC\x2\x760\x769\x3\x2\x2\x2\x761\x762\x5\x112\x8A"+ + "\x2\x762\x763\x5\x1BA\xDE\x2\x763\x764\a\xC0\x2\x2\x764\x765\x5\x1BA\xDE"+ + "\x2\x765\x766\x5\x114\x8B\x2\x766\x769\x3\x2\x2\x2\x767\x769\x5\x176\xBC"+ + "\x2\x768\x759\x3\x2\x2\x2\x768\x761\x3\x2\x2\x2\x768\x767\x3\x2\x2\x2"+ + "\x769\x111\x3\x2\x2\x2\x76A\x76B\x5\x176\xBC\x2\x76B\x113\x3\x2\x2\x2"+ + "\x76C\x76D\x5\x176\xBC\x2\x76D\x115\x3\x2\x2\x2\x76E\x76F\a\xB4\x2\x2"+ + "\x76F\x770\x5\x1BA\xDE\x2\x770\x772\x5\x182\xC2\x2\x771\x773\x5\x1BA\xDE"+ + "\x2\x772\x771\x3\x2\x2\x2\x772\x773\x3\x2\x2\x2\x773\x774\x3\x2\x2\x2"+ + "\x774\x776\a\xD2\x2\x2\x775\x777\x5\x1BA\xDE\x2\x776\x775\x3\x2\x2\x2"+ + "\x776\x777\x3\x2\x2\x2\x777\x778\x3\x2\x2\x2\x778\x779\x5\x176\xBC\x2"+ + "\x779\x117\x3\x2\x2\x2\x77A\x77B\x5\x174\xBB\x2\x77B\x77C\x5\x1BA\xDE"+ + "\x2\x77C\x77E\x3\x2\x2\x2\x77D\x77A\x3\x2\x2\x2\x77D\x77E\x3\x2\x2\x2"+ + "\x77E\x781\x3\x2\x2\x2\x77F\x780\a\xB8\x2\x2\x780\x782\x5\x1BA\xDE\x2"+ + "\x781\x77F\x3\x2\x2\x2\x781\x782\x3\x2\x2\x2\x782\x783\x3\x2\x2\x2\x783"+ + "\x785\a\xBC\x2\x2\x784\x786\x5\x1BA\xDE\x2\x785\x784\x3\x2\x2\x2\x785"+ + "\x786\x3\x2\x2\x2\x786\x787\x3\x2\x2\x2\x787\x78C\x5\x11A\x8E\x2\x788"+ + "\x78A\x5\x1BA\xDE\x2\x789\x788\x3\x2\x2\x2\x789\x78A\x3\x2\x2\x2\x78A"+ + "\x78B\x3\x2\x2\x2\x78B\x78D\x5\x8EH\x2\x78C\x789\x3\x2\x2\x2\x78C\x78D"+ + "\x3\x2\x2\x2\x78D\x78E\x3\x2\x2\x2\x78E\x78F\x5\x1A4\xD3\x2\x78F\x790"+ + "\x5\x1E\x10\x2\x790\x791\a\x61\x2\x2\x791\x119\x3\x2\x2\x2\x792\x793\x5"+ + "\x152\xAA\x2\x793\x11B\x3\x2\x2\x2\x794\x795\t\xE\x2\x2\x795\x797\x5\x1BA"+ + "\xDE\x2\x796\x794\x3\x2\x2\x2\x796\x797\x3\x2\x2\x2\x797\x798\x3\x2\x2"+ + "\x2\x798\x799\x5\x120\x91\x2\x799\x11D\x3\x2\x2\x2\x79A\x79B\a\xA1\x2"+ + "\x2\x79B\x79C\x5\x1BA\xDE\x2\x79C\x79D\x5\x120\x91\x2\x79D\x11F\x3\x2"+ + "\x2\x2\x79E\x79F\a\xC2\x2\x2\x79F\x7A0\x5\x1BA\xDE\x2\x7A0\x7A1\x5\x154"+ + "\xAB\x2\x7A1\x7A2\x5\x1A4\xD3\x2\x7A2\x7A3\x5\x122\x92\x2\x7A3\x7A4\x5"+ + "\x1A4\xD3\x2\x7A4\x7A5\a\x62\x2\x2\x7A5\x121\x3\x2\x2\x2\x7A6\x7AC\x5"+ + "\x124\x93\x2\x7A7\x7A8\x5\x1A4\xD3\x2\x7A8\x7A9\x5\x124\x93\x2\x7A9\x7AB"+ + "\x3\x2\x2\x2\x7AA\x7A7\x3\x2\x2\x2\x7AB\x7AE\x3\x2\x2\x2\x7AC\x7AA\x3"+ + "\x2\x2\x2\x7AC\x7AD\x3\x2\x2\x2\x7AD\x123\x3\x2\x2\x2\x7AE\x7AC\x3\x2"+ + "\x2\x2\x7AF\x7B2\x5\x128\x95\x2\x7B0\x7B2\x5\x126\x94\x2\x7B1\x7AF\x3"+ + "\x2\x2\x2\x7B1\x7B0\x3\x2\x2\x2\x7B2\x125\x3\x2\x2\x2\x7B3\x7B5\x5\x154"+ + "\xAB\x2\x7B4\x7B6\x5\x1BA\xDE\x2\x7B5\x7B4\x3\x2\x2\x2\x7B5\x7B6\x3\x2"+ + "\x2\x2\x7B6\x7B7\x3\x2\x2\x2\x7B7\x7B8\x5\x12A\x96\x2\x7B8\x127\x3\x2"+ + "\x2\x2\x7B9\x7BA\x5\x150\xA9\x2\x7BA\x7BB\x5\x1BA\xDE\x2\x7BB\x7BC\x5"+ + "\x15E\xB0\x2\x7BC\x129\x3\x2\x2\x2\x7BD\x7BE\x5\x12C\x97\x2\x7BE\x7BF"+ + "\x5\x1BA\xDE\x2\x7BF\x7C1\x3\x2\x2\x2\x7C0\x7BD\x3\x2\x2\x2\x7C0\x7C1"+ + "\x3\x2\x2\x2\x7C1\x7C2\x3\x2\x2\x2\x7C2\x7C3\x5\x15E\xB0\x2\x7C3\x12B"+ + "\x3\x2\x2\x2\x7C4\x7C6\a\xD6\x2\x2\x7C5\x7C7\x5\x1BA\xDE\x2\x7C6\x7C5"+ + "\x3\x2\x2\x2\x7C6\x7C7\x3\x2\x2\x2\x7C7\x7C9\x3\x2\x2\x2\x7C8\x7CA\x5"+ + "\x12E\x98\x2\x7C9\x7C8\x3\x2\x2\x2\x7C9\x7CA\x3\x2\x2\x2\x7CA\x7CC\x3"+ + "\x2\x2\x2\x7CB\x7CD\x5\x1BA\xDE\x2\x7CC\x7CB\x3\x2\x2\x2\x7CC\x7CD\x3"+ + "\x2\x2\x2\x7CD\x7CE\x3\x2\x2\x2\x7CE\x7CF\a\xDD\x2\x2\x7CF\x12D\x3\x2"+ + "\x2\x2\x7D0\x7DB\x5\x130\x99\x2\x7D1\x7D3\x5\x1BA\xDE\x2\x7D2\x7D1\x3"+ + "\x2\x2\x2\x7D2\x7D3\x3\x2\x2\x2\x7D3\x7D4\x3\x2\x2\x2\x7D4\x7D6\a)\x2"+ + "\x2\x7D5\x7D7\x5\x1BA\xDE\x2\x7D6\x7D5\x3\x2\x2\x2\x7D6\x7D7\x3\x2\x2"+ + "\x2\x7D7\x7D8\x3\x2\x2\x2\x7D8\x7DA\x5\x130\x99\x2\x7D9\x7D2\x3\x2\x2"+ + "\x2\x7DA\x7DD\x3\x2\x2\x2\x7DB\x7D9\x3\x2\x2\x2\x7DB\x7DC\x3\x2\x2\x2"+ + "\x7DC\x12F\x3\x2\x2\x2\x7DD\x7DB\x3\x2\x2\x2\x7DE\x7E0\x5\x132\x9A\x2"+ + "\x7DF\x7E1\x5\x1BA\xDE\x2\x7E0\x7DF\x3\x2\x2\x2\x7E0\x7E1\x3\x2\x2\x2"+ + "\x7E1\x7E3\x3\x2\x2\x2\x7E2\x7DE\x3\x2\x2\x2\x7E2\x7E3\x3\x2\x2\x2\x7E3"+ + "\x7E4\x3\x2\x2\x2\x7E4\x7E5\x5\x134\x9B\x2\x7E5\x131\x3\x2\x2\x2\x7E6"+ + "\x7E8\x5\x136\x9C\x2\x7E7\x7E9\x5\x1BA\xDE\x2\x7E8\x7E7\x3\x2\x2\x2\x7E8"+ + "\x7E9\x3\x2\x2\x2\x7E9\x7EA\x3\x2\x2\x2\x7EA\x7EB\a\xC0\x2\x2\x7EB\x133"+ + "\x3\x2\x2\x2\x7EC\x7ED\x5\x136\x9C\x2\x7ED\x135\x3\x2\x2\x2\x7EE\x7EF"+ + "\x5\x176\xBC\x2\x7EF\x137\x3\x2\x2\x2\x7F0\x7F4\aU\x2\x2\x7F1\x7F4\a\xB8"+ + "\x2\x2\x7F2\x7F4\x5\x174\xBB\x2\x7F3\x7F0\x3\x2\x2\x2\x7F3\x7F1\x3\x2"+ + "\x2\x2\x7F3\x7F2\x3\x2\x2\x2\x7F4\x7F5\x3\x2\x2\x2\x7F5\x7F8\x5\x1BA\xDE"+ + "\x2\x7F6\x7F7\a\xCC\x2\x2\x7F7\x7F9\x5\x1BA\xDE\x2\x7F8\x7F6\x3\x2\x2"+ + "\x2\x7F8\x7F9\x3\x2\x2\x2\x7F9\x7FA\x3\x2\x2\x2\x7FA\x7FB\x5\x13A\x9E"+ + "\x2\x7FB\x139\x3\x2\x2\x2\x7FC\x807\x5\x13C\x9F\x2\x7FD\x7FF\x5\x1BA\xDE"+ + "\x2\x7FE\x7FD\x3\x2\x2\x2\x7FE\x7FF\x3\x2\x2\x2\x7FF\x800\x3\x2\x2\x2"+ + "\x800\x802\a)\x2\x2\x801\x803\x5\x1BA\xDE\x2\x802\x801\x3\x2\x2\x2\x802"+ + "\x803\x3\x2\x2\x2\x803\x804\x3\x2\x2\x2\x804\x806\x5\x13C\x9F\x2\x805"+ + "\x7FE\x3\x2\x2\x2\x806\x809\x3\x2\x2\x2\x807\x805\x3\x2\x2\x2\x807\x808"+ + "\x3\x2\x2\x2\x808\x13B\x3\x2\x2\x2\x809\x807\x3\x2\x2\x2\x80A\x81C\x5"+ + "\x152\xAA\x2\x80B\x80D\x5\x1BA\xDE\x2\x80C\x80B\x3\x2\x2\x2\x80C\x80D"+ + "\x3\x2\x2\x2\x80D\x80E\x3\x2\x2\x2\x80E\x810\a\xD6\x2\x2\x80F\x811\x5"+ + "\x1BA\xDE\x2\x810\x80F\x3\x2\x2\x2\x810\x811\x3\x2\x2\x2\x811\x816\x3"+ + "\x2\x2\x2\x812\x814\x5\x14C\xA7\x2\x813\x815\x5\x1BA\xDE\x2\x814\x813"+ + "\x3\x2\x2\x2\x814\x815\x3\x2\x2\x2\x815\x817\x3\x2\x2\x2\x816\x812\x3"+ + "\x2\x2\x2\x816\x817\x3\x2\x2\x2\x817\x818\x3\x2\x2\x2\x818\x81A\a\xDD"+ + "\x2\x2\x819\x81B\x5\x1BA\xDE\x2\x81A\x819\x3\x2\x2\x2\x81A\x81B\x3\x2"+ + "\x2\x2\x81B\x81D\x3\x2\x2\x2\x81C\x80C\x3\x2\x2\x2\x81C\x81D\x3\x2\x2"+ + "\x2\x81D\x821\x3\x2\x2\x2\x81E\x81F\x5\x1BA\xDE\x2\x81F\x820\x5\x15E\xB0"+ + "\x2\x820\x822\x3\x2\x2\x2\x821\x81E\x3\x2\x2\x2\x821\x822\x3\x2\x2\x2"+ + "\x822\x13D\x3\x2\x2\x2\x823\x824\a\xC9\x2\x2\x824\x825\x5\x1BA\xDE\x2"+ + "\x825\x826\x5\x176\xBC\x2\x826\x827\x5\x1A4\xD3\x2\x827\x828\x5\x1E\x10"+ + "\x2\x828\x829\a\xC8\x2\x2\x829\x13F\x3\x2\x2\x2\x82A\x82B\a\xCB\x2\x2"+ + "\x82B\x82C\x5\x1BA\xDE\x2\x82C\x82D\x5\x176\xBC\x2\x82D\x82E\x5\x1A4\xD3"+ + "\x2\x82E\x82F\x5\x1E\x10\x2\x82F\x830\a\x63\x2\x2\x830\x141\x3\x2\x2\x2"+ + "\x831\x832\x5\x176\xBC\x2\x832\x837\x5\x1BA\xDE\x2\x833\x835\a\xB9\x2"+ + "\x2\x834\x836\x5\x1BA\xDE\x2\x835\x834\x3\x2\x2\x2\x835\x836\x3\x2\x2"+ + "\x2\x836\x838\x3\x2\x2\x2\x837\x833\x3\x2\x2\x2\x837\x838\x3\x2\x2\x2"+ + "\x838\x839\x3\x2\x2\x2\x839\x83A\x5\x148\xA5\x2\x83A\x83F\a\xD8\x2\x2"+ + "\x83B\x83D\a\xB9\x2\x2\x83C\x83E\x5\x1BA\xDE\x2\x83D\x83C\x3\x2\x2\x2"+ + "\x83D\x83E\x3\x2\x2\x2\x83E\x840\x3\x2\x2\x2\x83F\x83B\x3\x2\x2\x2\x83F"+ + "\x840\x3\x2\x2\x2\x840\x841\x3\x2\x2\x2\x841\x843\x5\x148\xA5\x2\x842"+ + "\x844\x5\x1BA\xDE\x2\x843\x842\x3\x2\x2\x2\x843\x844\x3\x2\x2\x2\x844"+ + "\x84A\x3\x2\x2\x2\x845\x847\a)\x2\x2\x846\x848\x5\x1BA\xDE\x2\x847\x846"+ + "\x3\x2\x2\x2\x847\x848\x3\x2\x2\x2\x848\x849\x3\x2\x2\x2\x849\x84B\x5"+ + "\x176\xBC\x2\x84A\x845\x3\x2\x2\x2\x84A\x84B\x3\x2\x2\x2\x84B\x84D\x3"+ + "\x2\x2\x2\x84C\x84E\x5\x1BA\xDE\x2\x84D\x84C\x3\x2\x2\x2\x84D\x84E\x3"+ + "\x2\x2\x2\x84E\x854\x3\x2\x2\x2\x84F\x851\a)\x2\x2\x850\x852\x5\x1BA\xDE"+ + "\x2\x851\x850\x3\x2\x2\x2\x851\x852\x3\x2\x2\x2\x852\x853\x3\x2\x2\x2"+ + "\x853\x855\x5\x14A\xA6\x2\x854\x84F\x3\x2\x2\x2\x854\x855\x3\x2\x2\x2"+ + "\x855\x143\x3\x2\x2\x2\x856\x858\x5\x176\xBC\x2\x857\x859\x5\x1BA\xDE"+ + "\x2\x858\x857\x3\x2\x2\x2\x858\x859\x3\x2\x2\x2\x859\x85A\x3\x2\x2\x2"+ + "\x85A\x85C\a-\x2\x2\x85B\x85D\x5\x1BA\xDE\x2\x85C\x85B\x3\x2\x2\x2\x85C"+ + "\x85D\x3\x2\x2\x2\x85D\x85F\x3\x2\x2\x2\x85E\x856\x3\x2\x2\x2\x85E\x85F"+ + "\x3\x2\x2\x2\x85F\x860\x3\x2\x2\x2\x860\x861\a\xF\x2\x2\x861\x866\x5\x1BA"+ + "\xDE\x2\x862\x864\a\xB9\x2\x2\x863\x865\x5\x1BA\xDE\x2\x864\x863\x3\x2"+ + "\x2\x2\x864\x865\x3\x2\x2\x2\x865\x867\x3\x2\x2\x2\x866\x862\x3\x2\x2"+ + "\x2\x866\x867\x3\x2\x2\x2\x867\x868\x3\x2\x2\x2\x868\x871\x5\x148\xA5"+ + "\x2\x869\x86B\x5\x1BA\xDE\x2\x86A\x869\x3\x2\x2\x2\x86A\x86B\x3\x2\x2"+ + "\x2\x86B\x86C\x3\x2\x2\x2\x86C\x86E\a)\x2\x2\x86D\x86F\x5\x1BA\xDE\x2"+ + "\x86E\x86D\x3\x2\x2\x2\x86E\x86F\x3\x2\x2\x2\x86F\x870\x3\x2\x2\x2\x870"+ + "\x872\x5\x176\xBC\x2\x871\x86A\x3\x2\x2\x2\x872\x873\x3\x2\x2\x2\x873"+ + "\x871\x3\x2\x2\x2\x873\x874\x3\x2\x2\x2\x874\x145\x3\x2\x2\x2\x875\x877"+ + "\x5\x176\xBC\x2\x876\x878\x5\x1BA\xDE\x2\x877\x876\x3\x2\x2\x2\x877\x878"+ + "\x3\x2\x2\x2\x878\x879\x3\x2\x2\x2\x879\x87B\a-\x2\x2\x87A\x87C\x5\x1BA"+ + "\xDE\x2\x87B\x87A\x3\x2\x2\x2\x87B\x87C\x3\x2\x2\x2\x87C\x87E\x3\x2\x2"+ + "\x2\x87D\x875\x3\x2\x2\x2\x87D\x87E\x3\x2\x2\x2\x87E\x87F\x3\x2\x2\x2"+ + "\x87F\x880\a&\x2\x2\x880\x881\x5\x1BA\xDE\x2\x881\x883\x5\x148\xA5\x2"+ + "\x882\x884\x5\x1BA\xDE\x2\x883\x882\x3\x2\x2\x2\x883\x884\x3\x2\x2\x2"+ + "\x884\x885\x3\x2\x2\x2\x885\x887\a\xD8\x2\x2\x886\x888\x5\x1BA\xDE\x2"+ + "\x887\x886\x3\x2\x2\x2\x887\x888\x3\x2\x2\x2\x888\x889\x3\x2\x2\x2\x889"+ + "\x88A\x5\x148\xA5\x2\x88A\x147\x3\x2\x2\x2\x88B\x88D\a\xD6\x2\x2\x88C"+ + "\x88E\x5\x1BA\xDE\x2\x88D\x88C\x3\x2\x2\x2\x88D\x88E\x3\x2\x2\x2\x88E"+ + "\x88F\x3\x2\x2\x2\x88F\x891\x5\x176\xBC\x2\x890\x892\x5\x1BA\xDE\x2\x891"+ + "\x890\x3\x2\x2\x2\x891\x892\x3\x2\x2\x2\x892\x893\x3\x2\x2\x2\x893\x895"+ + "\a)\x2\x2\x894\x896\x5\x1BA\xDE\x2\x895\x894\x3\x2\x2\x2\x895\x896\x3"+ + "\x2\x2\x2\x896\x897\x3\x2\x2\x2\x897\x899\x5\x176\xBC\x2\x898\x89A\x5"+ + "\x1BA\xDE\x2\x899\x898\x3\x2\x2\x2\x899\x89A\x3\x2\x2\x2\x89A\x89B\x3"+ + "\x2\x2\x2\x89B\x89C\a\xDD\x2\x2\x89C\x149\x3\x2\x2\x2\x89D\x89E\t\xF\x2"+ + "\x2\x89E\x14B\x3\x2\x2\x2\x89F\x8AA\x5\x14E\xA8\x2\x8A0\x8A2\x5\x1BA\xDE"+ + "\x2\x8A1\x8A0\x3\x2\x2\x2\x8A1\x8A2\x3\x2\x2\x2\x8A2\x8A3\x3\x2\x2\x2"+ + "\x8A3\x8A5\a)\x2\x2\x8A4\x8A6\x5\x1BA\xDE\x2\x8A5\x8A4\x3\x2\x2\x2\x8A5"+ + "\x8A6\x3\x2\x2\x2\x8A6\x8A7\x3\x2\x2\x2\x8A7\x8A9\x5\x14E\xA8\x2\x8A8"+ + "\x8A1\x3\x2\x2\x2\x8A9\x8AC\x3\x2\x2\x2\x8AA\x8A8\x3\x2\x2\x2\x8AA\x8AB"+ + "\x3\x2\x2\x2\x8AB\x14D\x3\x2\x2\x2\x8AC\x8AA\x3\x2\x2\x2\x8AD\x8AE\x5"+ + "\x176\xBC\x2\x8AE\x8AF\x5\x1BA\xDE\x2\x8AF\x8B0\a\xC0\x2\x2\x8B0\x8B1"+ + "\x5\x1BA\xDE\x2\x8B1\x8B3\x3\x2\x2\x2\x8B2\x8AD\x3\x2\x2\x2\x8B2\x8B3"+ + "\x3\x2\x2\x2\x8B3\x8B4\x3\x2\x2\x2\x8B4\x8B5\x5\x176\xBC\x2\x8B5\x14F"+ + "\x3\x2\x2\x2\x8B6\x8BA\x5\x152\xAA\x2\x8B7\x8BA\x5\x1A0\xD1\x2\x8B8\x8BA"+ + "\x5\x19E\xD0\x2\x8B9\x8B6\x3\x2\x2\x2\x8B9\x8B7\x3\x2\x2\x2\x8B9\x8B8"+ + "\x3\x2\x2\x2\x8BA\x151\x3\x2\x2\x2\x8BB\x8BE\x5\x156\xAC\x2\x8BC\x8BE"+ + "\x5\x154\xAB\x2\x8BD\x8BB\x3\x2\x2\x2\x8BD\x8BC\x3\x2\x2\x2\x8BE\x153"+ + "\x3\x2\x2\x2\x8BF\x8C0\x5\x158\xAD\x2\x8C0\x155\x3\x2\x2\x2\x8C1\x8C2"+ + "\x5\x154\xAB\x2\x8C2\x8C3\x5\x172\xBA\x2\x8C3\x157\x3\x2\x2\x2\x8C4\x8C9"+ + "\a\xEB\x2\x2\x8C5\x8C9\x5\x19C\xCF\x2\x8C6\x8C9\x5\x15A\xAE\x2\x8C7\x8C9"+ + "\a\a\x2\x2\x8C8\x8C4\x3\x2\x2\x2\x8C8\x8C5\x3\x2\x2\x2\x8C8\x8C6\x3\x2"+ + "\x2\x2\x8C8\x8C7\x3\x2\x2\x2\x8C9\x159\x3\x2\x2\x2\x8CA\x8CE\a\xDE\x2"+ + "\x2\x8CB\x8CD\x5\x15C\xAF\x2\x8CC\x8CB\x3\x2\x2\x2\x8CD\x8D0\x3\x2\x2"+ + "\x2\x8CE\x8CC\x3\x2\x2\x2\x8CE\x8CF\x3\x2\x2\x2\x8CF\x8D1\x3\x2\x2\x2"+ + "\x8D0\x8CE\x3\x2\x2\x2\x8D1\x8D2\a\xDF\x2\x2\x8D2\x15B\x3\x2\x2\x2\x8D3"+ + "\x8D6\n\x10\x2\x2\x8D4\x8D6\x5\x15A\xAE\x2\x8D5\x8D3\x3\x2\x2\x2\x8D5"+ + "\x8D4\x3\x2\x2\x2\x8D6\x15D\x3\x2\x2\x2\x8D7\x8D9\a\x39\x2\x2\x8D8\x8DA"+ + "\x5\x1BA\xDE\x2\x8D9\x8D8\x3\x2\x2\x2\x8D9\x8DA\x3\x2\x2\x2\x8DA\x8DD"+ + "\x3\x2\x2\x2\x8DB\x8DC\a\x8E\x2\x2\x8DC\x8DE\x5\x1BA\xDE\x2\x8DD\x8DB"+ + "\x3\x2\x2\x2\x8DD\x8DE\x3\x2\x2\x2\x8DE\x8DF\x3\x2\x2\x2\x8DF\x8E4\x5"+ + "\x170\xB9\x2\x8E0\x8E2\x5\x1BA\xDE\x2\x8E1\x8E0\x3\x2\x2\x2\x8E1\x8E2"+ + "\x3\x2\x2\x2\x8E2\x8E3\x3\x2\x2\x2\x8E3\x8E5\x5\x166\xB4\x2\x8E4\x8E1"+ + "\x3\x2\x2\x2\x8E4\x8E5\x3\x2\x2\x2\x8E5\x15F\x3\x2\x2\x2\x8E6\x8E7\t\x11"+ + "\x2\x2\x8E7\x161\x3\x2\x2\x2\x8E8\x8E9\t\x12\x2\x2\x8E9\x163\x3\x2\x2"+ + "\x2\x8EA\x902\x5\x178\xBD\x2\x8EB\x902\x5\x182\xC2\x2\x8EC\x902\x5\x184"+ + "\xC3\x2\x8ED\x8EF\a\xD6\x2\x2\x8EE\x8F0\x5\x1BA\xDE\x2\x8EF\x8EE\x3\x2"+ + "\x2\x2\x8EF\x8F0\x3\x2\x2\x2\x8F0\x8F1\x3\x2\x2\x2\x8F1\x8F3\x5\x164\xB3"+ + "\x2\x8F2\x8F4\x5\x1BA\xDE\x2\x8F3\x8F2\x3\x2\x2\x2\x8F3\x8F4\x3\x2\x2"+ + "\x2\x8F4\x8F5\x3\x2\x2\x2\x8F5\x8F6\a\xDD\x2\x2\x8F6\x902\x3\x2\x2\x2"+ + "\x8F7\x8F8\a\xC3\x2\x2\x8F8\x8F9\x5\x1BA\xDE\x2\x8F9\x8FA\x5\x164\xB3"+ + "\x2\x8FA\x902\x3\x2\x2\x2\x8FB\x8FC\a\x8E\x2\x2\x8FC\x8FD\x5\x1BA\xDE"+ + "\x2\x8FD\x8FE\x5\x164\xB3\x2\x8FE\x902\x3\x2\x2\x2\x8FF\x900\a.\x2\x2"+ + "\x900\x902\x5\x176\xBC\x2\x901\x8EA\x3\x2\x2\x2\x901\x8EB\x3\x2\x2\x2"+ + "\x901\x8EC\x3\x2\x2\x2\x901\x8ED\x3\x2\x2\x2\x901\x8F7\x3\x2\x2\x2\x901"+ + "\x8FB\x3\x2\x2\x2\x901\x8FF\x3\x2\x2\x2\x902\x165\x3\x2\x2\x2\x903\x905"+ + "\a\xD9\x2\x2\x904\x906\x5\x1BA\xDE\x2\x905\x904\x3\x2\x2\x2\x905\x906"+ + "\x3\x2\x2\x2\x906\x909\x3\x2\x2\x2\x907\x90A\x5\x16E\xB8\x2\x908\x90A"+ + "\x5\x158\xAD\x2\x909\x907\x3\x2\x2\x2\x909\x908\x3\x2\x2\x2\x90A\x167"+ + "\x3\x2\x2\x2\x90B\x90E\x5\x16A\xB6\x2\x90C\x90E\x5\x16C\xB7\x2\x90D\x90B"+ + "\x3\x2\x2\x2\x90D\x90C\x3\x2\x2\x2\x90E\x169\x3\x2\x2\x2\x90F\x911\x5"+ + "\x150\xA9\x2\x910\x912\x5\x1BA\xDE\x2\x911\x910\x3\x2\x2\x2\x911\x912"+ + "\x3\x2\x2\x2\x912\x913\x3\x2\x2\x2\x913\x914\a*\x2\x2\x914\x16B\x3\x2"+ + "\x2\x2\x915\x917\x5\x16E\xB8\x2\x916\x918\x5\x1BA\xDE\x2\x917\x916\x3"+ + "\x2\x2\x2\x917\x918\x3\x2\x2\x2\x918\x91A\x3\x2\x2\x2\x919\x91B\a*\x2"+ + "\x2\x91A\x919\x3\x2\x2\x2\x91A\x91B\x3\x2\x2\x2\x91B\x16D\x3\x2\x2\x2"+ + "\x91C\x91D\t\x13\x2\x2\x91D\x16F\x3\x2\x2\x2\x91E\x921\x5\x160\xB1\x2"+ + "\x91F\x921\x5\x164\xB3\x2\x920\x91E\x3\x2\x2\x2\x920\x91F\x3\x2\x2\x2"+ + "\x921\x92A\x3\x2\x2\x2\x922\x924\x5\x1BA\xDE\x2\x923\x922\x3\x2\x2\x2"+ + "\x923\x924\x3\x2\x2\x2\x924\x925\x3\x2\x2\x2\x925\x927\a\xD6\x2\x2\x926"+ + "\x928\x5\x1BA\xDE\x2\x927\x926\x3\x2\x2\x2\x927\x928\x3\x2\x2\x2\x928"+ + "\x929\x3\x2\x2\x2\x929\x92B\a\xDD\x2\x2\x92A\x923\x3\x2\x2\x2\x92A\x92B"+ + "\x3\x2\x2\x2\x92B\x171\x3\x2\x2\x2\x92C\x92D\t\x14\x2\x2\x92D\x173\x3"+ + "\x2\x2\x2\x92E\x92F\t\x15\x2\x2\x92F\x175\x3\x2\x2\x2\x930\x931\b\xBC"+ + "\x1\x2\x931\x932\a\xC3\x2\x2\x932\x933\x5\x1BA\xDE\x2\x933\x934\x5\x176"+ + "\xBC\x13\x934\x956\x3\x2\x2\x2\x935\x936\a\x8E\x2\x2\x936\x937\x5\x1BA"+ + "\xDE\x2\x937\x938\x5\x176\xBC\x12\x938\x956\x3\x2\x2\x2\x939\x93B\a\xD8"+ + "\x2\x2\x93A\x93C\x5\x1BA\xDE\x2\x93B\x93A\x3\x2\x2\x2\x93B\x93C\x3\x2"+ + "\x2\x2\x93C\x93D\x3\x2\x2\x2\x93D\x956\x5\x176\xBC\x10\x93E\x940\a\x8F"+ + "\x2\x2\x93F\x941\x5\x1BA\xDE\x2\x940\x93F\x3\x2\x2\x2\x940\x941\x3\x2"+ + "\x2\x2\x941\x942\x3\x2\x2\x2\x942\x956\x5\x176\xBC\t\x943\x944\a.\x2\x2"+ + "\x944\x956\x5\x176\xBC\x3\x945\x947\x5\x1BA\xDE\x2\x946\x945\x3\x2\x2"+ + "\x2\x946\x947\x3\x2\x2\x2\x947\x948\x3\x2\x2\x2\x948\x94A\a\xD6\x2\x2"+ + "\x949\x94B\x5\x1BA\xDE\x2\x94A\x949\x3\x2\x2\x2\x94A\x94B\x3\x2\x2\x2"+ + "\x94B\x94C\x3\x2\x2\x2\x94C\x94E\x5\x176\xBC\x2\x94D\x94F\x5\x1BA\xDE"+ + "\x2\x94E\x94D\x3\x2\x2\x2\x94E\x94F\x3\x2\x2\x2\x94F\x950\x3\x2\x2\x2"+ + "\x950\x951\a\xDD\x2\x2\x951\x956\x3\x2\x2\x2\x952\x956\x5\x178\xBD\x2"+ + "\x953\x956\x5\x182\xC2\x2\x954\x956\x5\x184\xC3\x2\x955\x930\x3\x2\x2"+ + "\x2\x955\x935\x3\x2\x2\x2\x955\x939\x3\x2\x2\x2\x955\x93E\x3\x2\x2\x2"+ + "\x955\x943\x3\x2\x2\x2\x955\x946\x3\x2\x2\x2\x955\x952\x3\x2\x2\x2\x955"+ + "\x953\x3\x2\x2\x2\x955\x954\x3\x2\x2\x2\x956\x9C5\x3\x2\x2\x2\x957\x959"+ + "\f\x11\x2\x2\x958\x95A\x5\x1BA\xDE\x2\x959\x958\x3\x2\x2\x2\x959\x95A"+ + "\x3\x2\x2\x2\x95A\x95B\x3\x2\x2\x2\x95B\x95D\a\xDC\x2\x2\x95C\x95E\x5"+ + "\x1BA\xDE\x2\x95D\x95C\x3\x2\x2\x2\x95D\x95E\x3\x2\x2\x2\x95E\x95F\x3"+ + "\x2\x2\x2\x95F\x9C4\x5\x176\xBC\x12\x960\x962\f\xF\x2\x2\x961\x963\x5"+ + "\x1BA\xDE\x2\x962\x961\x3\x2\x2\x2\x962\x963\x3\x2\x2\x2\x963\x964\x3"+ + "\x2\x2\x2\x964\x966\t\x16\x2\x2\x965\x967\x5\x1BA\xDE\x2\x966\x965\x3"+ + "\x2\x2\x2\x966\x967\x3\x2\x2\x2\x967\x968\x3\x2\x2\x2\x968\x9C4\x5\x176"+ + "\xBC\x10\x969\x96B\f\xE\x2\x2\x96A\x96C\x5\x1BA\xDE\x2\x96B\x96A\x3\x2"+ + "\x2\x2\x96B\x96C\x3\x2\x2\x2\x96C\x96D\x3\x2\x2\x2\x96D\x96F\a\xD1\x2"+ + "\x2\x96E\x970\x5\x1BA\xDE\x2\x96F\x96E\x3\x2\x2\x2\x96F\x970\x3\x2\x2"+ + "\x2\x970\x971\x3\x2\x2\x2\x971\x9C4\x5\x176\xBC\xF\x972\x974\f\r\x2\x2"+ + "\x973\x975\x5\x1BA\xDE\x2\x974\x973\x3\x2\x2\x2\x974\x975\x3\x2\x2\x2"+ + "\x975\x976\x3\x2\x2\x2\x976\x978\a\x8B\x2\x2\x977\x979\x5\x1BA\xDE\x2"+ + "\x978\x977\x3\x2\x2\x2\x978\x979\x3\x2\x2\x2\x979\x97A\x3\x2\x2\x2\x97A"+ + "\x9C4\x5\x176\xBC\xE\x97B\x97D\f\f\x2\x2\x97C\x97E\x5\x1BA\xDE\x2\x97D"+ + "\x97C\x3\x2\x2\x2\x97D\x97E\x3\x2\x2\x2\x97E\x97F\x3\x2\x2\x2\x97F\x981"+ + "\t\x17\x2\x2\x980\x982\x5\x1BA\xDE\x2\x981\x980\x3\x2\x2\x2\x981\x982"+ + "\x3\x2\x2\x2\x982\x983\x3\x2\x2\x2\x983\x9C4\x5\x176\xBC\r\x984\x986\f"+ + "\v\x2\x2\x985\x987\x5\x1BA\xDE\x2\x986\x985\x3\x2\x2\x2\x986\x987\x3\x2"+ + "\x2\x2\x987\x988\x3\x2\x2\x2\x988\x98A\a\x32\x2\x2\x989\x98B\x5\x1BA\xDE"+ + "\x2\x98A\x989\x3\x2\x2\x2\x98A\x98B\x3\x2\x2\x2\x98B\x98C\x3\x2\x2\x2"+ + "\x98C\x9C4\x5\x176\xBC\f\x98D\x98F\f\n\x2\x2\x98E\x990\x5\x1BA\xDE\x2"+ + "\x98F\x98E\x3\x2\x2\x2\x98F\x990\x3\x2\x2\x2\x990\x991\x3\x2\x2\x2\x991"+ + "\x993\t\x12\x2\x2\x992\x994\x5\x1BA\xDE\x2\x993\x992\x3\x2\x2\x2\x993"+ + "\x994\x3\x2\x2\x2\x994\x995\x3\x2\x2\x2\x995\x9C4\x5\x176\xBC\v\x996\x998"+ + "\f\b\x2\x2\x997\x999\x5\x1BA\xDE\x2\x998\x997\x3\x2\x2\x2\x998\x999\x3"+ + "\x2\x2\x2\x999\x99A\x3\x2\x2\x2\x99A\x99C\a\x36\x2\x2\x99B\x99D\x5\x1BA"+ + "\xDE\x2\x99C\x99B\x3\x2\x2\x2\x99C\x99D\x3\x2\x2\x2\x99D\x99E\x3\x2\x2"+ + "\x2\x99E\x9C4\x5\x176\xBC\t\x99F\x9A1\f\a\x2\x2\x9A0\x9A2\x5\x1BA\xDE"+ + "\x2\x9A1\x9A0\x3\x2\x2\x2\x9A1\x9A2\x3\x2\x2\x2\x9A2\x9A3\x3\x2\x2\x2"+ + "\x9A3\x9A5\a\x9C\x2\x2\x9A4\x9A6\x5\x1BA\xDE\x2\x9A5\x9A4\x3\x2\x2\x2"+ + "\x9A5\x9A6\x3\x2\x2\x2\x9A6\x9A7\x3\x2\x2\x2\x9A7\x9C4\x5\x176\xBC\b\x9A8"+ + "\x9AA\f\x6\x2\x2\x9A9\x9AB\x5\x1BA\xDE\x2\x9AA\x9A9\x3\x2\x2\x2\x9AA\x9AB"+ + "\x3\x2\x2\x2\x9AB\x9AC\x3\x2\x2\x2\x9AC\x9AE\a\xCE\x2\x2\x9AD\x9AF\x5"+ + "\x1BA\xDE\x2\x9AE\x9AD\x3\x2\x2\x2\x9AE\x9AF\x3\x2\x2\x2\x9AF\x9B0\x3"+ + "\x2\x2\x2\x9B0\x9C4\x5\x176\xBC\a\x9B1\x9B3\f\x5\x2\x2\x9B2\x9B4\x5\x1BA"+ + "\xDE\x2\x9B3\x9B2\x3\x2\x2\x2\x9B3\x9B4\x3\x2\x2\x2\x9B4\x9B5\x3\x2\x2"+ + "\x2\x9B5\x9B7\a\x66\x2\x2\x9B6\x9B8\x5\x1BA\xDE\x2\x9B7\x9B6\x3\x2\x2"+ + "\x2\x9B7\x9B8\x3\x2\x2\x2\x9B8\x9B9\x3\x2\x2\x2\x9B9\x9C4\x5\x176\xBC"+ + "\x6\x9BA\x9BC\f\x4\x2\x2\x9BB\x9BD\x5\x1BA\xDE\x2\x9BC\x9BB\x3\x2\x2\x2"+ + "\x9BC\x9BD\x3\x2\x2\x2\x9BD\x9BE\x3\x2\x2\x2\x9BE\x9C0\ax\x2\x2\x9BF\x9C1"+ + "\x5\x1BA\xDE\x2\x9C0\x9BF\x3\x2\x2\x2\x9C0\x9C1\x3\x2\x2\x2\x9C1\x9C2"+ + "\x3\x2\x2\x2\x9C2\x9C4\x5\x176\xBC\x5\x9C3\x957\x3\x2\x2\x2\x9C3\x960"+ + "\x3\x2\x2\x2\x9C3\x969\x3\x2\x2\x2\x9C3\x972\x3\x2\x2\x2\x9C3\x97B\x3"+ + "\x2\x2\x2\x9C3\x984\x3\x2\x2\x2\x9C3\x98D\x3\x2\x2\x2\x9C3\x996\x3\x2"+ + "\x2\x2\x9C3\x99F\x3\x2\x2\x2\x9C3\x9A8\x3\x2\x2\x2\x9C3\x9B1\x3\x2\x2"+ + "\x2\x9C3\x9BA\x3\x2\x2\x2\x9C4\x9C7\x3\x2\x2\x2\x9C5\x9C3\x3\x2\x2\x2"+ + "\x9C5\x9C6\x3\x2\x2\x2\x9C6\x177\x3\x2\x2\x2\x9C7\x9C5\x3\x2\x2\x2\x9C8"+ + "\x9D0\x5\x16E\xB8\x2\x9C9\x9D0\a\xE5\x2\x2\x9CA\x9D0\a\xE0\x2\x2\x9CB"+ + "\x9CD\x5\x17A\xBE\x2\x9CC\x9CE\x5\x172\xBA\x2\x9CD\x9CC\x3\x2\x2\x2\x9CD"+ + "\x9CE\x3\x2\x2\x2\x9CE\x9D0\x3\x2\x2\x2\x9CF\x9C8\x3\x2\x2\x2\x9CF\x9C9"+ + "\x3\x2\x2\x2\x9CF\x9CA\x3\x2\x2\x2\x9CF\x9CB\x3\x2\x2\x2\x9D0\x179\x3"+ + "\x2\x2\x2\x9D1\x9D5\x5\x17C\xBF\x2\x9D2\x9D5\x5\x17E\xC0\x2\x9D3\x9D5"+ + "\x5\x180\xC1\x2\x9D4\x9D1\x3\x2\x2\x2\x9D4\x9D2\x3\x2\x2\x2\x9D4\x9D3"+ + "\x3\x2\x2\x2\x9D5\x17B\x3\x2\x2\x2\x9D6\x9D7\t\x18\x2\x2\x9D7\x17D\x3"+ + "\x2\x2\x2\x9D8\x9D9\a\x90\x2\x2\x9D9\x17F\x3\x2\x2\x2\x9DA\x9DB\t\x19"+ + "\x2\x2\x9DB\x181\x3\x2\x2\x2\x9DC\x9DD\b\xC2\x1\x2\x9DD\x9EA\a\x89\x2"+ + "\x2\x9DE\x9EA\x5\x152\xAA\x2\x9DF\x9E1\a-\x2\x2\x9E0\x9E2\x5\x1B8\xDD"+ + "\x2\x9E1\x9E0\x3\x2\x2\x2\x9E1\x9E2\x3\x2\x2\x2\x9E2\x9E3\x3\x2\x2\x2"+ + "\x9E3\x9EA\x5\x150\xA9\x2\x9E4\x9E6\a,\x2\x2\x9E5\x9E7\x5\x1B8\xDD\x2"+ + "\x9E6\x9E5\x3\x2\x2\x2\x9E6\x9E7\x3\x2\x2\x2\x9E7\x9E8\x3\x2\x2\x2\x9E8"+ + "\x9EA\x5\x150\xA9\x2\x9E9\x9DC\x3\x2\x2\x2\x9E9\x9DE\x3\x2\x2\x2\x9E9"+ + "\x9DF\x3\x2\x2\x2\x9E9\x9E4\x3\x2\x2\x2\x9EA\xA0B\x3\x2\x2\x2\x9EB\x9EC"+ + "\f\t\x2\x2\x9EC\x9EE\a\xD6\x2\x2\x9ED\x9EF\x5\x1BA\xDE\x2\x9EE\x9ED\x3"+ + "\x2\x2\x2\x9EE\x9EF\x3\x2\x2\x2\x9EF\x9F1\x3\x2\x2\x2\x9F0\x9F2\x5\x186"+ + "\xC4\x2\x9F1\x9F0\x3\x2\x2\x2\x9F1\x9F2\x3\x2\x2\x2\x9F2\x9F4\x3\x2\x2"+ + "\x2\x9F3\x9F5\x5\x1BA\xDE\x2\x9F4\x9F3\x3\x2\x2\x2\x9F4\x9F5\x3\x2\x2"+ + "\x2\x9F5\x9F6\x3\x2\x2\x2\x9F6\xA0A\a\xDD\x2\x2\x9F7\x9F9\f\b\x2\x2\x9F8"+ + "\x9FA\x5\x1B8\xDD\x2\x9F9\x9F8\x3\x2\x2\x2\x9F9\x9FA\x3\x2\x2\x2\x9FA"+ + "\x9FB\x3\x2\x2\x2\x9FB\x9FD\a-\x2\x2\x9FC\x9FE\x5\x1B8\xDD\x2\x9FD\x9FC"+ + "\x3\x2\x2\x2\x9FD\x9FE\x3\x2\x2\x2\x9FE\x9FF\x3\x2\x2\x2\x9FF\xA0A\x5"+ + "\x150\xA9\x2\xA00\xA02\f\a\x2\x2\xA01\xA03\x5\x1B8\xDD\x2\xA02\xA01\x3"+ + "\x2\x2\x2\xA02\xA03\x3\x2\x2\x2\xA03\xA04\x3\x2\x2\x2\xA04\xA06\a,\x2"+ + "\x2\xA05\xA07\x5\x1B8\xDD\x2\xA06\xA05\x3\x2\x2\x2\xA06\xA07\x3\x2\x2"+ + "\x2\xA07\xA08\x3\x2\x2\x2\xA08\xA0A\x5\x150\xA9\x2\xA09\x9EB\x3\x2\x2"+ + "\x2\xA09\x9F7\x3\x2\x2\x2\xA09\xA00\x3\x2\x2\x2\xA0A\xA0D\x3\x2\x2\x2"+ + "\xA0B\xA09\x3\x2\x2\x2\xA0B\xA0C\x3\x2\x2\x2\xA0C\x183\x3\x2\x2\x2\xA0D"+ + "\xA0B\x3\x2\x2\x2\xA0E\xA24\x5\x160\xB1\x2\xA0F\xA11\a\xDE\x2\x2\xA10"+ + "\xA12\x5\x1BA\xDE\x2\xA11\xA10\x3\x2\x2\x2\xA11\xA12\x3\x2\x2\x2\xA12"+ + "\xA13\x3\x2\x2\x2\xA13\xA15\x5\x160\xB1\x2\xA14\xA16\x5\x1BA\xDE\x2\xA15"+ + "\xA14\x3\x2\x2\x2\xA15\xA16\x3\x2\x2\x2\xA16\xA17\x3\x2\x2\x2\xA17\xA18"+ + "\a\xDF\x2\x2\xA18\xA24\x3\x2\x2\x2\xA19\xA24\a\x92\x2\x2\xA1A\xA1C\a\xDE"+ + "\x2\x2\xA1B\xA1D\x5\x1BA\xDE\x2\xA1C\xA1B\x3\x2\x2\x2\xA1C\xA1D\x3\x2"+ + "\x2\x2\xA1D\xA1E\x3\x2\x2\x2\xA1E\xA20\a\x92\x2\x2\xA1F\xA21\x5\x1BA\xDE"+ + "\x2\xA20\xA1F\x3\x2\x2\x2\xA20\xA21\x3\x2\x2\x2\xA21\xA22\x3\x2\x2\x2"+ + "\xA22\xA24\a\xDF\x2\x2\xA23\xA0E\x3\x2\x2\x2\xA23\xA0F\x3\x2\x2\x2\xA23"+ + "\xA19\x3\x2\x2\x2\xA23\xA1A\x3\x2\x2\x2\xA24\x185\x3\x2\x2\x2\xA25\xA26"+ + "\x5\x188\xC5\x2\xA26\x187\x3\x2\x2\x2\xA27\xA29\x5\x18A\xC6\x2\xA28\xA2A"+ + "\x5\x1BA\xDE\x2\xA29\xA28\x3\x2\x2\x2\xA29\xA2A\x3\x2\x2\x2\xA2A\xA2C"+ + "\x3\x2\x2\x2\xA2B\xA27\x3\x2\x2\x2\xA2C\xA2F\x3\x2\x2\x2\xA2D\xA2B\x3"+ + "\x2\x2\x2\xA2D\xA2E\x3\x2\x2\x2\xA2E\xA30\x3\x2\x2\x2\xA2F\xA2D\x3\x2"+ + "\x2\x2\xA30\xA3C\x5\x18E\xC8\x2\xA31\xA33\x5\x18A\xC6\x2\xA32\xA34\x5"+ + "\x1BA\xDE\x2\xA33\xA32\x3\x2\x2\x2\xA33\xA34\x3\x2\x2\x2\xA34\xA36\x3"+ + "\x2\x2\x2\xA35\xA31\x3\x2\x2\x2\xA36\xA39\x3\x2\x2\x2\xA37\xA35\x3\x2"+ + "\x2\x2\xA37\xA38\x3\x2\x2\x2\xA38\xA3A\x3\x2\x2\x2\xA39\xA37\x3\x2\x2"+ + "\x2\xA3A\xA3C\x5\x190\xC9\x2\xA3B\xA2D\x3\x2\x2\x2\xA3B\xA37\x3\x2\x2"+ + "\x2\xA3C\x189\x3\x2\x2\x2\xA3D\xA3F\x5\x18C\xC7\x2\xA3E\xA40\x5\x1BA\xDE"+ + "\x2\xA3F\xA3E\x3\x2\x2\x2\xA3F\xA40\x3\x2\x2\x2\xA40\xA41\x3\x2\x2\x2"+ + "\xA41\xA42\a)\x2\x2\xA42\xA48\x3\x2\x2\x2\xA43\xA45\x5\x1BA\xDE\x2\xA44"+ + "\xA43\x3\x2\x2\x2\xA44\xA45\x3\x2\x2\x2\xA45\xA46\x3\x2\x2\x2\xA46\xA48"+ + "\a)\x2\x2\xA47\xA3D\x3\x2\x2\x2\xA47\xA44\x3\x2\x2\x2\xA48\x18B\x3\x2"+ + "\x2\x2\xA49\xA4A\x5\x194\xCB\x2\xA4A\x18D\x3\x2\x2\x2\xA4B\xA4C\x5\x194"+ + "\xCB\x2\xA4C\x18F\x3\x2\x2\x2\xA4D\xA58\x5\x192\xCA\x2\xA4E\xA50\x5\x1BA"+ + "\xDE\x2\xA4F\xA4E\x3\x2\x2\x2\xA4F\xA50\x3\x2\x2\x2\xA50\xA51\x3\x2\x2"+ + "\x2\xA51\xA53\a)\x2\x2\xA52\xA54\x5\x1BA\xDE\x2\xA53\xA52\x3\x2\x2\x2"+ + "\xA53\xA54\x3\x2\x2\x2\xA54\xA55\x3\x2\x2\x2\xA55\xA57\x5\x192\xCA\x2"+ + "\xA56\xA4F\x3\x2\x2\x2\xA57\xA5A\x3\x2\x2\x2\xA58\xA56\x3\x2\x2\x2\xA58"+ + "\xA59\x3\x2\x2\x2\xA59\x191\x3\x2\x2\x2\xA5A\xA58\x3\x2\x2\x2\xA5B\xA5D"+ + "\x5\x150\xA9\x2\xA5C\xA5E\x5\x1BA\xDE\x2\xA5D\xA5C\x3\x2\x2\x2\xA5D\xA5E"+ + "\x3\x2\x2\x2\xA5E\xA5F\x3\x2\x2\x2\xA5F\xA61\a\xCF\x2\x2\xA60\xA62\x5"+ + "\x1BA\xDE\x2\xA61\xA60\x3\x2\x2\x2\xA61\xA62\x3\x2\x2\x2\xA62\xA63\x3"+ + "\x2\x2\x2\xA63\xA64\x5\x194\xCB\x2\xA64\x193\x3\x2\x2\x2\xA65\xA66\a="+ + "\x2\x2\xA66\xA68\x5\x1BA\xDE\x2\xA67\xA65\x3\x2\x2\x2\xA67\xA68\x3\x2"+ + "\x2\x2\xA68\xA69\x3\x2\x2\x2\xA69\xA72\x5\x176\xBC\x2\xA6A\xA72\x5\x19A"+ + "\xCE\x2\xA6B\xA6C\x5\x196\xCC\x2\xA6C\xA6D\x5\x1BA\xDE\x2\xA6D\xA6E\a"+ + "\xC0\x2\x2\xA6E\xA6F\x5\x1BA\xDE\x2\xA6F\xA70\x5\x198\xCD\x2\xA70\xA72"+ + "\x3\x2\x2\x2\xA71\xA67\x3\x2\x2\x2\xA71\xA6A\x3\x2\x2\x2\xA71\xA6B\x3"+ + "\x2\x2\x2\xA72\x195\x3\x2\x2\x2\xA73\xA74\x5\x176\xBC\x2\xA74\x197\x3"+ + "\x2\x2\x2\xA75\xA76\x5\x176\xBC\x2\xA76\x199\x3\x2\x2\x2\xA77\xA78\a\x34"+ + "\x2\x2\xA78\xA79\x5\x1BA\xDE\x2\xA79\xA7A\x5\x176\xBC\x2\xA7A\x19B\x3"+ + "\x2\x2\x2\xA7B\xA7C\t\x1A\x2\x2\xA7C\x19D\x3\x2\x2\x2\xA7D\xA7E\a\x39"+ + "\x2\x2\xA7E\x19F\x3\x2\x2\x2\xA7F\xA80\t\x1B\x2\x2\xA80\x1A1\x3\x2\x2"+ + "\x2\xA81\xA83\x5\x1BA\xDE\x2\xA82\xA81\x3\x2\x2\x2\xA82\xA83\x3\x2\x2"+ + "\x2\xA83\xA84\x3\x2\x2\x2\xA84\xA86\a\xE6\x2\x2\xA85\xA87\x5\x1BA\xDE"+ + "\x2\xA86\xA85\x3\x2\x2\x2\xA86\xA87\x3\x2\x2\x2\xA87\xA8D\x3\x2\x2\x2"+ + "\xA88\xA8A\x5\x1BA\xDE\x2\xA89\xA88\x3\x2\x2\x2\xA89\xA8A\x3\x2\x2\x2"+ + "\xA8A\xA8B\x3\x2\x2\x2\xA8B\xA8D\x5\x1A6\xD4\x2\xA8C\xA82\x3\x2\x2\x2"+ + "\xA8C\xA89\x3\x2\x2\x2\xA8D\x1A3\x3\x2\x2\x2\xA8E\xA97\x5\x1A2\xD2\x2"+ + "\xA8F\xA91\x5\x1BA\xDE\x2\xA90\xA8F\x3\x2\x2\x2\xA90\xA91\x3\x2\x2\x2"+ + "\xA91\xA92\x3\x2\x2\x2\xA92\xA94\a*\x2\x2\xA93\xA95\x5\x1BA\xDE\x2\xA94"+ + "\xA93\x3\x2\x2\x2\xA94\xA95\x3\x2\x2\x2\xA95\xA97\x3\x2\x2\x2\xA96\xA8E"+ + "\x3\x2\x2\x2\xA96\xA90\x3\x2\x2\x2\xA97\xA9A\x3\x2\x2\x2\xA98\xA96\x3"+ + "\x2\x2\x2\xA98\xA99\x3\x2\x2\x2\xA99\x1A5\x3\x2\x2\x2\xA9A\xA98\x3\x2"+ + "\x2\x2\xA9B\xA9F\x5\x1AE\xD8\x2\xA9C\xA9F\x5\x1A8\xD5\x2\xA9D\xA9F\x5"+ + "\x1AA\xD6\x2\xA9E\xA9B\x3\x2\x2\x2\xA9E\xA9C\x3\x2\x2\x2\xA9E\xA9D\x3"+ + "\x2\x2\x2\xA9F\x1A7\x3\x2\x2\x2\xAA0\xAA2\a\xAD\x2\x2\xAA1\xAA3\x5\x1BA"+ + "\xDE\x2\xAA2\xAA1\x3\x2\x2\x2\xAA2\xAA3\x3\x2\x2\x2\xAA3\xAA4\x3\x2\x2"+ + "\x2\xAA4\xAA5\x5\x1AC\xD7\x2\xAA5\x1A9\x3\x2\x2\x2\xAA6\xAA7\a\xE7\x2"+ + "\x2\xAA7\xAA8\x5\x1AC\xD7\x2\xAA8\x1AB\x3\x2\x2\x2\xAA9\xAAC\a\xEC\x2"+ + "\x2\xAAA\xAAC\n\x1C\x2\x2\xAAB\xAA9\x3\x2\x2\x2\xAAB\xAAA\x3\x2\x2\x2"+ + "\xAAC\xAAF\x3\x2\x2\x2\xAAD\xAAB\x3\x2\x2\x2\xAAD\xAAE\x3\x2\x2\x2\xAAE"+ + "\x1AD\x3\x2\x2\x2\xAAF\xAAD\x3\x2\x2\x2\xAB0\xAB6\a\xE7\x2\x2\xAB1\xAB2"+ + "\a/\x2\x2\xAB2\xAB4\x5\x1B0\xD9\x2\xAB3\xAB5\x5\x1BA\xDE\x2\xAB4\xAB3"+ + "\x3\x2\x2\x2\xAB4\xAB5\x3\x2\x2\x2\xAB5\xAB7\x3\x2\x2\x2\xAB6\xAB1\x3"+ + "\x2\x2\x2\xAB7\xAB8\x3\x2\x2\x2\xAB8\xAB6\x3\x2\x2\x2\xAB8\xAB9\x3\x2"+ + "\x2\x2\xAB9\xABF\x3\x2\x2\x2\xABA\xABC\x5\x1BA\xDE\x2\xABB\xABA\x3\x2"+ + "\x2\x2\xABB\xABC\x3\x2\x2\x2\xABC\xABD\x3\x2\x2\x2\xABD\xABE\a*\x2\x2"+ + "\xABE\xAC0\x5\x1AC\xD7\x2\xABF\xABB\x3\x2\x2\x2\xABF\xAC0\x3\x2\x2\x2"+ + "\xAC0\x1AF\x3\x2\x2\x2\xAC1\xAC3\x5\x1B2\xDA\x2\xAC2\xAC4\x5\x1B4\xDB"+ + "\x2\xAC3\xAC2\x3\x2\x2\x2\xAC3\xAC4\x3\x2\x2\x2\xAC4\x1B1\x3\x2\x2\x2"+ + "\xAC5\xAC6\x5\x150\xA9\x2\xAC6\x1B3\x3\x2\x2\x2\xAC7\xAC8\x5\x1BA\xDE"+ + "\x2\xAC8\xAC9\x5\x1B6\xDC\x2\xAC9\xB04\x3\x2\x2\x2\xACA\xACB\x5\x1BA\xDE"+ + "\x2\xACB\xAD4\x5\x1B6\xDC\x2\xACC\xACE\x5\x1BA\xDE\x2\xACD\xACC\x3\x2"+ + "\x2\x2\xACD\xACE\x3\x2\x2\x2\xACE\xACF\x3\x2\x2\x2\xACF\xAD1\a)\x2\x2"+ + "\xAD0\xAD2\x5\x1BA\xDE\x2\xAD1\xAD0\x3\x2\x2\x2\xAD1\xAD2\x3\x2\x2\x2"+ + "\xAD2\xAD3\x3\x2\x2\x2\xAD3\xAD5\x5\x1B6\xDC\x2\xAD4\xACD\x3\x2\x2\x2"+ + "\xAD5\xAD6\x3\x2\x2\x2\xAD6\xAD4\x3\x2\x2\x2\xAD6\xAD7\x3\x2\x2\x2\xAD7"+ + "\xB04\x3\x2\x2\x2\xAD8\xADA\x5\x1BA\xDE\x2\xAD9\xAD8\x3\x2\x2\x2\xAD9"+ + "\xADA\x3\x2\x2\x2\xADA\xADB\x3\x2\x2\x2\xADB\xADD\a\xD6\x2\x2\xADC\xADE"+ + "\x5\x1BA\xDE\x2\xADD\xADC\x3\x2\x2\x2\xADD\xADE\x3\x2\x2\x2\xADE\xADF"+ + "\x3\x2\x2\x2\xADF\xB04\a\xDD\x2\x2\xAE0\xAE2\x5\x1BA\xDE\x2\xAE1\xAE0"+ + "\x3\x2\x2\x2\xAE1\xAE2\x3\x2\x2\x2\xAE2\xAE3\x3\x2\x2\x2\xAE3\xAE5\a\xD6"+ + "\x2\x2\xAE4\xAE6\x5\x1BA\xDE\x2\xAE5\xAE4\x3\x2\x2\x2\xAE5\xAE6\x3\x2"+ + "\x2\x2\xAE6\xAE7\x3\x2\x2\x2\xAE7\xAE9\x5\x1B6\xDC\x2\xAE8\xAEA\x5\x1BA"+ + "\xDE\x2\xAE9\xAE8\x3\x2\x2\x2\xAE9\xAEA\x3\x2\x2\x2\xAEA\xAEB\x3\x2\x2"+ + "\x2\xAEB\xAEC\a\xDD\x2\x2\xAEC\xB04\x3\x2\x2\x2\xAED\xAEF\x5\x1BA\xDE"+ + "\x2\xAEE\xAED\x3\x2\x2\x2\xAEE\xAEF\x3\x2\x2\x2\xAEF\xAF0\x3\x2\x2\x2"+ + "\xAF0\xAF1\a\xD6\x2\x2\xAF1\xAFA\x5\x1B6\xDC\x2\xAF2\xAF4\x5\x1BA\xDE"+ + "\x2\xAF3\xAF2\x3\x2\x2\x2\xAF3\xAF4\x3\x2\x2\x2\xAF4\xAF5\x3\x2\x2\x2"+ + "\xAF5\xAF7\a)\x2\x2\xAF6\xAF8\x5\x1BA\xDE\x2\xAF7\xAF6\x3\x2\x2\x2\xAF7"+ + "\xAF8\x3\x2\x2\x2\xAF8\xAF9\x3\x2\x2\x2\xAF9\xAFB\x5\x1B6\xDC\x2\xAFA"+ + "\xAF3\x3\x2\x2\x2\xAFB\xAFC\x3\x2\x2\x2\xAFC\xAFA\x3\x2\x2\x2\xAFC\xAFD"+ + "\x3\x2\x2\x2\xAFD\xAFF\x3\x2\x2\x2\xAFE\xB00\x5\x1BA\xDE\x2\xAFF\xAFE"+ + "\x3\x2\x2\x2\xAFF\xB00\x3\x2\x2\x2\xB00\xB01\x3\x2\x2\x2\xB01\xB02\a\xDD"+ + "\x2\x2\xB02\xB04\x3\x2\x2\x2\xB03\xAC7\x3\x2\x2\x2\xB03\xACA\x3\x2\x2"+ + "\x2\xB03\xAD9\x3\x2\x2\x2\xB03\xAE1\x3\x2\x2\x2\xB03\xAEE\x3\x2\x2\x2"+ + "\xB04\x1B5\x3\x2\x2\x2\xB05\xB06\x5\x176\xBC\x2\xB06\x1B7\x3\x2\x2\x2"+ + "\xB07\xB0B\a\xEC\x2\x2\xB08\xB0A\a\xE9\x2\x2\xB09\xB08\x3\x2\x2\x2\xB0A"+ + "\xB0D\x3\x2\x2\x2\xB0B\xB09\x3\x2\x2\x2\xB0B\xB0C\x3\x2\x2\x2\xB0C\x1B9"+ + "\x3\x2\x2\x2\xB0D\xB0B\x3\x2\x2\x2\xB0E\xB10\t\x1D\x2\x2\xB0F\xB0E\x3"+ + "\x2\x2\x2\xB10\xB11\x3\x2\x2\x2\xB11\xB0F\x3\x2\x2\x2\xB11\xB12\x3\x2"+ + "\x2\x2\xB12\x1BB\x3\x2\x2\x2\x1AB\x1C2\x1C6\x1CE\x1D4\x1D7\x1E1\x1E3\x1E9"+ + "\x1F2\x1F9\x1FF\x208\x20F\x213\x217\x21B\x220\x22C\x239\x23C\x249\x24C"+ + "\x253\x25B\x262\x28A\x29A\x2A2\x2A7\x2AC\x2B5\x2C9\x2CD\x2D5\x2E0\x2E6"+ + "\x2EA\x2EF\x2F6\x2FA\x304\x308\x30B\x311\x317\x321\x325\x328\x32E\x332"+ + "\x33C\x340\x34A\x34E\x352\x35E\x362\x365\x369\x36E\x375\x379\x37E\x386"+ + "\x38A\x38E\x396\x399\x39D\x3A1\x3AB\x3AF\x3B2\x3B8\x3BC\x3C2\x3C6\x3CB"+ + "\x3D4\x3D8\x3DB\x3DE\x3E2\x3EE\x3F2\x3F5\x3F8\x3FC\x405\x40B\x40F\x414"+ + "\x41B\x41E\x422\x429\x42F\x43D\x440\x443\x448\x44C\x450\x454\x459\x45C"+ + "\x45F\x465\x469\x46D\x471\x475\x478\x47B\x47E\x481\x484\x488\x490\x494"+ + "\x499\x4A1\x4A7\x4AB\x4B7\x4BB\x4DA\x4DF\x4E8\x4EF\x4F3\x4F6\x500\x504"+ + "\x509\x513\x519\x52E\x53C\x544\x549\x54D\x551\x555\x558\x55B\x55E\x578"+ + "\x57C\x58E\x592\x59A\x59E\x5A2\x5A6\x5AC\x5B0\x5B4\x5B9\x5BF\x5C2\x5C6"+ + "\x5CA\x5CD\x5D1\x5D6\x5D8\x5DC\x5E0\x5E3\x5E7\x5EA\x5F6\x5FA\x5FE\x606"+ + "\x60A\x618\x622\x626\x62B\x636\x63A\x63F\x645\x649\x64F\x652\x657\x660"+ + "\x664\x66A\x66D\x676\x67A\x680\x683\x68D\x691\x694\x697\x69A\x69E\x6A2"+ + "\x6A7\x6AC\x6B4\x6BA\x6BE\x6C3\x6CA\x6CF\x6D3\x6D7\x6DB\x6DF\x6E3\x6E5"+ + "\x6E9\x6ED\x6F3\x6FF\x701\x707\x709\x711\x715\x725\x729\x730\x734\x73E"+ + "\x742\x747\x74F\x757\x759\x75D\x768\x772\x776\x77D\x781\x785\x789\x78C"+ + "\x796\x7AC\x7B1\x7B5\x7C0\x7C6\x7C9\x7CC\x7D2\x7D6\x7DB\x7E0\x7E2\x7E8"+ + "\x7F3\x7F8\x7FE\x802\x807\x80C\x810\x814\x816\x81A\x81C\x821\x835\x837"+ + "\x83D\x83F\x843\x847\x84A\x84D\x851\x854\x858\x85C\x85E\x864\x866\x86A"+ + "\x86E\x873\x877\x87B\x87D\x883\x887\x88D\x891\x895\x899\x8A1\x8A5\x8AA"+ + "\x8B2\x8B9\x8BD\x8C8\x8CE\x8D5\x8D9\x8DD\x8E1\x8E4\x8EF\x8F3\x901\x905"+ + "\x909\x90D\x911\x917\x91A\x920\x923\x927\x92A\x93B\x940\x946\x94A\x94E"+ + "\x955\x959\x95D\x962\x966\x96B\x96F\x974\x978\x97D\x981\x986\x98A\x98F"+ + "\x993\x998\x99C\x9A1\x9A5\x9AA\x9AE\x9B3\x9B7\x9BC\x9C0\x9C3\x9C5\x9CD"+ + "\x9CF\x9D4\x9E1\x9E6\x9E9\x9EE\x9F1\x9F4\x9F9\x9FD\xA02\xA06\xA09\xA0B"+ + "\xA11\xA15\xA1C\xA20\xA23\xA29\xA2D\xA33\xA37\xA3B\xA3F\xA44\xA47\xA4F"+ + "\xA53\xA58\xA5D\xA61\xA67\xA71\xA82\xA86\xA89\xA8C\xA90\xA94\xA96\xA98"+ + "\xA9E\xAA2\xAAB\xAAD\xAB4\xAB8\xABB\xABF\xAC3\xACD\xAD1\xAD6\xAD9\xADD"+ + "\xAE1\xAE5\xAE9\xAEE\xAF3\xAF7\xAFC\xAFF\xB03\xB0B\xB11"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Grammar/VBAParser.g4 b/Rubberduck.Parsing/Grammar/VBAParser.g4 index 48900a80ae..722c9e748e 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.g4 +++ b/Rubberduck.Parsing/Grammar/VBAParser.g4 @@ -419,7 +419,7 @@ propertyLetStmt : // 5.4.2.20 RaiseEvent Statement raiseEventStmt : RAISEEVENT whiteSpace identifier (whiteSpace? LPAREN whiteSpace? eventArgumentList? whiteSpace? RPAREN)?; eventArgumentList : eventArgument (whiteSpace? COMMA whiteSpace? eventArgument)*; -eventArgument : expression; +eventArgument : ((BYVAL | BYREF) whiteSpace)? expression; // 5.4.3.3 ReDim Statement // To make the grammar non-ambiguous we treat redim statements as index expressions. @@ -705,15 +705,12 @@ keyword : | LENB | LIB | LIKE - | LOAD | LONG | LONGLONG | LONGPTR | ME | MID | MIDB -// | MIDBTYPESUFFIX -// | MIDTYPESUFFIX | MOD | NEW | NOT @@ -745,7 +742,6 @@ keyword : | XOR | STEP | ON_ERROR - | RESUME_NEXT | ERROR | APPEND | BINARY diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs index 5e5015486e..2add289883 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParser.cs @@ -8,95 +8,97 @@ // //------------------------------------------------------------------------------ -// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 +// Generated from C:\Dev\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 // Unreachable code detected - -using System.Collections.Generic; -using Antlr4.Runtime; -using Antlr4.Runtime.Atn; -using Antlr4.Runtime.Tree; - #pragma warning disable 0162 // The variable '...' is assigned but its value is never used #pragma warning disable 0219 // Missing XML comment for publicly visible type or member '...' #pragma warning disable 1591 -namespace Rubberduck.Parsing.Preprocessing { - [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.3")] +namespace Rubberduck.Parsing { +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using System.Collections.Generic; +using DFA = Antlr4.Runtime.Dfa.DFA; + +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.3")] [System.CLSCompliant(false)] public partial class VBAConditionalCompilationParser : Parser { public const int - PRINT=160, ELSEIF=90, CBYTE=7, CLOSE=67, STATIC=184, MINUS=216, OPTION_EXPLICIT=153, - L_SQUARE_BRACKET=222, DOEVENTS=23, DATELITERAL=229, ERROR=104, NOTHING=144, - EACH=88, SUB=188, STOP=186, LPAREN=214, MID=138, CVERR=21, AS=57, END_PROPERTY=95, - AT=47, DATABASE=69, GOSUB=117, CSNG=17, POW=220, DOLLAR=49, PROPERTY_LET=163, - THEN=191, XOR=206, EXIT_FOR=107, DEFINT=77, UNLOCK=196, CALL=64, LOCK_READ=133, - SET=180, BF=5, LOCK_READ_WRITE=135, ABS=1, LSET=136, RAISEEVENT=169, MIDBTYPESUFFIX=34, - SEEK=178, LONG=127, CBOOL=6, LIB=130, DIM=85, APPEND=56, OPEN=150, DIV=208, - PROPERTY_SET=164, CDBL=10, PERCENT=48, END_SELECT=96, STRING=187, SGN=39, - REM=173, TO=192, DEFDBL=75, BYVAL=61, FRIEND=112, LOOP=128, CLASS=66, - DO=86, VARIANT=198, END_WITH=99, DEFBOOL=72, OPTIONAL=151, ADDRESSOF=52, - CONST=68, RSET=177, INTEGER=125, CDEC=11, ATTRIBUTE=55, OUTPUT=157, FOR=113, - PTRSAFE=165, EQ=210, BOOLEAN=60, CIRCLE=13, NAME=140, END_FUNCTION=93, - DEFSNG=82, DEFBYTE=73, NOT=143, CINT=12, END=100, PRESERVE=159, ON_LOCAL_ERROR=149, - FLOATLITERAL=227, BINARY=59, B_CHAR=4, LENB=30, RETURN=176, EXCLAMATIONPOINT=44, - NEXT=141, GLOBAL=116, INPUTB=26, IDENTIFIER=235, WS=233, EMPTY=91, CURRENCY=19, - CCUR=8, MOD=139, WITHEVENTS=204, COLON=42, DEFLNGLNG=79, STEP=185, OPTION_BASE=152, - GT=212, PUT=167, WITH=203, CSTR=18, LOCK_WRITE=134, LINE_CONTINUATION=236, - TYPEOF=195, DEFVAR=84, DEFLNG=78, UBOUND=40, FALSE=111, ERRORCHAR=237, - UNDERSCORE=232, INTEGERLITERAL=228, END_IF=94, LOCK=126, TEXT=190, SINGLEQUOTE=231, - MULT=217, SEMICOLON=43, BYTE=63, HEXLITERAL=226, ELSE=89, IF=119, TYPE=194, - AMPERSAND=50, DEFLNGPTR=80, ENUM=101, DEFOBJ=81, IN=122, OPTION=36, DOT=45, - EXIT_DO=106, GUIDLITERAL=234, IS=124, EQV=102, WEND=200, FUNCTION=114, - HASH=46, CASE=65, GEQ=211, GET=115, PUBLIC=166, ON_ERROR=148, EXIT=24, - MIDB=33, END_ENUM=92, GOTO=118, INTDIV=209, LONGPTR=32, WIDTH=202, BEGIN=58, - EXIT_SUB=110, ASSIGN=207, WRITE=205, DOUBLE=87, EXIT_PROPERTY=109, COMMA=41, - RANDOM=168, PROPERTY_GET=162, SELECT=179, PRIVATE=161, ERASE=103, TAB=189, - BYREF=62, VERSION=199, NEQ=218, END_TYPE=98, NEW=142, ARRAY=3, INPUT=123, - SINGLE=182, ALIAS=53, SPC=183, LT=215, RESET=174, END_SUB=97, EVENT=105, - READ_WRITE=171, OPTION_COMPARE=154, ME=137, SCALE=38, CDATE=9, MIDTYPESUFFIX=35, - NULL=145, NEWLINE=230, TRUE=193, RPAREN=221, OBJECT=146, IMP=120, STRINGLITERAL=224, - OCTLITERAL=225, READ=170, DATE=70, LIKE=131, AND=54, OPTION_PRIVATE_MODULE=155, - CLNGLNG=15, PLUS=219, ANY=2, RESUME=175, INT=27, SHARED=181, EXIT_FUNCTION=108, - PSET=37, ACCESS=51, LINE_INPUT=132, ON=147, OR=156, PARAMARRAY=158, LBOUND=28, - R_SQUARE_BRACKET=223, IMPLEMENTS=121, UNTIL=197, DEBUG=22, DEFCUR=76, - CLNGPTR=16, LONGLONG=31, DECLARE=71, DEFDATE=74, FIX=25, LEN=29, REDIM=172, - LEQ=213, DEFSTR=83, LET=129, WHILE=201, CVAR=20, CLNG=14, LOAD=238, RESUME_NEXT=239; + PRINT=158, ELSEIF=88, CBYTE=7, CLOSE=65, STATIC=182, MINUS=214, OPTION_EXPLICIT=151, + L_SQUARE_BRACKET=220, DOEVENTS=23, DATELITERAL=227, ERROR=102, NOTHING=142, + EACH=86, SUB=186, STOP=184, LPAREN=212, MID=136, CVERR=21, AS=55, END_PROPERTY=93, + AT=45, DATABASE=67, GOSUB=115, CSNG=17, POW=218, DOLLAR=47, PROPERTY_LET=161, + THEN=189, XOR=204, EXIT_FOR=105, DEFINT=75, UNLOCK=194, CALL=62, LOCK_READ=131, + SET=178, BF=5, LOCK_READ_WRITE=133, ABS=1, LSET=134, RAISEEVENT=167, SEEK=176, + LONG=125, CBOOL=6, LIB=128, DIM=83, APPEND=54, OPEN=148, DIV=206, PROPERTY_SET=162, + CDBL=10, PERCENT=46, END_SELECT=94, STRING=185, SGN=37, REM=171, TO=190, + DEFDBL=73, BYVAL=59, FRIEND=110, LOOP=126, CLASS=64, DO=84, VARIANT=196, + END_WITH=97, DEFBOOL=70, OPTIONAL=149, ADDRESSOF=50, CONST=66, RSET=175, + INTEGER=123, CDEC=11, ATTRIBUTE=53, OUTPUT=155, FOR=111, PTRSAFE=163, + EQ=208, BOOLEAN=58, CIRCLE=13, NAME=138, END_FUNCTION=91, DEFSNG=80, DEFBYTE=71, + NOT=141, CINT=12, END=98, PRESERVE=157, ON_LOCAL_ERROR=147, FLOATLITERAL=225, + BINARY=57, B_CHAR=4, LENB=30, RETURN=174, EXCLAMATIONPOINT=42, NEXT=139, + GLOBAL=114, INPUTB=26, IDENTIFIER=233, WS=231, EMPTY=89, CURRENCY=19, + CCUR=8, MOD=137, WITHEVENTS=202, COLON=40, DEFLNGLNG=77, STEP=183, OPTION_BASE=150, + GT=210, PUT=165, WITH=201, CSTR=18, LOCK_WRITE=132, LINE_CONTINUATION=234, + TYPEOF=193, DEFVAR=82, DEFLNG=76, UBOUND=38, FALSE=109, ERRORCHAR=235, + UNDERSCORE=230, INTEGERLITERAL=226, END_IF=92, LOCK=124, TEXT=188, SINGLEQUOTE=229, + MULT=215, SEMICOLON=41, BYTE=61, HEXLITERAL=224, ELSE=87, IF=117, TYPE=192, + AMPERSAND=48, DEFLNGPTR=78, ENUM=99, DEFOBJ=79, IN=120, OPTION=34, DOT=43, + EXIT_DO=104, GUIDLITERAL=232, IS=122, EQV=100, WEND=198, FUNCTION=112, + HASH=44, CASE=63, GEQ=209, GET=113, PUBLIC=164, ON_ERROR=146, EXIT=24, + MIDB=33, END_ENUM=90, GOTO=116, INTDIV=207, LONGPTR=32, WIDTH=200, BEGIN=56, + EXIT_SUB=108, ASSIGN=205, WRITE=203, DOUBLE=85, EXIT_PROPERTY=107, COMMA=39, + RANDOM=166, PROPERTY_GET=160, SELECT=177, PRIVATE=159, ERASE=101, TAB=187, + BYREF=60, VERSION=197, NEQ=216, END_TYPE=96, NEW=140, ARRAY=3, INPUT=121, + SINGLE=180, ALIAS=51, SPC=181, LT=213, RESET=172, END_SUB=95, EVENT=103, + READ_WRITE=169, OPTION_COMPARE=152, ME=135, SCALE=36, CDATE=9, NULL=143, + NEWLINE=228, TRUE=191, RPAREN=219, OBJECT=144, IMP=118, STRINGLITERAL=222, + OCTLITERAL=223, READ=168, DATE=68, LIKE=129, AND=52, OPTION_PRIVATE_MODULE=153, + CLNGLNG=15, PLUS=217, ANY=2, RESUME=173, INT=27, SHARED=179, EXIT_FUNCTION=106, + PSET=35, ACCESS=49, LINE_INPUT=130, ON=145, OR=154, PARAMARRAY=156, LBOUND=28, + R_SQUARE_BRACKET=221, IMPLEMENTS=119, UNTIL=195, DEBUG=22, DEFCUR=74, + CLNGPTR=16, LONGLONG=31, DECLARE=69, DEFDATE=72, FIX=25, LEN=29, REDIM=170, + LEQ=211, DEFSTR=81, LET=127, WHILE=199, CVAR=20, CLNG=14, LOAD=236, MIDBTYPESUFFIX=237, + MIDTYPESUFFIX=238, RESUME_NEXT=239; public static readonly string[] tokenNames = { "", "ABS", "ANY", "ARRAY", "B_CHAR", "BF", "CBOOL", "CBYTE", "CCUR", "CDATE", "CDBL", "CDEC", "CINT", "CIRCLE", "CLNG", "CLNGLNG", "CLNGPTR", "CSNG", "CSTR", "CURRENCY", "CVAR", "CVERR", "DEBUG", "DOEVENTS", "EXIT", "FIX", "INPUTB", "INT", "LBOUND", "LEN", "LENB", "LONGLONG", "LONGPTR", - "MIDB", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", "OPTION", "PSET", "SCALE", - "SGN", "UBOUND", "','", "':'", "';'", "'!'", "'.'", "'#'", "'@'", "'%'", - "'$'", "'&'", "ACCESS", "ADDRESSOF", "ALIAS", "AND", "ATTRIBUTE", "APPEND", - "AS", "BEGIN", "BINARY", "BOOLEAN", "BYVAL", "BYREF", "BYTE", "CALL", - "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", "DATE", "DECLARE", "DEFBOOL", - "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", "DEFINT", "DEFLNG", "DEFLNGLNG", - "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", "DEFVAR", "DIM", "DO", "DOUBLE", - "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", "END_FUNCTION", "END_IF", - "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", "END_WITH", "END", - "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", "EXIT_FOR", "EXIT_FUNCTION", - "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", "FOR", "FUNCTION", "GET", - "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", "IN", "INPUT", "IS", - "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", "LIKE", "LINE_INPUT", - "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", "ME", "MID", "MOD", - "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "OBJECT", "ON", "ON_ERROR", - "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", "OPTION_EXPLICIT", - "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", "PARAMARRAY", - "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", "PROPERTY_SET", - "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", "READ_WRITE", - "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", "SELECT", - "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", "STRING", - "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", "UNLOCK", - "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", "WITHEVENTS", - "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", "LEQ", "'('", - "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "'['", "']'", "STRINGLITERAL", - "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", "DATELITERAL", - "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", "LINE_CONTINUATION", - "ERRORCHAR", "LOAD", "RESUME_NEXT" + "MIDB", "OPTION", "PSET", "SCALE", "SGN", "UBOUND", "','", "':'", "';'", + "'!'", "'.'", "'#'", "'@'", "'%'", "'$'", "'&'", "ACCESS", "ADDRESSOF", + "ALIAS", "AND", "ATTRIBUTE", "APPEND", "AS", "BEGIN", "BINARY", "BOOLEAN", + "BYVAL", "BYREF", "BYTE", "CALL", "CASE", "CLASS", "CLOSE", "CONST", "DATABASE", + "DATE", "DECLARE", "DEFBOOL", "DEFBYTE", "DEFDATE", "DEFDBL", "DEFCUR", + "DEFINT", "DEFLNG", "DEFLNGLNG", "DEFLNGPTR", "DEFOBJ", "DEFSNG", "DEFSTR", + "DEFVAR", "DIM", "DO", "DOUBLE", "EACH", "ELSE", "ELSEIF", "EMPTY", "END_ENUM", + "END_FUNCTION", "END_IF", "END_PROPERTY", "END_SELECT", "END_SUB", "END_TYPE", + "END_WITH", "END", "ENUM", "EQV", "ERASE", "ERROR", "EVENT", "EXIT_DO", + "EXIT_FOR", "EXIT_FUNCTION", "EXIT_PROPERTY", "EXIT_SUB", "FALSE", "FRIEND", + "FOR", "FUNCTION", "GET", "GLOBAL", "GOSUB", "GOTO", "IF", "IMP", "IMPLEMENTS", + "IN", "INPUT", "IS", "INTEGER", "LOCK", "LONG", "LOOP", "LET", "LIB", + "LIKE", "LINE_INPUT", "LOCK_READ", "LOCK_WRITE", "LOCK_READ_WRITE", "LSET", + "ME", "MID", "MOD", "NAME", "NEXT", "NEW", "NOT", "NOTHING", "NULL", "OBJECT", + "ON", "ON_ERROR", "ON_LOCAL_ERROR", "OPEN", "OPTIONAL", "OPTION_BASE", + "OPTION_EXPLICIT", "OPTION_COMPARE", "OPTION_PRIVATE_MODULE", "OR", "OUTPUT", + "PARAMARRAY", "PRESERVE", "PRINT", "PRIVATE", "PROPERTY_GET", "PROPERTY_LET", + "PROPERTY_SET", "PTRSAFE", "PUBLIC", "PUT", "RANDOM", "RAISEEVENT", "READ", + "READ_WRITE", "REDIM", "REM", "RESET", "RESUME", "RETURN", "RSET", "SEEK", + "SELECT", "SET", "SHARED", "SINGLE", "SPC", "STATIC", "STEP", "STOP", + "STRING", "SUB", "TAB", "TEXT", "THEN", "TO", "TRUE", "TYPE", "TYPEOF", + "UNLOCK", "UNTIL", "VARIANT", "VERSION", "WEND", "WHILE", "WIDTH", "WITH", + "WITHEVENTS", "WRITE", "XOR", "':='", "'/'", "'\\'", "'='", "GEQ", "'>'", + "LEQ", "'('", "'<'", "'-'", "'*'", "NEQ", "'+'", "'^'", "')'", "'['", + "']'", "STRINGLITERAL", "OCTLITERAL", "HEXLITERAL", "FLOATLITERAL", "INTEGERLITERAL", + "DATELITERAL", "NEWLINE", "'''", "'_'", "WS", "GUIDLITERAL", "IDENTIFIER", + "LINE_CONTINUATION", "ERRORCHAR", "LOAD", "MIDBTYPESUFFIX", "MIDTYPESUFFIX", + "RESUME_NEXT" }; public const int RULE_compilationUnit = 0, RULE_ccBlock = 1, RULE_ccConst = 2, RULE_ccVarLhs = 3, @@ -1289,7 +1291,7 @@ public PhysicalLineContext physicalLine() { State = 212; _errHandler.Sync(this); _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (LOAD - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (LOAD - 192)) | (1L << (MIDBTYPESUFFIX - 192)) | (1L << (MIDTYPESUFFIX - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { { { State = 209; @@ -1762,7 +1764,7 @@ private CcExpressionContext ccExpression(int _p) { } State = 352; _la = _input.La(1); - if ( !(_la==IS || _la==LIKE || ((((_la - 210)) & ~0x3f) == 0 && ((1L << (_la - 210)) & ((1L << (EQ - 210)) | (1L << (GEQ - 210)) | (1L << (GT - 210)) | (1L << (LEQ - 210)) | (1L << (LT - 210)) | (1L << (NEQ - 210)))) != 0)) ) { + if ( !(_la==IS || _la==LIKE || ((((_la - 208)) & ~0x3f) == 0 && ((1L << (_la - 208)) & ((1L << (EQ - 208)) | (1L << (GEQ - 208)) | (1L << (GT - 208)) | (1L << (LEQ - 208)) | (1L << (LT - 208)) | (1L << (NEQ - 208)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2270,8 +2272,6 @@ public NameValueContext nameValue() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case PSET: case SGN: case UBOUND: @@ -2355,6 +2355,8 @@ public NameValueContext nameValue() { case WRITE: case XOR: case LOAD: + case MIDBTYPESUFFIX: + case MIDTYPESUFFIX: case RESUME_NEXT: EnterOuterAlt(_localctx, 2); { @@ -2588,8 +2590,6 @@ public ForeignIdentifierContext foreignIdentifier() { case LONGLONG: case LONGPTR: case MIDB: - case MIDBTYPESUFFIX: - case MIDTYPESUFFIX: case OPTION: case PSET: case SCALE: @@ -2792,6 +2792,8 @@ public ForeignIdentifierContext foreignIdentifier() { case LINE_CONTINUATION: case ERRORCHAR: case LOAD: + case MIDBTYPESUFFIX: + case MIDTYPESUFFIX: case RESUME_NEXT: EnterOuterAlt(_localctx, 1); { @@ -2921,7 +2923,7 @@ public LiteralContext literal() { { State = 485; _la = _input.La(1); - if ( !(((((_la - 91)) & ~0x3f) == 0 && ((1L << (_la - 91)) & ((1L << (EMPTY - 91)) | (1L << (FALSE - 91)) | (1L << (NOTHING - 91)) | (1L << (NULL - 91)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TRUE - 193)) | (1L << (STRINGLITERAL - 193)) | (1L << (OCTLITERAL - 193)) | (1L << (HEXLITERAL - 193)) | (1L << (FLOATLITERAL - 193)) | (1L << (INTEGERLITERAL - 193)) | (1L << (DATELITERAL - 193)))) != 0)) ) { + if ( !(((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (EMPTY - 89)) | (1L << (FALSE - 89)) | (1L << (NOTHING - 89)) | (1L << (NULL - 89)))) != 0) || ((((_la - 191)) & ~0x3f) == 0 && ((1L << (_la - 191)) & ((1L << (TRUE - 191)) | (1L << (STRINGLITERAL - 191)) | (1L << (OCTLITERAL - 191)) | (1L << (HEXLITERAL - 191)) | (1L << (FLOATLITERAL - 191)) | (1L << (INTEGERLITERAL - 191)) | (1L << (DATELITERAL - 191)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -2980,7 +2982,7 @@ public CommentContext comment() { State = 492; _errHandler.Sync(this); _la = _input.La(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CALL - 64)) | (1L << (CASE - 64)) | (1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LOOP - 128)) | (1L << (LET - 128)) | (1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TO - 192)) | (1L << (TRUE - 192)) | (1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (LOAD - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << BF) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CIRCLE) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << EXIT) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << OPTION) | (1L << PSET) | (1L << SCALE) | (1L << SGN) | (1L << UBOUND) | (1L << COMMA) | (1L << COLON) | (1L << SEMICOLON) | (1L << EXCLAMATIONPOINT) | (1L << DOT) | (1L << HASH) | (1L << AT) | (1L << PERCENT) | (1L << DOLLAR) | (1L << AMPERSAND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << AS) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE) | (1L << CALL) | (1L << CASE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (CONST - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DECLARE - 64)) | (1L << (DEFBOOL - 64)) | (1L << (DEFBYTE - 64)) | (1L << (DEFDATE - 64)) | (1L << (DEFDBL - 64)) | (1L << (DEFCUR - 64)) | (1L << (DEFINT - 64)) | (1L << (DEFLNG - 64)) | (1L << (DEFLNGLNG - 64)) | (1L << (DEFLNGPTR - 64)) | (1L << (DEFOBJ - 64)) | (1L << (DEFSNG - 64)) | (1L << (DEFSTR - 64)) | (1L << (DEFVAR - 64)) | (1L << (DIM - 64)) | (1L << (DO - 64)) | (1L << (DOUBLE - 64)) | (1L << (EACH - 64)) | (1L << (ELSE - 64)) | (1L << (ELSEIF - 64)) | (1L << (EMPTY - 64)) | (1L << (END_ENUM - 64)) | (1L << (END_FUNCTION - 64)) | (1L << (END_IF - 64)) | (1L << (END_PROPERTY - 64)) | (1L << (END_SELECT - 64)) | (1L << (END_SUB - 64)) | (1L << (END_TYPE - 64)) | (1L << (END_WITH - 64)) | (1L << (END - 64)) | (1L << (ENUM - 64)) | (1L << (EQV - 64)) | (1L << (ERASE - 64)) | (1L << (ERROR - 64)) | (1L << (EVENT - 64)) | (1L << (EXIT_DO - 64)) | (1L << (EXIT_FOR - 64)) | (1L << (EXIT_FUNCTION - 64)) | (1L << (EXIT_PROPERTY - 64)) | (1L << (EXIT_SUB - 64)) | (1L << (FALSE - 64)) | (1L << (FRIEND - 64)) | (1L << (FOR - 64)) | (1L << (FUNCTION - 64)) | (1L << (GET - 64)) | (1L << (GLOBAL - 64)) | (1L << (GOSUB - 64)) | (1L << (GOTO - 64)) | (1L << (IF - 64)) | (1L << (IMP - 64)) | (1L << (IMPLEMENTS - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)) | (1L << (LOOP - 64)) | (1L << (LET - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (LSET - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEXT - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON - 128)) | (1L << (ON_ERROR - 128)) | (1L << (ON_LOCAL_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OPTION_BASE - 128)) | (1L << (OPTION_EXPLICIT - 128)) | (1L << (OPTION_COMPARE - 128)) | (1L << (OPTION_PRIVATE_MODULE - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PRIVATE - 128)) | (1L << (PROPERTY_GET - 128)) | (1L << (PROPERTY_LET - 128)) | (1L << (PROPERTY_SET - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUBLIC - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (RAISEEVENT - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REDIM - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (RESUME - 128)) | (1L << (RETURN - 128)) | (1L << (RSET - 128)) | (1L << (SEEK - 128)) | (1L << (SELECT - 128)) | (1L << (SET - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STATIC - 128)) | (1L << (STEP - 128)) | (1L << (STOP - 128)) | (1L << (STRING - 128)) | (1L << (SUB - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 192)) & ~0x3f) == 0 && ((1L << (_la - 192)) & ((1L << (TYPE - 192)) | (1L << (TYPEOF - 192)) | (1L << (UNLOCK - 192)) | (1L << (UNTIL - 192)) | (1L << (VARIANT - 192)) | (1L << (VERSION - 192)) | (1L << (WEND - 192)) | (1L << (WHILE - 192)) | (1L << (WIDTH - 192)) | (1L << (WITH - 192)) | (1L << (WITHEVENTS - 192)) | (1L << (WRITE - 192)) | (1L << (XOR - 192)) | (1L << (ASSIGN - 192)) | (1L << (DIV - 192)) | (1L << (INTDIV - 192)) | (1L << (EQ - 192)) | (1L << (GEQ - 192)) | (1L << (GT - 192)) | (1L << (LEQ - 192)) | (1L << (LPAREN - 192)) | (1L << (LT - 192)) | (1L << (MINUS - 192)) | (1L << (MULT - 192)) | (1L << (NEQ - 192)) | (1L << (PLUS - 192)) | (1L << (POW - 192)) | (1L << (RPAREN - 192)) | (1L << (L_SQUARE_BRACKET - 192)) | (1L << (R_SQUARE_BRACKET - 192)) | (1L << (STRINGLITERAL - 192)) | (1L << (OCTLITERAL - 192)) | (1L << (HEXLITERAL - 192)) | (1L << (FLOATLITERAL - 192)) | (1L << (INTEGERLITERAL - 192)) | (1L << (DATELITERAL - 192)) | (1L << (SINGLEQUOTE - 192)) | (1L << (UNDERSCORE - 192)) | (1L << (WS - 192)) | (1L << (GUIDLITERAL - 192)) | (1L << (IDENTIFIER - 192)) | (1L << (LINE_CONTINUATION - 192)) | (1L << (ERRORCHAR - 192)) | (1L << (LOAD - 192)) | (1L << (MIDBTYPESUFFIX - 192)) | (1L << (MIDTYPESUFFIX - 192)) | (1L << (RESUME_NEXT - 192)))) != 0)) { { State = 490; switch ( Interpreter.AdaptivePredict(_input,56,_ctx) ) { @@ -3172,7 +3174,7 @@ public KeywordContext keyword() { { State = 495; _la = _input.La(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << MIDBTYPESUFFIX) | (1L << MIDTYPESUFFIX) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & ((1L << (CLASS - 66)) | (1L << (CLOSE - 66)) | (1L << (DATABASE - 66)) | (1L << (DATE - 66)) | (1L << (DOUBLE - 66)) | (1L << (END - 66)) | (1L << (EQV - 66)) | (1L << (ERROR - 66)) | (1L << (FALSE - 66)) | (1L << (GET - 66)) | (1L << (IMP - 66)) | (1L << (IN - 66)) | (1L << (INPUT - 66)) | (1L << (IS - 66)) | (1L << (INTEGER - 66)) | (1L << (LOCK - 66)) | (1L << (LONG - 66)))) != 0) || ((((_la - 130)) & ~0x3f) == 0 && ((1L << (_la - 130)) & ((1L << (LIB - 130)) | (1L << (LIKE - 130)) | (1L << (LINE_INPUT - 130)) | (1L << (LOCK_READ - 130)) | (1L << (LOCK_WRITE - 130)) | (1L << (LOCK_READ_WRITE - 130)) | (1L << (ME - 130)) | (1L << (MID - 130)) | (1L << (MOD - 130)) | (1L << (NAME - 130)) | (1L << (NEW - 130)) | (1L << (NOT - 130)) | (1L << (NOTHING - 130)) | (1L << (NULL - 130)) | (1L << (OBJECT - 130)) | (1L << (ON_ERROR - 130)) | (1L << (OPEN - 130)) | (1L << (OPTIONAL - 130)) | (1L << (OR - 130)) | (1L << (OUTPUT - 130)) | (1L << (PARAMARRAY - 130)) | (1L << (PRESERVE - 130)) | (1L << (PRINT - 130)) | (1L << (PTRSAFE - 130)) | (1L << (PUT - 130)) | (1L << (RANDOM - 130)) | (1L << (READ - 130)) | (1L << (READ_WRITE - 130)) | (1L << (REM - 130)) | (1L << (RESET - 130)) | (1L << (SEEK - 130)) | (1L << (SHARED - 130)) | (1L << (SINGLE - 130)) | (1L << (SPC - 130)) | (1L << (STEP - 130)) | (1L << (STRING - 130)) | (1L << (TAB - 130)) | (1L << (TEXT - 130)) | (1L << (THEN - 130)) | (1L << (TO - 130)) | (1L << (TRUE - 130)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (TYPEOF - 195)) | (1L << (UNLOCK - 195)) | (1L << (UNTIL - 195)) | (1L << (VARIANT - 195)) | (1L << (VERSION - 195)) | (1L << (WIDTH - 195)) | (1L << (WITHEVENTS - 195)) | (1L << (WRITE - 195)) | (1L << (XOR - 195)) | (1L << (LOAD - 195)) | (1L << (RESUME_NEXT - 195)))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << ABS) | (1L << ANY) | (1L << ARRAY) | (1L << B_CHAR) | (1L << CBOOL) | (1L << CBYTE) | (1L << CCUR) | (1L << CDATE) | (1L << CDBL) | (1L << CDEC) | (1L << CINT) | (1L << CLNG) | (1L << CLNGLNG) | (1L << CLNGPTR) | (1L << CSNG) | (1L << CSTR) | (1L << CURRENCY) | (1L << CVAR) | (1L << CVERR) | (1L << DEBUG) | (1L << DOEVENTS) | (1L << FIX) | (1L << INPUTB) | (1L << INT) | (1L << LBOUND) | (1L << LEN) | (1L << LENB) | (1L << LONGLONG) | (1L << LONGPTR) | (1L << MIDB) | (1L << PSET) | (1L << SGN) | (1L << UBOUND) | (1L << ACCESS) | (1L << ADDRESSOF) | (1L << ALIAS) | (1L << AND) | (1L << ATTRIBUTE) | (1L << APPEND) | (1L << BEGIN) | (1L << BINARY) | (1L << BOOLEAN) | (1L << BYVAL) | (1L << BYREF) | (1L << BYTE))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (CLASS - 64)) | (1L << (CLOSE - 64)) | (1L << (DATABASE - 64)) | (1L << (DATE - 64)) | (1L << (DOUBLE - 64)) | (1L << (END - 64)) | (1L << (EQV - 64)) | (1L << (ERROR - 64)) | (1L << (FALSE - 64)) | (1L << (GET - 64)) | (1L << (IMP - 64)) | (1L << (IN - 64)) | (1L << (INPUT - 64)) | (1L << (IS - 64)) | (1L << (INTEGER - 64)) | (1L << (LOCK - 64)) | (1L << (LONG - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (LIB - 128)) | (1L << (LIKE - 128)) | (1L << (LINE_INPUT - 128)) | (1L << (LOCK_READ - 128)) | (1L << (LOCK_WRITE - 128)) | (1L << (LOCK_READ_WRITE - 128)) | (1L << (ME - 128)) | (1L << (MID - 128)) | (1L << (MOD - 128)) | (1L << (NAME - 128)) | (1L << (NEW - 128)) | (1L << (NOT - 128)) | (1L << (NOTHING - 128)) | (1L << (NULL - 128)) | (1L << (OBJECT - 128)) | (1L << (ON_ERROR - 128)) | (1L << (OPEN - 128)) | (1L << (OPTIONAL - 128)) | (1L << (OR - 128)) | (1L << (OUTPUT - 128)) | (1L << (PARAMARRAY - 128)) | (1L << (PRESERVE - 128)) | (1L << (PRINT - 128)) | (1L << (PTRSAFE - 128)) | (1L << (PUT - 128)) | (1L << (RANDOM - 128)) | (1L << (READ - 128)) | (1L << (READ_WRITE - 128)) | (1L << (REM - 128)) | (1L << (RESET - 128)) | (1L << (SEEK - 128)) | (1L << (SHARED - 128)) | (1L << (SINGLE - 128)) | (1L << (SPC - 128)) | (1L << (STEP - 128)) | (1L << (STRING - 128)) | (1L << (TAB - 128)) | (1L << (TEXT - 128)) | (1L << (THEN - 128)) | (1L << (TO - 128)) | (1L << (TRUE - 128)))) != 0) || ((((_la - 193)) & ~0x3f) == 0 && ((1L << (_la - 193)) & ((1L << (TYPEOF - 193)) | (1L << (UNLOCK - 193)) | (1L << (UNTIL - 193)) | (1L << (VARIANT - 193)) | (1L << (VERSION - 193)) | (1L << (WIDTH - 193)) | (1L << (WITHEVENTS - 193)) | (1L << (WRITE - 193)) | (1L << (XOR - 193)) | (1L << (LOAD - 193)) | (1L << (MIDBTYPESUFFIX - 193)) | (1L << (MIDTYPESUFFIX - 193)) | (1L << (RESUME_NEXT - 193)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -3325,7 +3327,7 @@ public StatementKeywordContext statementKeyword() { { State = 499; _la = _input.La(1); - if ( !(((((_la - 24)) & ~0x3f) == 0 && ((1L << (_la - 24)) & ((1L << (EXIT - 24)) | (1L << (OPTION - 24)) | (1L << (CALL - 24)) | (1L << (CASE - 24)) | (1L << (CONST - 24)) | (1L << (DECLARE - 24)) | (1L << (DEFBOOL - 24)) | (1L << (DEFBYTE - 24)) | (1L << (DEFDATE - 24)) | (1L << (DEFDBL - 24)) | (1L << (DEFCUR - 24)) | (1L << (DEFINT - 24)) | (1L << (DEFLNG - 24)) | (1L << (DEFLNGLNG - 24)) | (1L << (DEFLNGPTR - 24)) | (1L << (DEFOBJ - 24)) | (1L << (DEFSNG - 24)) | (1L << (DEFSTR - 24)) | (1L << (DEFVAR - 24)) | (1L << (DIM - 24)) | (1L << (DO - 24)))) != 0) || ((((_la - 89)) & ~0x3f) == 0 && ((1L << (_la - 89)) & ((1L << (ELSE - 89)) | (1L << (ELSEIF - 89)) | (1L << (END_SELECT - 89)) | (1L << (END_WITH - 89)) | (1L << (ENUM - 89)) | (1L << (ERASE - 89)) | (1L << (EVENT - 89)) | (1L << (EXIT_DO - 89)) | (1L << (EXIT_FOR - 89)) | (1L << (EXIT_FUNCTION - 89)) | (1L << (EXIT_PROPERTY - 89)) | (1L << (EXIT_SUB - 89)) | (1L << (FRIEND - 89)) | (1L << (FOR - 89)) | (1L << (FUNCTION - 89)) | (1L << (GLOBAL - 89)) | (1L << (GOSUB - 89)) | (1L << (GOTO - 89)) | (1L << (IF - 89)) | (1L << (IMPLEMENTS - 89)) | (1L << (LOOP - 89)) | (1L << (LET - 89)) | (1L << (LSET - 89)) | (1L << (NEXT - 89)) | (1L << (ON - 89)))) != 0) || ((((_la - 161)) & ~0x3f) == 0 && ((1L << (_la - 161)) & ((1L << (PRIVATE - 161)) | (1L << (PUBLIC - 161)) | (1L << (RAISEEVENT - 161)) | (1L << (REDIM - 161)) | (1L << (RESUME - 161)) | (1L << (RETURN - 161)) | (1L << (RSET - 161)) | (1L << (SELECT - 161)) | (1L << (SET - 161)) | (1L << (STATIC - 161)) | (1L << (STOP - 161)) | (1L << (SUB - 161)) | (1L << (TYPE - 161)) | (1L << (WEND - 161)) | (1L << (WHILE - 161)) | (1L << (WITH - 161)))) != 0)) ) { + if ( !(((((_la - 24)) & ~0x3f) == 0 && ((1L << (_la - 24)) & ((1L << (EXIT - 24)) | (1L << (OPTION - 24)) | (1L << (CALL - 24)) | (1L << (CASE - 24)) | (1L << (CONST - 24)) | (1L << (DECLARE - 24)) | (1L << (DEFBOOL - 24)) | (1L << (DEFBYTE - 24)) | (1L << (DEFDATE - 24)) | (1L << (DEFDBL - 24)) | (1L << (DEFCUR - 24)) | (1L << (DEFINT - 24)) | (1L << (DEFLNG - 24)) | (1L << (DEFLNGLNG - 24)) | (1L << (DEFLNGPTR - 24)) | (1L << (DEFOBJ - 24)) | (1L << (DEFSNG - 24)) | (1L << (DEFSTR - 24)) | (1L << (DEFVAR - 24)) | (1L << (DIM - 24)) | (1L << (DO - 24)) | (1L << (ELSE - 24)))) != 0) || ((((_la - 88)) & ~0x3f) == 0 && ((1L << (_la - 88)) & ((1L << (ELSEIF - 88)) | (1L << (END_SELECT - 88)) | (1L << (END_WITH - 88)) | (1L << (ENUM - 88)) | (1L << (ERASE - 88)) | (1L << (EVENT - 88)) | (1L << (EXIT_DO - 88)) | (1L << (EXIT_FOR - 88)) | (1L << (EXIT_FUNCTION - 88)) | (1L << (EXIT_PROPERTY - 88)) | (1L << (EXIT_SUB - 88)) | (1L << (FRIEND - 88)) | (1L << (FOR - 88)) | (1L << (FUNCTION - 88)) | (1L << (GLOBAL - 88)) | (1L << (GOSUB - 88)) | (1L << (GOTO - 88)) | (1L << (IF - 88)) | (1L << (IMPLEMENTS - 88)) | (1L << (LOOP - 88)) | (1L << (LET - 88)) | (1L << (LSET - 88)) | (1L << (NEXT - 88)) | (1L << (ON - 88)))) != 0) || ((((_la - 159)) & ~0x3f) == 0 && ((1L << (_la - 159)) & ((1L << (PRIVATE - 159)) | (1L << (PUBLIC - 159)) | (1L << (RAISEEVENT - 159)) | (1L << (REDIM - 159)) | (1L << (RESUME - 159)) | (1L << (RETURN - 159)) | (1L << (RSET - 159)) | (1L << (SELECT - 159)) | (1L << (SET - 159)) | (1L << (STATIC - 159)) | (1L << (STOP - 159)) | (1L << (SUB - 159)) | (1L << (TYPE - 159)) | (1L << (WEND - 159)) | (1L << (WHILE - 159)) | (1L << (WITH - 159)))) != 0)) ) { _errHandler.RecoverInline(this); } Consume(); @@ -3431,143 +3433,143 @@ private bool ccExpression_sempred(CcExpressionContext _localctx, int predIndex) "\x3 \x3 \x3 \x3H\x2\x3&!\x2\x2\x4\x2\x6\x2\b\x2\n\x2\f\x2\xE\x2\x10\x2"+ "\x12\x2\x14\x2\x16\x2\x18\x2\x1A\x2\x1C\x2\x1E\x2 \x2\"\x2$\x2&\x2(\x2"+ "*\x2,\x2.\x2\x30\x2\x32\x2\x34\x2\x36\x2\x38\x2:\x2<\x2>\x2\x2\r\x3\x3"+ - "\xE8\xE8\x4\x2\xD2\xD2\xDB\xDB\x4\x2\xDA\xDA\xDD\xDD\a\x2~~\x85\x85\xD4"+ - "\xD7\xD9\xD9\xDC\xDC\v\x2\x3\x3\b\f\xE\xE\x10\x14\x16\x16\x1B\x1B\x1D"+ - "\x1D\x1F ))\x3\x2\xE0\xE0\x5\x2..\x30\x34\xDE\xDE\a\x2]]qq\x92\x93\xC3"+ - "\xC3\xE2\xE7\x3\x2\xE8\xE8\'\x2\x3\x6\b\xE\x10\x19\x1B%\'\')*\x35:<\x41"+ - "\x44\x45GHYY\x66\x66hhjjqquuzz|\x81\x84\x89\x8B\x8E\x90\x94\x96\x96\x98"+ - "\x99\x9E\xA2\xA7\xA7\xA9\xAA\xAC\xAD\xAF\xB0\xB4\xB4\xB7\xB9\xBB\xBB\xBD"+ - "\xBD\xBF\xC3\xC5\xC9\xCC\xCC\xCE\xD0\xF0\xF1 \x2\x1A\x1A&&\x42\x43\x46"+ - "\x46IX[\\\x62\x62\x65\x65ggiikprtvy{{\x82\x83\x8A\x8A\x8F\x8F\x95\x95"+ - "\xA3\xA3\xA8\xA8\xAB\xAB\xAE\xAE\xB1\xB3\xB5\xB6\xBA\xBA\xBC\xBC\xBE\xBE"+ - "\xC4\xC4\xCA\xCB\xCD\xCD\x224\x2@\x3\x2\x2\x2\x4H\x3\x2\x2\x2\x6N\x3\x2"+ - "\x2\x2\bh\x3\x2\x2\x2\nj\x3\x2\x2\x2\fz\x3\x2\x2\x2\xE\x8C\x3\x2\x2\x2"+ - "\x10\x92\x3\x2\x2\x2\x12\xA4\x3\x2\x2\x2\x14\xAA\x3\x2\x2\x2\x16\xB3\x3"+ - "\x2\x2\x2\x18\xBC\x3\x2\x2\x2\x1A\xC4\x3\x2\x2\x2\x1C\xC7\x3\x2\x2\x2"+ - "\x1E\xCA\x3\x2\x2\x2 \xCD\x3\x2\x2\x2\"\xD0\x3\x2\x2\x2$\xD6\x3\x2\x2"+ - "\x2&\xFF\x3\x2\x2\x2(\x1BA\x3\x2\x2\x2*\x1CB\x3\x2\x2\x2,\x1CD\x3\x2\x2"+ - "\x2.\x1D6\x3\x2\x2\x2\x30\x1D8\x3\x2\x2\x2\x32\x1E3\x3\x2\x2\x2\x34\x1E5"+ - "\x3\x2\x2\x2\x36\x1E7\x3\x2\x2\x2\x38\x1E9\x3\x2\x2\x2:\x1F1\x3\x2\x2"+ - "\x2<\x1F3\x3\x2\x2\x2>\x1F5\x3\x2\x2\x2@\x41\x5\x4\x3\x2\x41\x42\a\x2"+ - "\x2\x3\x42\x3\x3\x2\x2\x2\x43G\x5\x6\x4\x2\x44G\x5\n\x6\x2\x45G\x5$\x13"+ - "\x2\x46\x43\x3\x2\x2\x2\x46\x44\x3\x2\x2\x2\x46\x45\x3\x2\x2\x2GJ\x3\x2"+ - "\x2\x2HI\x3\x2\x2\x2H\x46\x3\x2\x2\x2I\x5\x3\x2\x2\x2JH\x3\x2\x2\x2KM"+ - "\a\xEB\x2\x2LK\x3\x2\x2\x2MP\x3\x2\x2\x2NL\x3\x2\x2\x2NO\x3\x2\x2\x2O"+ - "Q\x3\x2\x2\x2PN\x3\x2\x2\x2QS\x5\x1A\xE\x2RT\a\xEB\x2\x2SR\x3\x2\x2\x2"+ - "TU\x3\x2\x2\x2US\x3\x2\x2\x2UV\x3\x2\x2\x2VW\x3\x2\x2\x2W[\x5\b\x5\x2"+ - "XZ\a\xEB\x2\x2YX\x3\x2\x2\x2Z]\x3\x2\x2\x2[Y\x3\x2\x2\x2[\\\x3\x2\x2\x2"+ - "\\^\x3\x2\x2\x2][\x3\x2\x2\x2^\x62\a\xD4\x2\x2_\x61\a\xEB\x2\x2`_\x3\x2"+ - "\x2\x2\x61\x64\x3\x2\x2\x2\x62`\x3\x2\x2\x2\x62\x63\x3\x2\x2\x2\x63\x65"+ - "\x3\x2\x2\x2\x64\x62\x3\x2\x2\x2\x65\x66\x5&\x14\x2\x66g\x5\x18\r\x2g"+ - "\a\x3\x2\x2\x2hi\x5,\x17\x2i\t\x3\x2\x2\x2jk\x5\f\a\x2ko\x5\x4\x3\x2l"+ - "n\x5\xE\b\x2ml\x3\x2\x2\x2nq\x3\x2\x2\x2om\x3\x2\x2\x2op\x3\x2\x2\x2p"+ - "s\x3\x2\x2\x2qo\x3\x2\x2\x2rt\x5\x12\n\x2sr\x3\x2\x2\x2st\x3\x2\x2\x2"+ - "tu\x3\x2\x2\x2uv\x5\x16\f\x2v\v\x3\x2\x2\x2wy\a\xEB\x2\x2xw\x3\x2\x2\x2"+ - "y|\x3\x2\x2\x2zx\x3\x2\x2\x2z{\x3\x2\x2\x2{}\x3\x2\x2\x2|z\x3\x2\x2\x2"+ - "}\x7F\x5\x1C\xF\x2~\x80\a\xEB\x2\x2\x7F~\x3\x2\x2\x2\x80\x81\x3\x2\x2"+ - "\x2\x81\x7F\x3\x2\x2\x2\x81\x82\x3\x2\x2\x2\x82\x83\x3\x2\x2\x2\x83\x85"+ - "\x5&\x14\x2\x84\x86\a\xEB\x2\x2\x85\x84\x3\x2\x2\x2\x86\x87\x3\x2\x2\x2"+ - "\x87\x85\x3\x2\x2\x2\x87\x88\x3\x2\x2\x2\x88\x89\x3\x2\x2\x2\x89\x8A\a"+ - "\xC1\x2\x2\x8A\x8B\x5\x18\r\x2\x8B\r\x3\x2\x2\x2\x8C\x8D\x5\x10\t\x2\x8D"+ - "\x8E\x5\x4\x3\x2\x8E\xF\x3\x2\x2\x2\x8F\x91\a\xEB\x2\x2\x90\x8F\x3\x2"+ - "\x2\x2\x91\x94\x3\x2\x2\x2\x92\x90\x3\x2\x2\x2\x92\x93\x3\x2\x2\x2\x93"+ - "\x95\x3\x2\x2\x2\x94\x92\x3\x2\x2\x2\x95\x97\x5\x1E\x10\x2\x96\x98\a\xEB"+ - "\x2\x2\x97\x96\x3\x2\x2\x2\x98\x99\x3\x2\x2\x2\x99\x97\x3\x2\x2\x2\x99"+ - "\x9A\x3\x2\x2\x2\x9A\x9B\x3\x2\x2\x2\x9B\x9D\x5&\x14\x2\x9C\x9E\a\xEB"+ - "\x2\x2\x9D\x9C\x3\x2\x2\x2\x9E\x9F\x3\x2\x2\x2\x9F\x9D\x3\x2\x2\x2\x9F"+ - "\xA0\x3\x2\x2\x2\xA0\xA1\x3\x2\x2\x2\xA1\xA2\a\xC1\x2\x2\xA2\xA3\x5\x18"+ - "\r\x2\xA3\x11\x3\x2\x2\x2\xA4\xA5\x5\x14\v\x2\xA5\xA6\x5\x4\x3\x2\xA6"+ - "\x13\x3\x2\x2\x2\xA7\xA9\a\xEB\x2\x2\xA8\xA7\x3\x2\x2\x2\xA9\xAC\x3\x2"+ - "\x2\x2\xAA\xA8\x3\x2\x2\x2\xAA\xAB\x3\x2\x2\x2\xAB\xAD\x3\x2\x2\x2\xAC"+ - "\xAA\x3\x2\x2\x2\xAD\xAE\x5 \x11\x2\xAE\xAF\x5\x18\r\x2\xAF\x15\x3\x2"+ - "\x2\x2\xB0\xB2\a\xEB\x2\x2\xB1\xB0\x3\x2\x2\x2\xB2\xB5\x3\x2\x2\x2\xB3"+ - "\xB1\x3\x2\x2\x2\xB3\xB4\x3\x2\x2\x2\xB4\xB6\x3\x2\x2\x2\xB5\xB3\x3\x2"+ - "\x2\x2\xB6\xB7\x5\"\x12\x2\xB7\xB8\x5\x18\r\x2\xB8\x17\x3\x2\x2\x2\xB9"+ - "\xBB\a\xEB\x2\x2\xBA\xB9\x3\x2\x2\x2\xBB\xBE\x3\x2\x2\x2\xBC\xBA\x3\x2"+ - "\x2\x2\xBC\xBD\x3\x2\x2\x2\xBD\xC0\x3\x2\x2\x2\xBE\xBC\x3\x2\x2\x2\xBF"+ - "\xC1\x5\x38\x1D\x2\xC0\xBF\x3\x2\x2\x2\xC0\xC1\x3\x2\x2\x2\xC1\xC2\x3"+ - "\x2\x2\x2\xC2\xC3\t\x2\x2\x2\xC3\x19\x3\x2\x2\x2\xC4\xC5\a\x30\x2\x2\xC5"+ - "\xC6\a\x46\x2\x2\xC6\x1B\x3\x2\x2\x2\xC7\xC8\a\x30\x2\x2\xC8\xC9\ay\x2"+ - "\x2\xC9\x1D\x3\x2\x2\x2\xCA\xCB\a\x30\x2\x2\xCB\xCC\a\\\x2\x2\xCC\x1F"+ - "\x3\x2\x2\x2\xCD\xCE\a\x30\x2\x2\xCE\xCF\a[\x2\x2\xCF!\x3\x2\x2\x2\xD0"+ - "\xD1\a\x30\x2\x2\xD1\xD2\a`\x2\x2\xD2#\x3\x2\x2\x2\xD3\xD5\n\x2\x2\x2"+ - "\xD4\xD3\x3\x2\x2\x2\xD5\xD8\x3\x2\x2\x2\xD6\xD4\x3\x2\x2\x2\xD6\xD7\x3"+ - "\x2\x2\x2\xD7\xD9\x3\x2\x2\x2\xD8\xD6\x3\x2\x2\x2\xD9\xDA\t\x2\x2\x2\xDA"+ - "%\x3\x2\x2\x2\xDB\xDC\b\x14\x1\x2\xDC\xE0\a\xDA\x2\x2\xDD\xDF\a\xEB\x2"+ - "\x2\xDE\xDD\x3\x2\x2\x2\xDF\xE2\x3\x2\x2\x2\xE0\xDE\x3\x2\x2\x2\xE0\xE1"+ - "\x3\x2\x2\x2\xE1\xE3\x3\x2\x2\x2\xE2\xE0\x3\x2\x2\x2\xE3\x100\x5&\x14"+ - "\x12\xE4\xE8\a\x91\x2\x2\xE5\xE7\a\xEB\x2\x2\xE6\xE5\x3\x2\x2\x2\xE7\xEA"+ - "\x3\x2\x2\x2\xE8\xE6\x3\x2\x2\x2\xE8\xE9\x3\x2\x2\x2\xE9\xEB\x3\x2\x2"+ - "\x2\xEA\xE8\x3\x2\x2\x2\xEB\x100\x5&\x14\v\xEC\xF0\a\xD8\x2\x2\xED\xEF"+ - "\a\xEB\x2\x2\xEE\xED\x3\x2\x2\x2\xEF\xF2\x3\x2\x2\x2\xF0\xEE\x3\x2\x2"+ - "\x2\xF0\xF1\x3\x2\x2\x2\xF1\xF3\x3\x2\x2\x2\xF2\xF0\x3\x2\x2\x2\xF3\xF7"+ - "\x5&\x14\x2\xF4\xF6\a\xEB\x2\x2\xF5\xF4\x3\x2\x2\x2\xF6\xF9\x3\x2\x2\x2"+ - "\xF7\xF5\x3\x2\x2\x2\xF7\xF8\x3\x2\x2\x2\xF8\xFA\x3\x2\x2\x2\xF9\xF7\x3"+ - "\x2\x2\x2\xFA\xFB\a\xDF\x2\x2\xFB\x100\x3\x2\x2\x2\xFC\x100\x5(\x15\x2"+ - "\xFD\x100\x5\x36\x1C\x2\xFE\x100\x5,\x17\x2\xFF\xDB\x3\x2\x2\x2\xFF\xE4"+ - "\x3\x2\x2\x2\xFF\xEC\x3\x2\x2\x2\xFF\xFC\x3\x2\x2\x2\xFF\xFD\x3\x2\x2"+ - "\x2\xFF\xFE\x3\x2\x2\x2\x100\x1B7\x3\x2\x2\x2\x101\x105\f\x13\x2\x2\x102"+ - "\x104\a\xEB\x2\x2\x103\x102\x3\x2\x2\x2\x104\x107\x3\x2\x2\x2\x105\x103"+ + "\xE6\xE6\x4\x2\xD0\xD0\xD9\xD9\x4\x2\xD8\xD8\xDB\xDB\a\x2||\x83\x83\xD2"+ + "\xD5\xD7\xD7\xDA\xDA\v\x2\x3\x3\b\f\xE\xE\x10\x14\x16\x16\x1B\x1B\x1D"+ + "\x1D\x1F \'\'\x3\x2\xDE\xDE\x5\x2,,.\x32\xDC\xDC\a\x2[[oo\x90\x91\xC1"+ + "\xC1\xE0\xE5\x3\x2\xE6\xE6\'\x2\x3\x6\b\xE\x10\x19\x1B#%%\'(\x33\x38:"+ + "?\x42\x43\x45\x46WW\x64\x64\x66\x66hhoossxxz\x7F\x82\x87\x89\x8C\x8E\x92"+ + "\x94\x94\x96\x97\x9C\xA0\xA5\xA5\xA7\xA8\xAA\xAB\xAD\xAE\xB2\xB2\xB5\xB7"+ + "\xB9\xB9\xBB\xBB\xBD\xC1\xC3\xC7\xCA\xCA\xCC\xCE\xEE\xF1 \x2\x1A\x1A$"+ + "$@\x41\x44\x44GVYZ``\x63\x63\x65\x65gginprtwyy\x80\x81\x88\x88\x8D\x8D"+ + "\x93\x93\xA1\xA1\xA6\xA6\xA9\xA9\xAC\xAC\xAF\xB1\xB3\xB4\xB8\xB8\xBA\xBA"+ + "\xBC\xBC\xC2\xC2\xC8\xC9\xCB\xCB\x224\x2@\x3\x2\x2\x2\x4H\x3\x2\x2\x2"+ + "\x6N\x3\x2\x2\x2\bh\x3\x2\x2\x2\nj\x3\x2\x2\x2\fz\x3\x2\x2\x2\xE\x8C\x3"+ + "\x2\x2\x2\x10\x92\x3\x2\x2\x2\x12\xA4\x3\x2\x2\x2\x14\xAA\x3\x2\x2\x2"+ + "\x16\xB3\x3\x2\x2\x2\x18\xBC\x3\x2\x2\x2\x1A\xC4\x3\x2\x2\x2\x1C\xC7\x3"+ + "\x2\x2\x2\x1E\xCA\x3\x2\x2\x2 \xCD\x3\x2\x2\x2\"\xD0\x3\x2\x2\x2$\xD6"+ + "\x3\x2\x2\x2&\xFF\x3\x2\x2\x2(\x1BA\x3\x2\x2\x2*\x1CB\x3\x2\x2\x2,\x1CD"+ + "\x3\x2\x2\x2.\x1D6\x3\x2\x2\x2\x30\x1D8\x3\x2\x2\x2\x32\x1E3\x3\x2\x2"+ + "\x2\x34\x1E5\x3\x2\x2\x2\x36\x1E7\x3\x2\x2\x2\x38\x1E9\x3\x2\x2\x2:\x1F1"+ + "\x3\x2\x2\x2<\x1F3\x3\x2\x2\x2>\x1F5\x3\x2\x2\x2@\x41\x5\x4\x3\x2\x41"+ + "\x42\a\x2\x2\x3\x42\x3\x3\x2\x2\x2\x43G\x5\x6\x4\x2\x44G\x5\n\x6\x2\x45"+ + "G\x5$\x13\x2\x46\x43\x3\x2\x2\x2\x46\x44\x3\x2\x2\x2\x46\x45\x3\x2\x2"+ + "\x2GJ\x3\x2\x2\x2HI\x3\x2\x2\x2H\x46\x3\x2\x2\x2I\x5\x3\x2\x2\x2JH\x3"+ + "\x2\x2\x2KM\a\xE9\x2\x2LK\x3\x2\x2\x2MP\x3\x2\x2\x2NL\x3\x2\x2\x2NO\x3"+ + "\x2\x2\x2OQ\x3\x2\x2\x2PN\x3\x2\x2\x2QS\x5\x1A\xE\x2RT\a\xE9\x2\x2SR\x3"+ + "\x2\x2\x2TU\x3\x2\x2\x2US\x3\x2\x2\x2UV\x3\x2\x2\x2VW\x3\x2\x2\x2W[\x5"+ + "\b\x5\x2XZ\a\xE9\x2\x2YX\x3\x2\x2\x2Z]\x3\x2\x2\x2[Y\x3\x2\x2\x2[\\\x3"+ + "\x2\x2\x2\\^\x3\x2\x2\x2][\x3\x2\x2\x2^\x62\a\xD2\x2\x2_\x61\a\xE9\x2"+ + "\x2`_\x3\x2\x2\x2\x61\x64\x3\x2\x2\x2\x62`\x3\x2\x2\x2\x62\x63\x3\x2\x2"+ + "\x2\x63\x65\x3\x2\x2\x2\x64\x62\x3\x2\x2\x2\x65\x66\x5&\x14\x2\x66g\x5"+ + "\x18\r\x2g\a\x3\x2\x2\x2hi\x5,\x17\x2i\t\x3\x2\x2\x2jk\x5\f\a\x2ko\x5"+ + "\x4\x3\x2ln\x5\xE\b\x2ml\x3\x2\x2\x2nq\x3\x2\x2\x2om\x3\x2\x2\x2op\x3"+ + "\x2\x2\x2ps\x3\x2\x2\x2qo\x3\x2\x2\x2rt\x5\x12\n\x2sr\x3\x2\x2\x2st\x3"+ + "\x2\x2\x2tu\x3\x2\x2\x2uv\x5\x16\f\x2v\v\x3\x2\x2\x2wy\a\xE9\x2\x2xw\x3"+ + "\x2\x2\x2y|\x3\x2\x2\x2zx\x3\x2\x2\x2z{\x3\x2\x2\x2{}\x3\x2\x2\x2|z\x3"+ + "\x2\x2\x2}\x7F\x5\x1C\xF\x2~\x80\a\xE9\x2\x2\x7F~\x3\x2\x2\x2\x80\x81"+ + "\x3\x2\x2\x2\x81\x7F\x3\x2\x2\x2\x81\x82\x3\x2\x2\x2\x82\x83\x3\x2\x2"+ + "\x2\x83\x85\x5&\x14\x2\x84\x86\a\xE9\x2\x2\x85\x84\x3\x2\x2\x2\x86\x87"+ + "\x3\x2\x2\x2\x87\x85\x3\x2\x2\x2\x87\x88\x3\x2\x2\x2\x88\x89\x3\x2\x2"+ + "\x2\x89\x8A\a\xBF\x2\x2\x8A\x8B\x5\x18\r\x2\x8B\r\x3\x2\x2\x2\x8C\x8D"+ + "\x5\x10\t\x2\x8D\x8E\x5\x4\x3\x2\x8E\xF\x3\x2\x2\x2\x8F\x91\a\xE9\x2\x2"+ + "\x90\x8F\x3\x2\x2\x2\x91\x94\x3\x2\x2\x2\x92\x90\x3\x2\x2\x2\x92\x93\x3"+ + "\x2\x2\x2\x93\x95\x3\x2\x2\x2\x94\x92\x3\x2\x2\x2\x95\x97\x5\x1E\x10\x2"+ + "\x96\x98\a\xE9\x2\x2\x97\x96\x3\x2\x2\x2\x98\x99\x3\x2\x2\x2\x99\x97\x3"+ + "\x2\x2\x2\x99\x9A\x3\x2\x2\x2\x9A\x9B\x3\x2\x2\x2\x9B\x9D\x5&\x14\x2\x9C"+ + "\x9E\a\xE9\x2\x2\x9D\x9C\x3\x2\x2\x2\x9E\x9F\x3\x2\x2\x2\x9F\x9D\x3\x2"+ + "\x2\x2\x9F\xA0\x3\x2\x2\x2\xA0\xA1\x3\x2\x2\x2\xA1\xA2\a\xBF\x2\x2\xA2"+ + "\xA3\x5\x18\r\x2\xA3\x11\x3\x2\x2\x2\xA4\xA5\x5\x14\v\x2\xA5\xA6\x5\x4"+ + "\x3\x2\xA6\x13\x3\x2\x2\x2\xA7\xA9\a\xE9\x2\x2\xA8\xA7\x3\x2\x2\x2\xA9"+ + "\xAC\x3\x2\x2\x2\xAA\xA8\x3\x2\x2\x2\xAA\xAB\x3\x2\x2\x2\xAB\xAD\x3\x2"+ + "\x2\x2\xAC\xAA\x3\x2\x2\x2\xAD\xAE\x5 \x11\x2\xAE\xAF\x5\x18\r\x2\xAF"+ + "\x15\x3\x2\x2\x2\xB0\xB2\a\xE9\x2\x2\xB1\xB0\x3\x2\x2\x2\xB2\xB5\x3\x2"+ + "\x2\x2\xB3\xB1\x3\x2\x2\x2\xB3\xB4\x3\x2\x2\x2\xB4\xB6\x3\x2\x2\x2\xB5"+ + "\xB3\x3\x2\x2\x2\xB6\xB7\x5\"\x12\x2\xB7\xB8\x5\x18\r\x2\xB8\x17\x3\x2"+ + "\x2\x2\xB9\xBB\a\xE9\x2\x2\xBA\xB9\x3\x2\x2\x2\xBB\xBE\x3\x2\x2\x2\xBC"+ + "\xBA\x3\x2\x2\x2\xBC\xBD\x3\x2\x2\x2\xBD\xC0\x3\x2\x2\x2\xBE\xBC\x3\x2"+ + "\x2\x2\xBF\xC1\x5\x38\x1D\x2\xC0\xBF\x3\x2\x2\x2\xC0\xC1\x3\x2\x2\x2\xC1"+ + "\xC2\x3\x2\x2\x2\xC2\xC3\t\x2\x2\x2\xC3\x19\x3\x2\x2\x2\xC4\xC5\a.\x2"+ + "\x2\xC5\xC6\a\x44\x2\x2\xC6\x1B\x3\x2\x2\x2\xC7\xC8\a.\x2\x2\xC8\xC9\a"+ + "w\x2\x2\xC9\x1D\x3\x2\x2\x2\xCA\xCB\a.\x2\x2\xCB\xCC\aZ\x2\x2\xCC\x1F"+ + "\x3\x2\x2\x2\xCD\xCE\a.\x2\x2\xCE\xCF\aY\x2\x2\xCF!\x3\x2\x2\x2\xD0\xD1"+ + "\a.\x2\x2\xD1\xD2\a^\x2\x2\xD2#\x3\x2\x2\x2\xD3\xD5\n\x2\x2\x2\xD4\xD3"+ + "\x3\x2\x2\x2\xD5\xD8\x3\x2\x2\x2\xD6\xD4\x3\x2\x2\x2\xD6\xD7\x3\x2\x2"+ + "\x2\xD7\xD9\x3\x2\x2\x2\xD8\xD6\x3\x2\x2\x2\xD9\xDA\t\x2\x2\x2\xDA%\x3"+ + "\x2\x2\x2\xDB\xDC\b\x14\x1\x2\xDC\xE0\a\xD8\x2\x2\xDD\xDF\a\xE9\x2\x2"+ + "\xDE\xDD\x3\x2\x2\x2\xDF\xE2\x3\x2\x2\x2\xE0\xDE\x3\x2\x2\x2\xE0\xE1\x3"+ + "\x2\x2\x2\xE1\xE3\x3\x2\x2\x2\xE2\xE0\x3\x2\x2\x2\xE3\x100\x5&\x14\x12"+ + "\xE4\xE8\a\x8F\x2\x2\xE5\xE7\a\xE9\x2\x2\xE6\xE5\x3\x2\x2\x2\xE7\xEA\x3"+ + "\x2\x2\x2\xE8\xE6\x3\x2\x2\x2\xE8\xE9\x3\x2\x2\x2\xE9\xEB\x3\x2\x2\x2"+ + "\xEA\xE8\x3\x2\x2\x2\xEB\x100\x5&\x14\v\xEC\xF0\a\xD6\x2\x2\xED\xEF\a"+ + "\xE9\x2\x2\xEE\xED\x3\x2\x2\x2\xEF\xF2\x3\x2\x2\x2\xF0\xEE\x3\x2\x2\x2"+ + "\xF0\xF1\x3\x2\x2\x2\xF1\xF3\x3\x2\x2\x2\xF2\xF0\x3\x2\x2\x2\xF3\xF7\x5"+ + "&\x14\x2\xF4\xF6\a\xE9\x2\x2\xF5\xF4\x3\x2\x2\x2\xF6\xF9\x3\x2\x2\x2\xF7"+ + "\xF5\x3\x2\x2\x2\xF7\xF8\x3\x2\x2\x2\xF8\xFA\x3\x2\x2\x2\xF9\xF7\x3\x2"+ + "\x2\x2\xFA\xFB\a\xDD\x2\x2\xFB\x100\x3\x2\x2\x2\xFC\x100\x5(\x15\x2\xFD"+ + "\x100\x5\x36\x1C\x2\xFE\x100\x5,\x17\x2\xFF\xDB\x3\x2\x2\x2\xFF\xE4\x3"+ + "\x2\x2\x2\xFF\xEC\x3\x2\x2\x2\xFF\xFC\x3\x2\x2\x2\xFF\xFD\x3\x2\x2\x2"+ + "\xFF\xFE\x3\x2\x2\x2\x100\x1B7\x3\x2\x2\x2\x101\x105\f\x13\x2\x2\x102"+ + "\x104\a\xE9\x2\x2\x103\x102\x3\x2\x2\x2\x104\x107\x3\x2\x2\x2\x105\x103"+ "\x3\x2\x2\x2\x105\x106\x3\x2\x2\x2\x106\x108\x3\x2\x2\x2\x107\x105\x3"+ - "\x2\x2\x2\x108\x10C\a\xDE\x2\x2\x109\x10B\a\xEB\x2\x2\x10A\x109\x3\x2"+ + "\x2\x2\x2\x108\x10C\a\xDC\x2\x2\x109\x10B\a\xE9\x2\x2\x10A\x109\x3\x2"+ "\x2\x2\x10B\x10E\x3\x2\x2\x2\x10C\x10A\x3\x2\x2\x2\x10C\x10D\x3\x2\x2"+ "\x2\x10D\x10F\x3\x2\x2\x2\x10E\x10C\x3\x2\x2\x2\x10F\x1B6\x5&\x14\x14"+ - "\x110\x114\f\x11\x2\x2\x111\x113\a\xEB\x2\x2\x112\x111\x3\x2\x2\x2\x113"+ + "\x110\x114\f\x11\x2\x2\x111\x113\a\xE9\x2\x2\x112\x111\x3\x2\x2\x2\x113"+ "\x116\x3\x2\x2\x2\x114\x112\x3\x2\x2\x2\x114\x115\x3\x2\x2\x2\x115\x117"+ - "\x3\x2\x2\x2\x116\x114\x3\x2\x2\x2\x117\x11B\t\x3\x2\x2\x118\x11A\a\xEB"+ + "\x3\x2\x2\x2\x116\x114\x3\x2\x2\x2\x117\x11B\t\x3\x2\x2\x118\x11A\a\xE9"+ "\x2\x2\x119\x118\x3\x2\x2\x2\x11A\x11D\x3\x2\x2\x2\x11B\x119\x3\x2\x2"+ "\x2\x11B\x11C\x3\x2\x2\x2\x11C\x11E\x3\x2\x2\x2\x11D\x11B\x3\x2\x2\x2"+ - "\x11E\x1B6\x5&\x14\x12\x11F\x123\f\x10\x2\x2\x120\x122\a\xEB\x2\x2\x121"+ + "\x11E\x1B6\x5&\x14\x12\x11F\x123\f\x10\x2\x2\x120\x122\a\xE9\x2\x2\x121"+ "\x120\x3\x2\x2\x2\x122\x125\x3\x2\x2\x2\x123\x121\x3\x2\x2\x2\x123\x124"+ - "\x3\x2\x2\x2\x124\x126\x3\x2\x2\x2\x125\x123\x3\x2\x2\x2\x126\x12A\a\xD3"+ - "\x2\x2\x127\x129\a\xEB\x2\x2\x128\x127\x3\x2\x2\x2\x129\x12C\x3\x2\x2"+ + "\x3\x2\x2\x2\x124\x126\x3\x2\x2\x2\x125\x123\x3\x2\x2\x2\x126\x12A\a\xD1"+ + "\x2\x2\x127\x129\a\xE9\x2\x2\x128\x127\x3\x2\x2\x2\x129\x12C\x3\x2\x2"+ "\x2\x12A\x128\x3\x2\x2\x2\x12A\x12B\x3\x2\x2\x2\x12B\x12D\x3\x2\x2\x2"+ "\x12C\x12A\x3\x2\x2\x2\x12D\x1B6\x5&\x14\x11\x12E\x132\f\xF\x2\x2\x12F"+ - "\x131\a\xEB\x2\x2\x130\x12F\x3\x2\x2\x2\x131\x134\x3\x2\x2\x2\x132\x130"+ + "\x131\a\xE9\x2\x2\x130\x12F\x3\x2\x2\x2\x131\x134\x3\x2\x2\x2\x132\x130"+ "\x3\x2\x2\x2\x132\x133\x3\x2\x2\x2\x133\x135\x3\x2\x2\x2\x134\x132\x3"+ - "\x2\x2\x2\x135\x139\a\x8D\x2\x2\x136\x138\a\xEB\x2\x2\x137\x136\x3\x2"+ + "\x2\x2\x2\x135\x139\a\x8B\x2\x2\x136\x138\a\xE9\x2\x2\x137\x136\x3\x2"+ "\x2\x2\x138\x13B\x3\x2\x2\x2\x139\x137\x3\x2\x2\x2\x139\x13A\x3\x2\x2"+ "\x2\x13A\x13C\x3\x2\x2\x2\x13B\x139\x3\x2\x2\x2\x13C\x1B6\x5&\x14\x10"+ - "\x13D\x141\f\xE\x2\x2\x13E\x140\a\xEB\x2\x2\x13F\x13E\x3\x2\x2\x2\x140"+ + "\x13D\x141\f\xE\x2\x2\x13E\x140\a\xE9\x2\x2\x13F\x13E\x3\x2\x2\x2\x140"+ "\x143\x3\x2\x2\x2\x141\x13F\x3\x2\x2\x2\x141\x142\x3\x2\x2\x2\x142\x144"+ - "\x3\x2\x2\x2\x143\x141\x3\x2\x2\x2\x144\x148\t\x4\x2\x2\x145\x147\a\xEB"+ + "\x3\x2\x2\x2\x143\x141\x3\x2\x2\x2\x144\x148\t\x4\x2\x2\x145\x147\a\xE9"+ "\x2\x2\x146\x145\x3\x2\x2\x2\x147\x14A\x3\x2\x2\x2\x148\x146\x3\x2\x2"+ "\x2\x148\x149\x3\x2\x2\x2\x149\x14B\x3\x2\x2\x2\x14A\x148\x3\x2\x2\x2"+ - "\x14B\x1B6\x5&\x14\xF\x14C\x150\f\r\x2\x2\x14D\x14F\a\xEB\x2\x2\x14E\x14D"+ + "\x14B\x1B6\x5&\x14\xF\x14C\x150\f\r\x2\x2\x14D\x14F\a\xE9\x2\x2\x14E\x14D"+ "\x3\x2\x2\x2\x14F\x152\x3\x2\x2\x2\x150\x14E\x3\x2\x2\x2\x150\x151\x3"+ - "\x2\x2\x2\x151\x153\x3\x2\x2\x2\x152\x150\x3\x2\x2\x2\x153\x157\a\x34"+ - "\x2\x2\x154\x156\a\xEB\x2\x2\x155\x154\x3\x2\x2\x2\x156\x159\x3\x2\x2"+ + "\x2\x2\x2\x151\x153\x3\x2\x2\x2\x152\x150\x3\x2\x2\x2\x153\x157\a\x32"+ + "\x2\x2\x154\x156\a\xE9\x2\x2\x155\x154\x3\x2\x2\x2\x156\x159\x3\x2\x2"+ "\x2\x157\x155\x3\x2\x2\x2\x157\x158\x3\x2\x2\x2\x158\x15A\x3\x2\x2\x2"+ "\x159\x157\x3\x2\x2\x2\x15A\x1B6\x5&\x14\xE\x15B\x15F\f\f\x2\x2\x15C\x15E"+ - "\a\xEB\x2\x2\x15D\x15C\x3\x2\x2\x2\x15E\x161\x3\x2\x2\x2\x15F\x15D\x3"+ + "\a\xE9\x2\x2\x15D\x15C\x3\x2\x2\x2\x15E\x161\x3\x2\x2\x2\x15F\x15D\x3"+ "\x2\x2\x2\x15F\x160\x3\x2\x2\x2\x160\x162\x3\x2\x2\x2\x161\x15F\x3\x2"+ - "\x2\x2\x162\x166\t\x5\x2\x2\x163\x165\a\xEB\x2\x2\x164\x163\x3\x2\x2\x2"+ + "\x2\x2\x162\x166\t\x5\x2\x2\x163\x165\a\xE9\x2\x2\x164\x163\x3\x2\x2\x2"+ "\x165\x168\x3\x2\x2\x2\x166\x164\x3\x2\x2\x2\x166\x167\x3\x2\x2\x2\x167"+ "\x169\x3\x2\x2\x2\x168\x166\x3\x2\x2\x2\x169\x1B6\x5&\x14\r\x16A\x16E"+ - "\f\n\x2\x2\x16B\x16D\a\xEB\x2\x2\x16C\x16B\x3\x2\x2\x2\x16D\x170\x3\x2"+ + "\f\n\x2\x2\x16B\x16D\a\xE9\x2\x2\x16C\x16B\x3\x2\x2\x2\x16D\x170\x3\x2"+ "\x2\x2\x16E\x16C\x3\x2\x2\x2\x16E\x16F\x3\x2\x2\x2\x16F\x171\x3\x2\x2"+ - "\x2\x170\x16E\x3\x2\x2\x2\x171\x175\a\x38\x2\x2\x172\x174\a\xEB\x2\x2"+ + "\x2\x170\x16E\x3\x2\x2\x2\x171\x175\a\x36\x2\x2\x172\x174\a\xE9\x2\x2"+ "\x173\x172\x3\x2\x2\x2\x174\x177\x3\x2\x2\x2\x175\x173\x3\x2\x2\x2\x175"+ "\x176\x3\x2\x2\x2\x176\x178\x3\x2\x2\x2\x177\x175\x3\x2\x2\x2\x178\x1B6"+ - "\x5&\x14\v\x179\x17D\f\t\x2\x2\x17A\x17C\a\xEB\x2\x2\x17B\x17A\x3\x2\x2"+ + "\x5&\x14\v\x179\x17D\f\t\x2\x2\x17A\x17C\a\xE9\x2\x2\x17B\x17A\x3\x2\x2"+ "\x2\x17C\x17F\x3\x2\x2\x2\x17D\x17B\x3\x2\x2\x2\x17D\x17E\x3\x2\x2\x2"+ - "\x17E\x180\x3\x2\x2\x2\x17F\x17D\x3\x2\x2\x2\x180\x184\a\x9E\x2\x2\x181"+ - "\x183\a\xEB\x2\x2\x182\x181\x3\x2\x2\x2\x183\x186\x3\x2\x2\x2\x184\x182"+ + "\x17E\x180\x3\x2\x2\x2\x17F\x17D\x3\x2\x2\x2\x180\x184\a\x9C\x2\x2\x181"+ + "\x183\a\xE9\x2\x2\x182\x181\x3\x2\x2\x2\x183\x186\x3\x2\x2\x2\x184\x182"+ "\x3\x2\x2\x2\x184\x185\x3\x2\x2\x2\x185\x187\x3\x2\x2\x2\x186\x184\x3"+ - "\x2\x2\x2\x187\x1B6\x5&\x14\n\x188\x18C\f\b\x2\x2\x189\x18B\a\xEB\x2\x2"+ + "\x2\x2\x2\x187\x1B6\x5&\x14\n\x188\x18C\f\b\x2\x2\x189\x18B\a\xE9\x2\x2"+ "\x18A\x189\x3\x2\x2\x2\x18B\x18E\x3\x2\x2\x2\x18C\x18A\x3\x2\x2\x2\x18C"+ "\x18D\x3\x2\x2\x2\x18D\x18F\x3\x2\x2\x2\x18E\x18C\x3\x2\x2\x2\x18F\x193"+ - "\a\xD0\x2\x2\x190\x192\a\xEB\x2\x2\x191\x190\x3\x2\x2\x2\x192\x195\x3"+ + "\a\xCE\x2\x2\x190\x192\a\xE9\x2\x2\x191\x190\x3\x2\x2\x2\x192\x195\x3"+ "\x2\x2\x2\x193\x191\x3\x2\x2\x2\x193\x194\x3\x2\x2\x2\x194\x196\x3\x2"+ "\x2\x2\x195\x193\x3\x2\x2\x2\x196\x1B6\x5&\x14\t\x197\x19B\f\a\x2\x2\x198"+ - "\x19A\a\xEB\x2\x2\x199\x198\x3\x2\x2\x2\x19A\x19D\x3\x2\x2\x2\x19B\x199"+ + "\x19A\a\xE9\x2\x2\x199\x198\x3\x2\x2\x2\x19A\x19D\x3\x2\x2\x2\x19B\x199"+ "\x3\x2\x2\x2\x19B\x19C\x3\x2\x2\x2\x19C\x19E\x3\x2\x2\x2\x19D\x19B\x3"+ - "\x2\x2\x2\x19E\x1A2\ah\x2\x2\x19F\x1A1\a\xEB\x2\x2\x1A0\x19F\x3\x2\x2"+ - "\x2\x1A1\x1A4\x3\x2\x2\x2\x1A2\x1A0\x3\x2\x2\x2\x1A2\x1A3\x3\x2\x2\x2"+ - "\x1A3\x1A5\x3\x2\x2\x2\x1A4\x1A2\x3\x2\x2\x2\x1A5\x1B6\x5&\x14\b\x1A6"+ - "\x1AA\f\x6\x2\x2\x1A7\x1A9\a\xEB\x2\x2\x1A8\x1A7\x3\x2\x2\x2\x1A9\x1AC"+ + "\x2\x2\x2\x19E\x1A2\a\x66\x2\x2\x19F\x1A1\a\xE9\x2\x2\x1A0\x19F\x3\x2"+ + "\x2\x2\x1A1\x1A4\x3\x2\x2\x2\x1A2\x1A0\x3\x2\x2\x2\x1A2\x1A3\x3\x2\x2"+ + "\x2\x1A3\x1A5\x3\x2\x2\x2\x1A4\x1A2\x3\x2\x2\x2\x1A5\x1B6\x5&\x14\b\x1A6"+ + "\x1AA\f\x6\x2\x2\x1A7\x1A9\a\xE9\x2\x2\x1A8\x1A7\x3\x2\x2\x2\x1A9\x1AC"+ "\x3\x2\x2\x2\x1AA\x1A8\x3\x2\x2\x2\x1AA\x1AB\x3\x2\x2\x2\x1AB\x1AD\x3"+ - "\x2\x2\x2\x1AC\x1AA\x3\x2\x2\x2\x1AD\x1B1\az\x2\x2\x1AE\x1B0\a\xEB\x2"+ + "\x2\x2\x2\x1AC\x1AA\x3\x2\x2\x2\x1AD\x1B1\ax\x2\x2\x1AE\x1B0\a\xE9\x2"+ "\x2\x1AF\x1AE\x3\x2\x2\x2\x1B0\x1B3\x3\x2\x2\x2\x1B1\x1AF\x3\x2\x2\x2"+ "\x1B1\x1B2\x3\x2\x2\x2\x1B2\x1B4\x3\x2\x2\x2\x1B3\x1B1\x3\x2\x2\x2\x1B4"+ "\x1B6\x5&\x14\a\x1B5\x101\x3\x2\x2\x2\x1B5\x110\x3\x2\x2\x2\x1B5\x11F"+ @@ -3576,31 +3578,31 @@ private bool ccExpression_sempred(CcExpressionContext _localctx, int predIndex) "\x2\x2\x1B5\x188\x3\x2\x2\x2\x1B5\x197\x3\x2\x2\x2\x1B5\x1A6\x3\x2\x2"+ "\x2\x1B6\x1B9\x3\x2\x2\x2\x1B7\x1B5\x3\x2\x2\x2\x1B7\x1B8\x3\x2\x2\x2"+ "\x1B8\'\x3\x2\x2\x2\x1B9\x1B7\x3\x2\x2\x2\x1BA\x1BB\x5*\x16\x2\x1BB\x1BF"+ - "\a\xD8\x2\x2\x1BC\x1BE\a\xEB\x2\x2\x1BD\x1BC\x3\x2\x2\x2\x1BE\x1C1\x3"+ + "\a\xD6\x2\x2\x1BC\x1BE\a\xE9\x2\x2\x1BD\x1BC\x3\x2\x2\x2\x1BE\x1C1\x3"+ "\x2\x2\x2\x1BF\x1BD\x3\x2\x2\x2\x1BF\x1C0\x3\x2\x2\x2\x1C0\x1C2\x3\x2"+ - "\x2\x2\x1C1\x1BF\x3\x2\x2\x2\x1C2\x1C6\x5&\x14\x2\x1C3\x1C5\a\xEB\x2\x2"+ + "\x2\x2\x1C1\x1BF\x3\x2\x2\x2\x1C2\x1C6\x5&\x14\x2\x1C3\x1C5\a\xE9\x2\x2"+ "\x1C4\x1C3\x3\x2\x2\x2\x1C5\x1C8\x3\x2\x2\x2\x1C6\x1C4\x3\x2\x2\x2\x1C6"+ "\x1C7\x3\x2\x2\x2\x1C7\x1C9\x3\x2\x2\x2\x1C8\x1C6\x3\x2\x2\x2\x1C9\x1CA"+ - "\a\xDF\x2\x2\x1CA)\x3\x2\x2\x2\x1CB\x1CC\t\x6\x2\x2\x1CC+\x3\x2\x2\x2"+ + "\a\xDD\x2\x2\x1CA)\x3\x2\x2\x2\x1CB\x1CC\t\x6\x2\x2\x1CC+\x3\x2\x2\x2"+ "\x1CD\x1CF\x5.\x18\x2\x1CE\x1D0\x5\x34\x1B\x2\x1CF\x1CE\x3\x2\x2\x2\x1CF"+ - "\x1D0\x3\x2\x2\x2\x1D0-\x3\x2\x2\x2\x1D1\x1D7\a\xED\x2\x2\x1D2\x1D7\x5"+ + "\x1D0\x3\x2\x2\x2\x1D0-\x3\x2\x2\x2\x1D1\x1D7\a\xEB\x2\x2\x1D2\x1D7\x5"+ ":\x1E\x2\x1D3\x1D7\x5\x30\x19\x2\x1D4\x1D7\x5> \x2\x1D5\x1D7\x5<\x1F\x2"+ "\x1D6\x1D1\x3\x2\x2\x2\x1D6\x1D2\x3\x2\x2\x2\x1D6\x1D3\x3\x2\x2\x2\x1D6"+ "\x1D4\x3\x2\x2\x2\x1D6\x1D5\x3\x2\x2\x2\x1D7/\x3\x2\x2\x2\x1D8\x1DC\a"+ - "\xE0\x2\x2\x1D9\x1DB\x5\x32\x1A\x2\x1DA\x1D9\x3\x2\x2\x2\x1DB\x1DE\x3"+ + "\xDE\x2\x2\x1D9\x1DB\x5\x32\x1A\x2\x1DA\x1D9\x3\x2\x2\x2\x1DB\x1DE\x3"+ "\x2\x2\x2\x1DC\x1DA\x3\x2\x2\x2\x1DC\x1DD\x3\x2\x2\x2\x1DD\x1DF\x3\x2"+ - "\x2\x2\x1DE\x1DC\x3\x2\x2\x2\x1DF\x1E0\a\xE1\x2\x2\x1E0\x31\x3\x2\x2\x2"+ + "\x2\x2\x1DE\x1DC\x3\x2\x2\x2\x1DF\x1E0\a\xDF\x2\x2\x1E0\x31\x3\x2\x2\x2"+ "\x1E1\x1E4\n\a\x2\x2\x1E2\x1E4\x5\x30\x19\x2\x1E3\x1E1\x3\x2\x2\x2\x1E3"+ "\x1E2\x3\x2\x2\x2\x1E4\x33\x3\x2\x2\x2\x1E5\x1E6\t\b\x2\x2\x1E6\x35\x3"+ - "\x2\x2\x2\x1E7\x1E8\t\t\x2\x2\x1E8\x37\x3\x2\x2\x2\x1E9\x1EE\a\xE9\x2"+ - "\x2\x1EA\x1ED\a\xEE\x2\x2\x1EB\x1ED\n\n\x2\x2\x1EC\x1EA\x3\x2\x2\x2\x1EC"+ + "\x2\x2\x2\x1E7\x1E8\t\t\x2\x2\x1E8\x37\x3\x2\x2\x2\x1E9\x1EE\a\xE7\x2"+ + "\x2\x1EA\x1ED\a\xEC\x2\x2\x1EB\x1ED\n\n\x2\x2\x1EC\x1EA\x3\x2\x2\x2\x1EC"+ "\x1EB\x3\x2\x2\x2\x1ED\x1F0\x3\x2\x2\x2\x1EE\x1EC\x3\x2\x2\x2\x1EE\x1EF"+ "\x3\x2\x2\x2\x1EF\x39\x3\x2\x2\x2\x1F0\x1EE\x3\x2\x2\x2\x1F1\x1F2\t\v"+ - "\x2\x2\x1F2;\x3\x2\x2\x2\x1F3\x1F4\a;\x2\x2\x1F4=\x3\x2\x2\x2\x1F5\x1F6"+ - "\t\f\x2\x2\x1F6?\x3\x2\x2\x2<\x46HNU[\x62osz\x81\x87\x92\x99\x9F\xAA\xB3"+ - "\xBC\xC0\xD6\xE0\xE8\xF0\xF7\xFF\x105\x10C\x114\x11B\x123\x12A\x132\x139"+ - "\x141\x148\x150\x157\x15F\x166\x16E\x175\x17D\x184\x18C\x193\x19B\x1A2"+ - "\x1AA\x1B1\x1B5\x1B7\x1BF\x1C6\x1CF\x1D6\x1DC\x1E3\x1EC\x1EE"; + "\x2\x2\x1F2;\x3\x2\x2\x2\x1F3\x1F4\a\x39\x2\x2\x1F4=\x3\x2\x2\x2\x1F5"+ + "\x1F6\t\f\x2\x2\x1F6?\x3\x2\x2\x2<\x46HNU[\x62osz\x81\x87\x92\x99\x9F"+ + "\xAA\xB3\xBC\xC0\xD6\xE0\xE8\xF0\xF7\xFF\x105\x10C\x114\x11B\x123\x12A"+ + "\x132\x139\x141\x148\x150\x157\x15F\x166\x16E\x175\x17D\x184\x18C\x193"+ + "\x19B\x1A2\x1AA\x1B1\x1B5\x1B7\x1BF\x1C6\x1CF\x1D6\x1DC\x1E3\x1EC\x1EE"; public static readonly ATN _ATN = new ATNDeserializer().Deserialize(_serializedATN.ToCharArray()); } diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs index 8fa6125d3e..013740b388 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseListener.cs @@ -8,22 +8,22 @@ // //------------------------------------------------------------------------------ -// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 +// Generated from C:\Dev\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 // Unreachable code detected - -using Antlr4.Runtime.Misc; - #pragma warning disable 0162 // The variable '...' is assigned but its value is never used #pragma warning disable 0219 // Missing XML comment for publicly visible type or member '...' #pragma warning disable 1591 -namespace Rubberduck.Parsing.Preprocessing { - using IErrorNode = Antlr4.Runtime.Tree.IErrorNode; +namespace Rubberduck.Parsing { + +using Antlr4.Runtime.Misc; +using IErrorNode = Antlr4.Runtime.Tree.IErrorNode; using ITerminalNode = Antlr4.Runtime.Tree.ITerminalNode; - using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; /// /// This class provides an empty implementation of , diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs index 7626e7c776..3c84b38213 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserBaseVisitor.cs @@ -8,21 +8,22 @@ // //------------------------------------------------------------------------------ -// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 +// Generated from C:\Dev\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 // Unreachable code detected - -using Antlr4.Runtime.Misc; -using Antlr4.Runtime.Tree; - #pragma warning disable 0162 // The variable '...' is assigned but its value is never used #pragma warning disable 0219 // Missing XML comment for publicly visible type or member '...' #pragma warning disable 1591 -namespace Rubberduck.Parsing.Preprocessing { - /// +namespace Rubberduck.Parsing { +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; + +/// /// This class provides an empty implementation of , /// which can be extended to create a visitor which only needs to handle a subset /// of the available methods. diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs index 6ff677b299..fb6a91cf83 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserListener.cs @@ -8,22 +8,21 @@ // //------------------------------------------------------------------------------ -// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 +// Generated from C:\Dev\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 // Unreachable code detected - -using Antlr4.Runtime.Misc; - #pragma warning disable 0162 // The variable '...' is assigned but its value is never used #pragma warning disable 0219 // Missing XML comment for publicly visible type or member '...' #pragma warning disable 1591 -namespace Rubberduck.Parsing.Preprocessing { - using IParseTreeListener = Antlr4.Runtime.Tree.IParseTreeListener; +namespace Rubberduck.Parsing { +using Antlr4.Runtime.Misc; +using IParseTreeListener = Antlr4.Runtime.Tree.IParseTreeListener; +using IToken = Antlr4.Runtime.IToken; - /// +/// /// This interface defines a complete listener for a parse tree produced by /// . /// diff --git a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs index 4bebf81f6c..998edb9bae 100644 --- a/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs +++ b/Rubberduck.Parsing/Preprocessing/VBAConditionalCompilationParserVisitor.cs @@ -8,21 +8,21 @@ // //------------------------------------------------------------------------------ -// Generated from C:\Users\hosch\Documents\Visual Studio 2015\Projects\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 +// Generated from C:\Dev\Rubberduck\Rubberduck.Parsing\Preprocessing\VBAConditionalCompilationParser.g4 by ANTLR 4.3 // Unreachable code detected - -using Antlr4.Runtime.Misc; -using Antlr4.Runtime.Tree; - #pragma warning disable 0162 // The variable '...' is assigned but its value is never used #pragma warning disable 0219 // Missing XML comment for publicly visible type or member '...' #pragma warning disable 1591 -namespace Rubberduck.Parsing.Preprocessing { - /// +namespace Rubberduck.Parsing { +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; + +/// /// This interface defines a complete generic visitor for a parse tree produced /// by . /// diff --git a/RubberduckTests/Preprocessing/VBAPreprocessorVisitorTests.cs b/RubberduckTests/Preprocessing/VBAPreprocessorVisitorTests.cs index fe6319699f..7cd344a5da 100644 --- a/RubberduckTests/Preprocessing/VBAPreprocessorVisitorTests.cs +++ b/RubberduckTests/Preprocessing/VBAPreprocessorVisitorTests.cs @@ -5,6 +5,7 @@ using System; using System.Diagnostics; using System.Globalization; +using Rubberduck.Parsing; namespace RubberduckTests.Preprocessing { From dd3565d66d1bb16a08fbe230591d53aa37bcf6b8 Mon Sep 17 00:00:00 2001 From: comintern Date: Tue, 14 Mar 2017 20:05:57 -0500 Subject: [PATCH 04/20] Remove ByRef from RaiseEvent, add unit tests. --- Rubberduck.Parsing/Grammar/VBAParser.cs | 11 ++------ Rubberduck.Parsing/Grammar/VBAParser.g4 | 2 +- RubberduckTests/Grammar/VBAParserTests.cs | 33 +++++++++++++++++++++++ 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/Rubberduck.Parsing/Grammar/VBAParser.cs b/Rubberduck.Parsing/Grammar/VBAParser.cs index faeee95441..dc23803bbb 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.cs +++ b/Rubberduck.Parsing/Grammar/VBAParser.cs @@ -9454,7 +9454,6 @@ public EventArgumentListContext eventArgumentList() { } public partial class EventArgumentContext : ParserRuleContext { - public ITerminalNode BYREF() { return GetToken(VBAParser.BYREF, 0); } public WhiteSpaceContext whiteSpace() { return GetRuleContext(0); } @@ -9486,7 +9485,6 @@ public override TResult Accept(IParseTreeVisitor visitor) { public EventArgumentContext eventArgument() { EventArgumentContext _localctx = new EventArgumentContext(_ctx, State); EnterRule(_localctx, 236, RULE_eventArgument); - int _la; try { EnterOuterAlt(_localctx, 1); { @@ -9494,12 +9492,7 @@ public EventArgumentContext eventArgument() { switch ( Interpreter.AdaptivePredict(_input,205,_ctx) ) { case 1: { - State = 1704; - _la = _input.La(1); - if ( !(_la==BYVAL || _la==BYREF) ) { - _errHandler.RecoverInline(this); - } - Consume(); + State = 1704; Match(BYVAL); State = 1705; whiteSpace(); } break; @@ -20557,7 +20550,7 @@ private bool upperCaseA_sempred(UpperCaseAContext _localctx, int predIndex) { "\x3\x2\x2\x2\x6A2\x6A3\x3\x2\x2\x2\x6A3\x6A4\x3\x2\x2\x2\x6A4\x6A6\x5"+ "\xEEx\x2\x6A5\x69E\x3\x2\x2\x2\x6A6\x6A9\x3\x2\x2\x2\x6A7\x6A5\x3\x2\x2"+ "\x2\x6A7\x6A8\x3\x2\x2\x2\x6A8\xED\x3\x2\x2\x2\x6A9\x6A7\x3\x2\x2\x2\x6AA"+ - "\x6AB\t\b\x2\x2\x6AB\x6AD\x5\x1BA\xDE\x2\x6AC\x6AA\x3\x2\x2\x2\x6AC\x6AD"+ + "\x6AB\a=\x2\x2\x6AB\x6AD\x5\x1BA\xDE\x2\x6AC\x6AA\x3\x2\x2\x2\x6AC\x6AD"+ "\x3\x2\x2\x2\x6AD\x6AE\x3\x2\x2\x2\x6AE\x6AF\x5\x176\xBC\x2\x6AF\xEF\x3"+ "\x2\x2\x2\x6B0\x6B1\a\xAC\x2\x2\x6B1\x6B4\x5\x1BA\xDE\x2\x6B2\x6B3\a\x9F"+ "\x2\x2\x6B3\x6B5\x5\x1BA\xDE\x2\x6B4\x6B2\x3\x2\x2\x2\x6B4\x6B5\x3\x2"+ diff --git a/Rubberduck.Parsing/Grammar/VBAParser.g4 b/Rubberduck.Parsing/Grammar/VBAParser.g4 index 722c9e748e..a56d777c6c 100644 --- a/Rubberduck.Parsing/Grammar/VBAParser.g4 +++ b/Rubberduck.Parsing/Grammar/VBAParser.g4 @@ -419,7 +419,7 @@ propertyLetStmt : // 5.4.2.20 RaiseEvent Statement raiseEventStmt : RAISEEVENT whiteSpace identifier (whiteSpace? LPAREN whiteSpace? eventArgumentList? whiteSpace? RPAREN)?; eventArgumentList : eventArgument (whiteSpace? COMMA whiteSpace? eventArgument)*; -eventArgument : ((BYVAL | BYREF) whiteSpace)? expression; +eventArgument : (BYVAL whiteSpace)? expression; // 5.4.3.3 ReDim Statement // To make the grammar non-ambiguous we treat redim statements as index expressions. diff --git a/RubberduckTests/Grammar/VBAParserTests.cs b/RubberduckTests/Grammar/VBAParserTests.cs index 10a37a97d9..58ef933c4b 100644 --- a/RubberduckTests/Grammar/VBAParserTests.cs +++ b/RubberduckTests/Grammar/VBAParserTests.cs @@ -1699,6 +1699,39 @@ End Sub AssertTree(parseResult.Item1, parseResult.Item2, "//rangeClause", matches => matches.Count == 1); } + [TestCategory("Parser")] + [TestMethod] + public void TestRaiseEventByValParameter() + { + const string code = @" +Public Event Foo(ByRef Bar As Boolean, ByVal Baz As String) + +Public Sub Test() + Dim arg As String + arg = ""Foo"" + RaiseEvent Foo(True, ByVal 42) +End Sub +"; + var parseResult = Parse(code); + AssertTree(parseResult.Item1, parseResult.Item2, "//raiseEventStmt", matches => matches.Count == 1); + } + + [TestCategory("Parser")] + [TestMethod] + public void TestRaiseEvent() + { + const string code = @" +Public Event Foo(ByRef Bar As Boolean, ByVal Baz As String) + +Public Sub Test() + Dim arg As Boolean + RaiseEvent Foo(arg, ""Foo"") +End Sub +"; + var parseResult = Parse(code); + AssertTree(parseResult.Item1, parseResult.Item2, "//raiseEventStmt", matches => matches.Count == 1); + } + private Tuple Parse(string code) { var stream = new AntlrInputStream(code); From 8d6664f97bf7e8f8d01fb4a3b283e4ec6212b447 Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Wed, 15 Mar 2017 10:33:04 -0700 Subject: [PATCH 05/20] Modifed to handle name conflicts in any reference's scope. Refactored tests --- .../Symbols/DeclarationFinder.cs | 104 ++--- .../Symbols/DeclarationFinderTests.cs | 378 +++++++++++++++--- 2 files changed, 378 insertions(+), 104 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs index 2779623e9a..3b7a6f3af0 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs @@ -821,7 +821,7 @@ public IEnumerable GetAccessibleDeclarations(Declaration target) { if (target == null) { return Enumerable.Empty(); } - return GetAllDeclarations() + return _declarations.AllValues() .Where(callee => AccessibilityCheck.IsAccessible(Declaration.GetProjectParent(target) , Declaration.GetModuleParent(target), target.ParentDeclaration, callee)).ToList(); } @@ -830,42 +830,60 @@ public IEnumerable GetDeclarationsWithIdentifiersToAvoid(Declaratio { if (target == null) { return Enumerable.Empty(); } - var accessibleDeclarations = GetAccessibleDeclarations(target); + List declarationsToAvoid = GetNameCollisionDeclarations(target).ToList(); - //todo: handle case where target is in a consuming module rather than the exposing module + declarationsToAvoid.AddRange(GetNameCollisionDeclarations(target.References)); + + return declarationsToAvoid.Distinct(); + } + + private IEnumerable GetNameCollisionDeclarations(Declaration declaration) + { + if (declaration == null) { return Enumerable.Empty(); } //Filter accessible declarations to those that would result in name collisions or hiding - var possibleConflictDeclarations = accessibleDeclarations.Where(dec => - IsInProceduralModule(dec) - || IsDeclarationInSameModuleScope(dec, target) - || IsDeclarationInSameProcedureScope(dec, target) - || dec.DeclarationType == DeclarationType.Project - || dec.DeclarationType == DeclarationType.ClassModule - || dec.DeclarationType == DeclarationType.ProceduralModule - || dec.DeclarationType == DeclarationType.UserForm + var declarationsToAvoid = GetAccessibleDeclarations(declaration).Where(candidate => + IsAccessibleInOtherProcedureModule(candidate,declaration) + || candidate.DeclarationType == DeclarationType.Project + || ModuleDeclarationTypes.Contains(candidate.DeclarationType) + || IsDeclarationInSameProcedureScope(candidate, declaration) ).ToList(); //Add local variables when the target is a method or property - if (IsMethodOrProperty(target)) + if(MethodDeclarationTypes.Contains(declaration.DeclarationType)) { - var declarations = GetAllDeclarations(); - var localVariableDeclarations = declarations.Where(dec => target == dec.ParentDeclaration).ToList(); - possibleConflictDeclarations.AddRange(localVariableDeclarations.ToList()); + var localVariableDeclarations = _declarations.AllValues() + .Where(dec => declaration == dec.ParentDeclaration); + declarationsToAvoid.AddRange(localVariableDeclarations); } - return possibleConflictDeclarations; + return declarationsToAvoid; } - private IEnumerable GetAllDeclarations() + private IEnumerable GetNameCollisionDeclarations(IEnumerable references) { - List declarations = new List(); - foreach (var Key in _declarationsByName.Keys) + var declarationsToAvoid = new List(); + foreach (var reference in references) { - ConcurrentBag theDeclarations; - _declarationsByName.TryGetValue(Key, out theDeclarations); - declarations.AddRange(theDeclarations); + if (!UsesScopeResolution(reference.Context.Parent)) + { + declarationsToAvoid.AddRange(GetNameCollisionDeclarations(reference.ParentNonScoping)); + } } - return declarations; + return declarationsToAvoid; + } + + private bool IsAccessibleInOtherProcedureModule(Declaration candidate, Declaration declaration) + { + return IsInProceduralModule(declaration) + && IsInProceduralModule(candidate) + && candidate.Accessibility != Accessibility.Private; + } + + private bool UsesScopeResolution(RuleContext ruleContext) + { + return (ruleContext is VBAParser.WithMemberAccessExprContext) + || (ruleContext is VBAParser.MemberAccessExprContext); } private bool IsInProceduralModule(Declaration candidateDeclaration) @@ -881,36 +899,20 @@ private bool IsDeclarationInSameProcedureScope(Declaration candidateDeclaration, return candidateDeclaration.ParentScope == scopingDeclaration.ParentScope; } - private bool IsChildOfScopeMethodOrProperty(Declaration candidateDeclaration, Declaration scopingDeclaration) + private static readonly DeclarationType[] MethodDeclarationTypes = { - if (IsMethodOrProperty(scopingDeclaration)) - { - return scopingDeclaration == candidateDeclaration.ParentDeclaration; - } - return false; - } + DeclarationType.PropertyGet, + DeclarationType.PropertySet, + DeclarationType.PropertyLet, + DeclarationType.Procedure, + DeclarationType.Function + }; - private bool IsDeclarationInSameModuleScope(Declaration candidateDeclaration, Declaration scopingDeclaration) + private static readonly DeclarationType[] ModuleDeclarationTypes = { - if (candidateDeclaration.ParentDeclaration != null) - { - return candidateDeclaration.ComponentName == scopingDeclaration.ComponentName - && (candidateDeclaration.ParentDeclaration.DeclarationType == DeclarationType.ClassModule - || candidateDeclaration.ParentDeclaration.DeclarationType == DeclarationType.ProceduralModule); - } - else - return false; - } - - private bool IsMethodOrProperty(Declaration declaration) - { - if (declaration == null) { return false; } - - return (declaration.DeclarationType == DeclarationType.PropertyGet) - || (declaration.DeclarationType == DeclarationType.PropertySet) - || (declaration.DeclarationType == DeclarationType.PropertyLet) - || (declaration.DeclarationType == DeclarationType.Procedure) - || (declaration.DeclarationType == DeclarationType.Function); - } + DeclarationType.ClassModule, + DeclarationType.ProceduralModule, + DeclarationType.UserForm + }; } } diff --git a/RubberduckTests/Symbols/DeclarationFinderTests.cs b/RubberduckTests/Symbols/DeclarationFinderTests.cs index 928f18d9b8..245fb74077 100644 --- a/RubberduckTests/Symbols/DeclarationFinderTests.cs +++ b/RubberduckTests/Symbols/DeclarationFinderTests.cs @@ -32,7 +32,7 @@ public void DeclarationFinder_InProcedure_MethodDeclaration() "Foo" }; - string moduleContent1 = GetInProcedure_MethodDeclaration_moduleContent1(); + string moduleContent1 = InProcedure_MethodDeclaration_moduleContent1(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "CFirstClass", "Foo", "Function Foo() As Long"); @@ -53,7 +53,7 @@ public void DeclarationFinder_InProcedure_LocalVariableReference() "Foo" }; - string moduleContent1 = GetInProcedure_LocalVariableReference_moduleContent1(); + string moduleContent1 = InProcedure_LocalVariableReference_moduleContent1(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "modTest", "adder", "member1 + adder"); @@ -69,10 +69,12 @@ public void DeclarationFinder_InProcedure_MemberDeclaration() var expectedResults = new string[] { "Option Explicit", + "adder", + "member1", "Foo" }; - string moduleContent1 = GetInProcedure_MemberDeclaration_moduleContent1(); + string moduleContent1 = InProcedure_MemberDeclaration_moduleContent1(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "CFirstClass", "member1", "member1 + adder"); @@ -88,13 +90,12 @@ public void DeclarationFinder_ModuleScope() var expectedResults = new string[] { "Option Explicit", - "Foo", - "member2", - "Foo2" + "adder", + "Foo" }; - string moduleContent1 = GetModuleScope_moduleContent1(); - string moduleContent2 = GetModuleScope_moduleContent2(); + string moduleContent1 = ModuleScope_CFirstClassContent(); + string moduleContent2 = ModuleScope_moduleContent2(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "CFirstClass", "member1", "member1 + adder"); @@ -105,6 +106,27 @@ public void DeclarationFinder_ModuleScope() TestAccessibleDeclarations(tdo, expectedResults); } + [TestMethod] + [TestCategory("Resolver")] + public void DeclarationFinder_PublicClassAndPublicModuleSub_RenameClassSub() + { + var expectedResults = new string[] + { + "Foo" + }; + + string moduleContent1 = PublicClassAndPubicModuleSub_CFirstClass(); + string moduleContent2 = PublicClassAndPubicModuleSub_moduleContent2(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "CFirstClass", "Foo", "Function Foo() As Long"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.ClassModule); + AddTestComponent(tdo, "modOne", moduleContent2, ComponentType.StandardModule); + + TestAccessibleDeclarations(tdo, expectedResults); + } + [TestMethod] [TestCategory("Resolver")] public void DeclarationFinder_Module_To_ClassScope() @@ -114,23 +136,22 @@ public void DeclarationFinder_Module_To_ClassScope() "Option Explicit", "Foo2", "Bar", - "member11", - "Foo" + "member11" }; - string modOneContent1 = GetModule_To_ClassScope_moduleContent1(); - string moduleContent2 = GetModule_To_ClassScope_moduleContent2(); + string moduleContent1 = Module_To_ClassScope_moduleContent1(); + string moduleContent2 = Module_To_ClassScope_CFirstClass(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "modOne", "member2", "member2 * 4"); - AddTestComponent(tdo, tdo.SelectionModuleName, modOneContent1, ComponentType.ClassModule); - AddTestComponent(tdo, "CFirstClass", moduleContent2, ComponentType.StandardModule); + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + AddTestComponent(tdo, "CFirstClass", moduleContent2, ComponentType.ClassModule); TestAccessibleDeclarations(tdo, expectedResults); } - [TestMethod, Ignore] + [TestMethod] [TestCategory("Resolver")] public void DeclarationFinder_PrivateSub_RespectPublicSubInOtherModule() { @@ -142,12 +163,96 @@ public void DeclarationFinder_PrivateSub_RespectPublicSubInOtherModule() "member1" }; - string moduleContent1 = GetPrivateSub_RespectPublicSubInOtherModule_moduleContent1(); - string moduleContent2 = GetPrivateSub_RespectPublicSubInOtherModule_moduleContent2(); + string moduleContent1 = PrivateSub_RespectPublicSubInOtherModule_moduleContent1(); + string moduleContent2 = PrivateSub_RespectPublicSubInOtherModule_moduleContent2(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modOne", "SetFilename", "SetFilename filename"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + AddTestComponent(tdo, "modTwo", moduleContent2, ComponentType.StandardModule); + + TestAccessibleDeclarations(tdo, expectedResults); + } + + [TestMethod] + [TestCategory("Resolver")] + public void DeclarationFinder_PrivateSub_MultipleReferences() + { + var expectedResults = new string[] + { + "Option Explicit", + "DoThis", + "filename", + "member1", + "StoreFilename", + "ExtractFilename", + "mFolderpath", + "filepath" + }; + + string moduleContent1 = PrivateSub_MultipleReferences_moduleContent1(); + string moduleContent2 = PrivateSub_MultipleReferences_moduleContent2(); + string moduleContent3 = PrivateSub_MultipleReferences_moduleContent3(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "modOne", "SetFilename", "SetFilename filename"); + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + AddTestComponent(tdo, "modTwo", moduleContent2, ComponentType.StandardModule); + AddTestComponent(tdo, "modThree", moduleContent3, ComponentType.StandardModule); + + TestAccessibleDeclarations(tdo, expectedResults); + } + + [TestMethod] + [TestCategory("Resolver")] + public void DeclarationFinder_PrivateSub_WithBlock() + { + var expectedResults = new string[] + { + "Option Explicit", + "mFolderpath", + "ExtractFilename", + "SetFilename", + "filename", + "input", + "Bar" + }; + + string moduleContent1 = PrivateSub_MultipleReferences_WithBlock_ModuleContent1(); + string moduleContent2 = PrivateSub_MultipleReferences_WithBlock_CFileHelperContent(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modOne", "StoreFilename", ".StoreFilename filepath"); + + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); + AddTestComponent(tdo, "CFileHelper", moduleContent2, ComponentType.ClassModule); + + TestAccessibleDeclarations(tdo, expectedResults); + } + + [TestMethod] + [TestCategory("Resolver")] + public void DeclarationFinder_Module_To_ModuleScopeResolution() + { + var expectedResults = new string[] + { + "Option Explicit", + "Foo1", + "Foo2", + "Foo3", + "Foo4", + "gConstant", + "member2" + }; + + string moduleContent1 = Module_To_ModuleScopeResolution__moduleContent1(); + string moduleContent2 = Module_To_ModuleScopeResolution__moduleContent2(); + + var tdo = new AccessibilityTestsDataObject(); + AddTestSelectionCriteria(tdo, "modOne", "Foo2", "Foo2 + modTwo.Foo3"); + AddTestComponent(tdo, tdo.SelectionModuleName, moduleContent1, ComponentType.StandardModule); AddTestComponent(tdo, "modTwo", moduleContent2, ComponentType.StandardModule); @@ -157,24 +262,27 @@ public void DeclarationFinder_PrivateSub_RespectPublicSubInOtherModule() private void TestAccessibleDeclarations(AccessibilityTestsDataObject tdo, string[] testSpecificExpectedResults) { - SetExpectedResults(tdo, testSpecificExpectedResults); + PrepareScenarioTestData(tdo, testSpecificExpectedResults); - PrepareScenarioData(tdo); + var target = tdo.Parser.AllUserDeclarations.FindTarget(tdo.QualifiedSelection); + if(null == target) { Assert.Inconclusive("Unable to find target from QualifiedSelection"); } - var declarationFinderResults = - tdo.Parser.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(tdo.Target); + var accessibleNames = tdo.Parser.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(target) + .Select(d => d.IdentifierName); - var accessibleNames = declarationFinderResults.Select(d => d.IdentifierName); + Assert.IsFalse(accessibleNames.Except(tdo.ExpectedResults).Any() + || tdo.ExpectedResults.Except(accessibleNames).Any() + , BuildIdentifierListToDisplay(accessibleNames.Except(tdo.ExpectedResults), tdo.ExpectedResults.Except(accessibleNames))); + } - Assert.IsTrue(accessibleNames.Count() > 0, "No accessible names detected. 'Target' may be null"); + private void PrepareScenarioTestData(AccessibilityTestsDataObject tdo, string[] testSpecificExpectedResults) + { + SetExpectedResults(tdo, testSpecificExpectedResults); - //Found names not identified for the test - var additionalNamesFound = accessibleNames.Except(tdo.ExpectedResults).ToList(); - Assert.IsFalse(additionalNamesFound.Any(), "Unexpected identifiers found: " + BuildIdentifierListToDisplay(additionalNamesFound)); + tdo.VBE = BuildProject(tdo.ProjectName, tdo.Components); + tdo.Parser = MockParser.CreateAndParse(tdo.VBE); - //GetDeclarationsWithIdentifiersToAvoid(...) did not return all possible conflict identifiers - var missedNames = tdo.ExpectedResults.Except(accessibleNames); - Assert.IsFalse(missedNames.Any(), "Missed identifiers: " + BuildIdentifierListToDisplay(missedNames)); + CreateQualifiedSelectionForTestCase(tdo); } private void SetExpectedResults(AccessibilityTestsDataObject tdo, string[] testSpecificExpectedResults) @@ -188,18 +296,25 @@ private void SetExpectedResults(AccessibilityTestsDataObject tdo, string[] testS tdo.ExpectedResults.Add(tdo.ProjectName); } - private void PrepareScenarioData(AccessibilityTestsDataObject tdo) + private string BuildIdentifierListToDisplay(IEnumerable extraIdentifiers, IEnumerable missedIdentifiers) { - tdo.VBE = BuildProject(tdo.ProjectName, tdo.Components); - tdo.Parser = MockParser.CreateAndParse(tdo.VBE); - - CreateQualifiedSelectionForTestCase(tdo); + var extraNamesPreface = "Returned unexpected identifier(s): "; + var missedNamesPreface = "Did not return expected identifier(s): "; + string extraResults = string.Empty; + string missingResults = string.Empty; + if (extraIdentifiers.Any()) + { + extraResults = extraNamesPreface + GetListOfNames(extraIdentifiers); + } + if (missedIdentifiers.Any()) + { + missingResults = missedNamesPreface + GetListOfNames(missedIdentifiers); + } - IList declarationFinderResults = tdo.Parser.AllUserDeclarations.ToList(); - tdo.Target = declarationFinderResults.FindTarget(tdo.QualifiedSelection); + return "\r\n" + extraResults + "\r\n" + missingResults; } - private string BuildIdentifierListToDisplay(IEnumerable identifiers) + private string GetListOfNames(IEnumerable identifiers) { if (!identifiers.Any()) { return ""; } @@ -302,7 +417,6 @@ public AccessibilityTestsDataObject() public string SelectionLineIdentifier { get; set; } public List ExpectedResults { get; set; } public QualifiedSelection QualifiedSelection { get; set; } - public Declaration Target { get; set; } } @@ -417,7 +531,7 @@ private static void AddReference(Declaration toDeclaration, Declaration fromModu } #region AccessibilityTests_HardcodedModuleContent - private string GetInProcedure_MethodDeclaration_moduleContent1() + private string InProcedure_MethodDeclaration_moduleContent1() { return @" @@ -425,7 +539,7 @@ Option Explicit Private member1 As Long -Public Function Foo() As Long +Public Function Foo() As Long 'Selecting 'Foo' to rename Dim adder as Long adder = 10 member1 = member1 + adder @@ -433,7 +547,7 @@ Dim adder as Long End Function "; } - private string GetInProcedure_LocalVariableReference_moduleContent1() + private string InProcedure_LocalVariableReference_moduleContent1() { return @" @@ -444,12 +558,12 @@ Private member1 As Long Public Function Foo() As Long Dim adder as Long adder = 10 - member1 = member1 + adder + member1 = member1 + adder 'Selecting 'adder' to rename Foo = member1 End Function "; } - private string GetInProcedure_MemberDeclaration_moduleContent1() + private string InProcedure_MemberDeclaration_moduleContent1() { return @" @@ -460,12 +574,12 @@ Private member1 As Long Public Function Foo() As Long Dim adder as Long adder = 10 - member1 = member1 + adder + member1 = member1 + adder 'Selecting member1 to rename Foo = member1 End Function "; } - private string GetModuleScope_moduleContent1() + private string ModuleScope_CFirstClassContent() { return @" @@ -476,12 +590,12 @@ Private member1 As Long Public Function Foo() As Long Dim adder as Long adder = 10 - member1 = member1 + adder + member1 = member1 + adder 'Selecting 'member1' to rename Foo = member1 End Function "; } - private string GetModuleScope_moduleContent2() + private string ModuleScope_moduleContent2() { return @" @@ -502,7 +616,26 @@ Private Sub Bar() End Sub "; } - private string GetModule_To_ClassScope_moduleContent1() + private string PublicClassAndPubicModuleSub_CFirstClass() + { + return + @" +Public Function Foo() As Long 'Selecting 'Foo' to rename + Foo = 5 +End Function +"; + } + private string PublicClassAndPubicModuleSub_moduleContent2() + { + return + @" +Public Function Foo2() As Long + Foo2 = 2 +End Function +"; + } + + private string Module_To_ClassScope_moduleContent1() { return @" @@ -519,11 +652,11 @@ Dim adder as Long End Function Private Sub Bar() - member2 = member2 * 4 'Select either member2 reference from this line + member2 = member2 * 4 'Selecting member2 to rename End Sub "; } - private string GetModule_To_ClassScope_moduleContent2() + private string Module_To_ClassScope_CFirstClass() { return @" @@ -539,7 +672,7 @@ Dim adder as Long End Function "; } - private string GetPrivateSub_RespectPublicSubInOtherModule_moduleContent1() + private string PrivateSub_RespectPublicSubInOtherModule_moduleContent1() { return @" @@ -547,11 +680,37 @@ Option Explicit Private Sub DoThis(filename As String) - SetFilename filename + SetFilename filename 'Selecting 'SetFilename' to rename +End Sub +"; + } + private string PrivateSub_RespectPublicSubInOtherModule_moduleContent2() + { + return + @" +Option Explicit + +Private member1 As String + +Public Sub SetFilename(filename As String) + member1 = filename +End Sub +"; + } + + private string PrivateSub_MultipleReferences_moduleContent1() + { + return +@" +Option Explicit + + +Private Sub DoThis(filename As String) + SetFilename filename 'Selecting 'SetFilename' to rename End Sub "; } - private string GetPrivateSub_RespectPublicSubInOtherModule_moduleContent2() + private string PrivateSub_MultipleReferences_moduleContent2() { return @" @@ -561,6 +720,119 @@ Private member1 As String Public Sub SetFilename(filename As String) member1 = filename +End Sub +"; + } + private string PrivateSub_MultipleReferences_WithBlock_CFileHelperContent() + { + return + @" +Option Explicit + +Private mFolderpath As String + +Public Sub StoreFilename(input As String) + Dim filename As String + filename = ExtractFilename(input) + SetFilename filename +End Sub + +Private Function ExtractFilename(filepath As String) As String + ExtractFilename = filepath +End Function + +Public Sub Bar() +End Sub +"; + } + + private string PrivateSub_MultipleReferences_WithBlock_ModuleContent1() + { + return + @" +Option Explicit + +Private myData As String +Private mDupData As String + +Public Sub Foo(filenm As String) + Dim filepath As String + filepath = ""C:\MyStuff\"" & filenm + Dim helper As CFileHelper + Set helper = new CFileHelper + With helper + .StoreFilename filepath 'Selecting 'StoreFilename' to rename + mDupData = filepath + End With +End Sub + +Private Sub StoreFilename(filename As String) + myData = filename +End Sub +"; + } + + private string PrivateSub_MultipleReferences_moduleContent3() + { + return + @" +Option Explicit + +Private mFolderpath As String + +Private Sub StoreFilename(filepath As String) + Dim filename As String + filename = ExtractFilename(filepath) + SetFilename filename +End Sub + +Private Function ExtractFilename(filepath As String) As String + ExtractFilename = filepath +End Function +"; + } + + private string Module_To_ModuleScopeResolution__moduleContent1() + { + return + @" +Option Explicit + +Private member11 As Long +Public member2 As Long + +Private Function Bar1() As Long + Bar2 + Bar1 = member2 + modTwo.Foo1 + modTwo.Foo2 + modTwo.Foo3 'Selecting Foo2 to rename +End Function + +Private Sub Bar2() + member2 = member2 * 4 +End Sub +"; + } + private string Module_To_ModuleScopeResolution__moduleContent2() + { + return + @" +Option Explicit + +Public Const gConstant As Long = 10 + +Public Function Foo1() As Long + Foo1 = 1 +End Function + +Public Function Foo2() As Long + Foo2 = 2 +End Function + +Public Function Foo3() As Long + Foo3 = 3 +End Function + +Private Sub Foo4() + End Sub "; } From 9b9757062bae2af594281e905aeab925745b1eca Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Wed, 15 Mar 2017 10:48:10 -0700 Subject: [PATCH 06/20] Some Minor cleanup --- .../Symbols/DeclarationFinderTests.cs | 61 +++++++++++-------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/RubberduckTests/Symbols/DeclarationFinderTests.cs b/RubberduckTests/Symbols/DeclarationFinderTests.cs index 245fb74077..7150cd1a64 100644 --- a/RubberduckTests/Symbols/DeclarationFinderTests.cs +++ b/RubberduckTests/Symbols/DeclarationFinderTests.cs @@ -220,8 +220,8 @@ public void DeclarationFinder_PrivateSub_WithBlock() "Bar" }; - string moduleContent1 = PrivateSub_MultipleReferences_WithBlock_ModuleContent1(); - string moduleContent2 = PrivateSub_MultipleReferences_WithBlock_CFileHelperContent(); + string moduleContent1 = PrivateSub_WithBlock_ModuleContent1(); + string moduleContent2 = PrivateSub_WithBlock_CFileHelperContent(); var tdo = new AccessibilityTestsDataObject(); AddTestSelectionCriteria(tdo, "modOne", "StoreFilename", ".StoreFilename filepath"); @@ -547,6 +547,7 @@ Dim adder as Long End Function "; } + private string InProcedure_LocalVariableReference_moduleContent1() { return @@ -563,6 +564,7 @@ Dim adder as Long End Function "; } + private string InProcedure_MemberDeclaration_moduleContent1() { return @@ -579,6 +581,7 @@ Dim adder as Long End Function "; } + private string ModuleScope_CFirstClassContent() { return @@ -595,6 +598,7 @@ Dim adder as Long End Function "; } + private string ModuleScope_moduleContent2() { return @@ -616,6 +620,7 @@ Private Sub Bar() End Sub "; } + private string PublicClassAndPubicModuleSub_CFirstClass() { return @@ -625,6 +630,7 @@ Public Function Foo() As Long 'Selecting 'Foo' to rename End Function "; } + private string PublicClassAndPubicModuleSub_moduleContent2() { return @@ -656,6 +662,7 @@ Private Sub Bar() End Sub "; } + private string Module_To_ClassScope_CFirstClass() { return @@ -672,6 +679,7 @@ Dim adder as Long End Function "; } + private string PrivateSub_RespectPublicSubInOtherModule_moduleContent1() { return @@ -684,6 +692,7 @@ SetFilename filename 'Selecting 'SetFilename' to rename End Sub "; } + private string PrivateSub_RespectPublicSubInOtherModule_moduleContent2() { return @@ -710,6 +719,7 @@ SetFilename filename 'Selecting 'SetFilename' to rename End Sub "; } + private string PrivateSub_MultipleReferences_moduleContent2() { return @@ -723,7 +733,28 @@ Public Sub SetFilename(filename As String) End Sub "; } - private string PrivateSub_MultipleReferences_WithBlock_CFileHelperContent() + + private string PrivateSub_MultipleReferences_moduleContent3() + { + return + @" +Option Explicit + +Private mFolderpath As String + +Private Sub StoreFilename(filepath As String) + Dim filename As String + filename = ExtractFilename(filepath) + SetFilename filename +End Sub + +Private Function ExtractFilename(filepath As String) As String + ExtractFilename = filepath +End Function +"; + } + + private string PrivateSub_WithBlock_CFileHelperContent() { return @" @@ -746,7 +777,7 @@ End Sub "; } - private string PrivateSub_MultipleReferences_WithBlock_ModuleContent1() + private string PrivateSub_WithBlock_ModuleContent1() { return @" @@ -766,32 +797,12 @@ .StoreFilename filepath 'Selecting 'StoreFilename' to rename End With End Sub -Private Sub StoreFilename(filename As String) +Public Sub StoreFilename(filename As String) myData = filename End Sub "; } - private string PrivateSub_MultipleReferences_moduleContent3() - { - return - @" -Option Explicit - -Private mFolderpath As String - -Private Sub StoreFilename(filepath As String) - Dim filename As String - filename = ExtractFilename(filepath) - SetFilename filename -End Sub - -Private Function ExtractFilename(filepath As String) As String - ExtractFilename = filepath -End Function -"; - } - private string Module_To_ModuleScopeResolution__moduleContent1() { return From 1dd9d64b430af691d819eeb0df2a804eaa1d4da7 Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Wed, 15 Mar 2017 13:41:06 -0700 Subject: [PATCH 07/20] Minor tweak --- RubberduckTests/Symbols/DeclarationFinderTests.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/RubberduckTests/Symbols/DeclarationFinderTests.cs b/RubberduckTests/Symbols/DeclarationFinderTests.cs index 7150cd1a64..24be6ec891 100644 --- a/RubberduckTests/Symbols/DeclarationFinderTests.cs +++ b/RubberduckTests/Symbols/DeclarationFinderTests.cs @@ -335,20 +335,22 @@ private void CreateQualifiedSelectionForTestCase(AccessibilityTestsDataObject td var splitToken = new string[] { "\r\n" }; var lines = moduleContent.Split(splitToken, System.StringSplitOptions.None); - int lineNumber = 0; - for (int idx = 0; idx < lines.Count() && lineNumber < 1; idx++) + int lineOfInterestNumber = 0; + string lineOfInterestContent = string.Empty; + for (int idx = 0; idx < lines.Count() && lineOfInterestNumber < 1; idx++) { if (lines[idx].Contains(tdo.SelectionLineIdentifier)) { - lineNumber = idx + 1; + lineOfInterestNumber = idx + 1; + lineOfInterestContent = lines[idx]; } } - Assert.IsTrue(lineNumber > 0, "Unable to find target '" + tdo.SelectionTarget + "' in " + tdo.SelectionModuleName + " content."); - var column = lines[lineNumber - 1].IndexOf(tdo.SelectionLineIdentifier); + Assert.IsTrue(lineOfInterestNumber > 0, "Unable to find target '" + tdo.SelectionTarget + "' in " + tdo.SelectionModuleName + " content."); + var column = lineOfInterestContent.IndexOf(tdo.SelectionLineIdentifier); column = column + tdo.SelectionLineIdentifier.IndexOf(tdo.SelectionTarget) + 1; var moduleParent = component.CodeModule.Parent; - tdo.QualifiedSelection = new QualifiedSelection(new QualifiedModuleName(moduleParent), new Selection(lineNumber, column, lineNumber, column)); + tdo.QualifiedSelection = new QualifiedSelection(new QualifiedModuleName(moduleParent), new Selection(lineOfInterestNumber, column, lineOfInterestNumber, column)); } private void AddTestComponent(AccessibilityTestsDataObject tdo, string moduleIdentifier, string moduleContent, ComponentType componentType) From 3d4f567ccf358ce63420f30a29df32d328b23abc Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 18:43:38 -0500 Subject: [PATCH 08/20] UI is mostly done --- .../QuickFixes/EncapsulateFieldQuickFix.cs | 8 +- .../EncapsulateField/PropertyGenerator.cs | 52 ++-- RetailCoder.VBE/Rubberduck.csproj | 14 +- RetailCoder.VBE/Rubberduck.csproj.DotSettings | 2 + .../RefactorEncapsulateFieldCommand.cs | 15 +- .../EncapsulateFieldDialog.Designer.cs | 68 ++++ .../EncapsulateFieldDialog.cs | 28 ++ .../EncapsulateFieldDialog.resx | 0 .../EncapsulateFieldView.xaml | 148 +++++++++ .../EncapsulateFieldView.xaml.cs | 28 ++ .../EncapsulateFieldViewModel.cs | 143 +++++++++ .../EncapsulateFieldDialog.Designer.cs | 293 ------------------ .../UI/Refactorings/EncapsulateFieldDialog.cs | 172 ---------- RetailCoder.VBE/UI/RubberduckUI.Designer.cs | 9 + RetailCoder.VBE/UI/RubberduckUI.resx | 3 + 15 files changed, 473 insertions(+), 510 deletions(-) create mode 100644 RetailCoder.VBE/Rubberduck.csproj.DotSettings create mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs create mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs rename RetailCoder.VBE/UI/Refactorings/{ => EncapsulateField}/EncapsulateFieldDialog.resx (100%) create mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml create mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml.cs create mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs delete mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.Designer.cs delete mode 100644 RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.cs diff --git a/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs b/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs index edc339adf1..b21000c6be 100644 --- a/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs +++ b/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs @@ -6,7 +6,7 @@ using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.SmartIndenter; -using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.EncapsulateField; using Rubberduck.VBEditor; namespace Rubberduck.Inspections.QuickFixes @@ -32,12 +32,12 @@ public override void Fix() { var vbe = _target.Project.VBE; - using (var view = new EncapsulateFieldDialog(_state, _indenter)) + using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { - var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view); + /*var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(vbe, _indenter, factory); refactoring.Refactor(_target); - IsCancelled = view.DialogResult != DialogResult.OK; + IsCancelled = view.DialogResult != DialogResult.OK;*/ } } diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/PropertyGenerator.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/PropertyGenerator.cs index 1d46764e10..0e67c7c51b 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/PropertyGenerator.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/PropertyGenerator.cs @@ -11,15 +11,9 @@ public class PropertyGenerator public bool GenerateLetter { get; set; } public bool GenerateSetter { get; set; } - public string AllPropertyCode - { - get - { - return GetterCode + - (GenerateLetter ? LetterCode : string.Empty) + - (GenerateSetter ? SetterCode : string.Empty); - } - } + public string AllPropertyCode => GetterCode + + (GenerateLetter ? LetterCode : string.Empty) + + (GenerateSetter ? SetterCode : string.Empty); public string GetterCode { @@ -28,21 +22,21 @@ public string GetterCode if (GenerateSetter && GenerateLetter) { return string.Join(Environment.NewLine, - string.Format("Public Property Get {0}() As {1}", PropertyName, AsTypeName), - string.Format(" If IsObject({0}) Then", BackingField), - string.Format(" Set {0} = {1}", PropertyName, BackingField), - " Else", - string.Format(" {0} = {1}", PropertyName, BackingField), - " End If", - "End Property", - Environment.NewLine); + $"Public Property Get {PropertyName}() As {AsTypeName}", + $" If IsObject({BackingField}) Then", + $" Set {PropertyName} = {BackingField}", + " Else", + $" {PropertyName} = {BackingField}", + " End If", + "End Property", + Environment.NewLine); } return string.Join(Environment.NewLine, - string.Format("Public Property Get {0}() As {1}", PropertyName, AsTypeName), - string.Format(" {0}{1} = {2}", GenerateSetter ? "Set " : string.Empty, PropertyName, BackingField), - "End Property", - Environment.NewLine); + $"Public Property Get {PropertyName}() As {AsTypeName}", + $" {(GenerateSetter ? "Set " : string.Empty)}{PropertyName} = {BackingField}", + "End Property", + Environment.NewLine); } } @@ -55,10 +49,10 @@ public string SetterCode return string.Empty; } return string.Join(Environment.NewLine, - string.Format("Public Property Set {0}(ByVal {1} As {2})", PropertyName, ParameterName, AsTypeName), - string.Format(" Set {0} = {1}", BackingField, ParameterName), - "End Property", - Environment.NewLine); + $"Public Property Set {PropertyName}(ByVal {ParameterName} As {AsTypeName})", + $" Set {BackingField} = {ParameterName}", + "End Property", + Environment.NewLine); } } @@ -71,10 +65,10 @@ public string LetterCode return string.Empty; } return string.Join(Environment.NewLine, - string.Format("Public Property Let {0}(ByVal {1} As {2})", PropertyName, ParameterName, AsTypeName), - string.Format(" {0} = {1}", BackingField, ParameterName), - "End Property", - Environment.NewLine); + $"Public Property Let {PropertyName}(ByVal {ParameterName} As {AsTypeName})", + $" {BackingField} = {ParameterName}", + "End Property", + Environment.NewLine); } } } diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index b2e3251a88..10d2e03d04 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -477,6 +477,10 @@ + + EncapsulateFieldView.xaml + + @@ -757,10 +761,10 @@ AssignedByValParameterQuickFixDialog.cs - + Form - + EncapsulateFieldDialog.cs @@ -1103,7 +1107,7 @@ AssignedByValParameterQuickFixDialog.cs - + EncapsulateFieldDialog.cs @@ -1489,6 +1493,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer diff --git a/RetailCoder.VBE/Rubberduck.csproj.DotSettings b/RetailCoder.VBE/Rubberduck.csproj.DotSettings new file mode 100644 index 0000000000..73e96563f9 --- /dev/null +++ b/RetailCoder.VBE/Rubberduck.csproj.DotSettings @@ -0,0 +1,2 @@ + + CSharp60 \ No newline at end of file diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs index 6f62c3b85d..4e22701f17 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs @@ -1,10 +1,9 @@ using System.Runtime.InteropServices; using Rubberduck.Parsing.Symbols; using Rubberduck.Parsing.VBA; -using Rubberduck.Refactorings.EncapsulateField; -using Rubberduck.UI.Refactorings; using Rubberduck.SmartIndenter; using Rubberduck.Settings; +using Rubberduck.UI.Refactorings.EncapsulateField; using Rubberduck.VBEditor.SafeComWrappers.Abstract; namespace Rubberduck.UI.Command.Refactorings @@ -46,17 +45,15 @@ protected override void ExecuteImpl(object parameter) return; } - using (var view = new EncapsulateFieldDialog(_state, _indenter)) + using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { - var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); + /*var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(Vbe, _indenter, factory); - refactoring.Refactor(); + refactoring.Refactor();*/ + view.ShowDialog(); } } - public override RubberduckHotkey Hotkey - { - get { return RubberduckHotkey.RefactorEncapsulateField; } - } + public override RubberduckHotkey Hotkey => RubberduckHotkey.RefactorEncapsulateField; } } diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs new file mode 100644 index 0000000000..f04f21d499 --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs @@ -0,0 +1,68 @@ +namespace Rubberduck.UI.Refactorings.EncapsulateField +{ + partial class EncapsulateFieldDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EncapsulateFieldDialog)); + this.elementHost1 = new System.Windows.Forms.Integration.ElementHost(); + this.EncapsulateFieldViewElement = new EncapsulateFieldView(); + this.SuspendLayout(); + // + // elementHost1 + // + this.elementHost1.Dock = System.Windows.Forms.DockStyle.Fill; + this.elementHost1.Location = new System.Drawing.Point(0, 0); + this.elementHost1.Margin = new System.Windows.Forms.Padding(4); + this.elementHost1.Name = "elementHost1"; + this.elementHost1.Size = new System.Drawing.Size(494, 395); + this.elementHost1.TabIndex = 1; + this.elementHost1.Text = "elementHost1"; + this.elementHost1.Child = this.EncapsulateFieldViewElement; + // + // EncapsulateFieldDialog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(500, 405); + this.Controls.Add(this.elementHost1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.Name = "EncapsulateFieldDialog"; + this.ShowInTaskbar = false; + this.Text = "Rubberduck - Encapsulate Field"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Integration.ElementHost elementHost1; + private EncapsulateFieldView EncapsulateFieldViewElement; + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs new file mode 100644 index 0000000000..8e514ae6be --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs @@ -0,0 +1,28 @@ +using System.Windows.Forms; + +namespace Rubberduck.UI.Refactorings.EncapsulateField +{ + public partial class EncapsulateFieldDialog : Form + { + public EncapsulateFieldViewModel ViewModel { get; } + + private EncapsulateFieldDialog() + { + InitializeComponent(); + Text = RubberduckUI.EncapsulateField_Caption; + } + + public EncapsulateFieldDialog(EncapsulateFieldViewModel vm) : this() + { + ViewModel = vm; + EncapsulateFieldViewElement.DataContext = vm; + vm.OnWindowClosed += ViewModel_OnWindowClosed; + } + + void ViewModel_OnWindowClosed(object sender, DialogResult result) + { + DialogResult = result; + Close(); + } + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.resx b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.resx similarity index 100% rename from RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.resx rename to RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.resx diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml new file mode 100644 index 0000000000..86947e9513 --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml.cs new file mode 100644 index 0000000000..ae5ed0216e --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Rubberduck.UI.Refactorings.EncapsulateField +{ + /// + /// Interaction logic for EncapsulateFieldView.xaml + /// + public partial class EncapsulateFieldView : UserControl + { + public EncapsulateFieldView() + { + InitializeComponent(); + } + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs new file mode 100644 index 0000000000..11f92ce228 --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs @@ -0,0 +1,143 @@ +using System; +using System.Linq; +using System.Windows.Forms; +using NLog; +using Rubberduck.Parsing.Grammar; +using Rubberduck.Parsing.Symbols; +using Rubberduck.Parsing.VBA; +using Rubberduck.SmartIndenter; +using Rubberduck.UI.Command; + +namespace Rubberduck.UI.Refactorings.EncapsulateField +{ + public class EncapsulateFieldViewModel : ViewModelBase + { + public RubberduckParserState State { get; } + public IIndenter Indenter { get; } + + public Declaration TargetDeclaration { get; set; } + + public EncapsulateFieldViewModel(RubberduckParserState state, IIndenter indenter) + { + State = state; + Indenter = indenter; + + OkButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => DialogOk()); + CancelButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => DialogCancel()); + + IsLetSelected = true; + CanHaveLet = true; + } + + private bool _canHaveLet; + public bool CanHaveLet + { + get { return _canHaveLet; } + set + { + _canHaveLet = value; + OnPropertyChanged(); + } + } + + private bool _canHaveSet; + public bool CanHaveSet + { + get { return _canHaveSet; } + set + { + _canHaveSet = value; + OnPropertyChanged(); + } + } + + private bool _isLetSelected; + public bool IsLetSelected + { + get { return _isLetSelected; } + set + { + _isLetSelected = value; + OnPropertyChanged(); + } + } + + private bool _isSetSelected; + public bool IsSetSelected + { + get { return _isSetSelected; } + set + { + _isSetSelected = value; + OnPropertyChanged(); + } + } + + private string _propertyName; + public string PropertyName + { + get { return _propertyName; } + set + { + _propertyName = value; + OnPropertyChanged(); + OnPropertyChanged(nameof(IsValidPropertyName)); + OnPropertyChanged(nameof(PropertyPreview)); + } + } + + private string _parameterName; + public string ParameterName + { + get { return _parameterName; } + set + { + _parameterName = value; + OnPropertyChanged(); + OnPropertyChanged(nameof(IsValidParameterName)); + OnPropertyChanged(nameof(PropertyPreview)); + } + } + + public bool IsValidPropertyName + { + get + { + var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); + + return TargetDeclaration != null + && ParameterName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) + && ParameterName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase) + && !char.IsLetter(ParameterName.FirstOrDefault()) + && tokenValues.Contains(ParameterName, StringComparer.InvariantCultureIgnoreCase) + && ParameterName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); + } + } + + public bool IsValidParameterName + { + get + { + var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); + + return TargetDeclaration != null + && PropertyName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) + && PropertyName.Equals(ParameterName, StringComparison.InvariantCultureIgnoreCase) + && !char.IsLetter(PropertyName.FirstOrDefault()) + && tokenValues.Contains(PropertyName, StringComparer.InvariantCultureIgnoreCase) + && PropertyName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); + } + } + + public bool HasValidNames => IsValidPropertyName && IsValidParameterName; + + public string PropertyPreview => string.Empty; + + public event EventHandler OnWindowClosed; + private void DialogCancel() => OnWindowClosed?.Invoke(this, DialogResult.Cancel); + private void DialogOk() => OnWindowClosed?.Invoke(this, DialogResult.OK); + + public CommandBase OkButtonCommand { get; } + public CommandBase CancelButtonCommand { get; } + } +} \ No newline at end of file diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.Designer.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.Designer.cs deleted file mode 100644 index 7945409468..0000000000 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.Designer.cs +++ /dev/null @@ -1,293 +0,0 @@ -namespace Rubberduck.UI.Refactorings -{ - partial class EncapsulateFieldDialog - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EncapsulateFieldDialog)); - this.DescriptionPanel = new System.Windows.Forms.Panel(); - this.TitleLabel = new System.Windows.Forms.Label(); - this.InstructionsLabel = new System.Windows.Forms.Label(); - this.InvalidPropertyNameIcon = new System.Windows.Forms.PictureBox(); - this.PreviewBox = new System.Windows.Forms.TextBox(); - this.PreviewLabel = new System.Windows.Forms.Label(); - this.PropertyNameTextBox = new System.Windows.Forms.TextBox(); - this.PropertyNameLabel = new System.Windows.Forms.Label(); - this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); - this.CancelDialogButton = new System.Windows.Forms.Button(); - this.OkButton = new System.Windows.Forms.Button(); - this.InvalidVariableNameIcon = new System.Windows.Forms.PictureBox(); - this.ParameterNameTextBox = new System.Windows.Forms.TextBox(); - this.VariableNameLabel = new System.Windows.Forms.Label(); - this.SetterTypeGroupBox = new System.Windows.Forms.GroupBox(); - this.SetSetterTypeCheckBox = new System.Windows.Forms.CheckBox(); - this.LetSetterTypeCheckBox = new System.Windows.Forms.CheckBox(); - this.DescriptionPanel.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.InvalidPropertyNameIcon)).BeginInit(); - this.flowLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.InvalidVariableNameIcon)).BeginInit(); - this.SetterTypeGroupBox.SuspendLayout(); - this.SuspendLayout(); - // - // DescriptionPanel - // - this.DescriptionPanel.BackColor = System.Drawing.Color.White; - this.DescriptionPanel.Controls.Add(this.TitleLabel); - this.DescriptionPanel.Controls.Add(this.InstructionsLabel); - this.DescriptionPanel.Dock = System.Windows.Forms.DockStyle.Top; - this.DescriptionPanel.Location = new System.Drawing.Point(0, 0); - this.DescriptionPanel.Name = "DescriptionPanel"; - this.DescriptionPanel.Size = new System.Drawing.Size(500, 68); - this.DescriptionPanel.TabIndex = 14; - // - // TitleLabel - // - this.TitleLabel.AutoSize = true; - this.TitleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.TitleLabel.Location = new System.Drawing.Point(15, 9); - this.TitleLabel.Name = "TitleLabel"; - this.TitleLabel.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.TitleLabel.Size = new System.Drawing.Size(126, 19); - this.TitleLabel.TabIndex = 2; - this.TitleLabel.Text = "Encapsulate Field"; - // - // InstructionsLabel - // - this.InstructionsLabel.Location = new System.Drawing.Point(15, 24); - this.InstructionsLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.InstructionsLabel.Name = "InstructionsLabel"; - this.InstructionsLabel.Padding = new System.Windows.Forms.Padding(3, 3, 3, 3); - this.InstructionsLabel.Size = new System.Drawing.Size(412, 28); - this.InstructionsLabel.TabIndex = 3; - this.InstructionsLabel.Text = "Please specify property name, parameter accessibility, and setter type."; - // - // InvalidPropertyNameIcon - // - this.InvalidPropertyNameIcon.Image = global::Rubberduck.Properties.Resources.cross_circle; - this.InvalidPropertyNameIcon.Location = new System.Drawing.Point(355, 83); - this.InvalidPropertyNameIcon.Name = "InvalidPropertyNameIcon"; - this.InvalidPropertyNameIcon.Size = new System.Drawing.Size(16, 16); - this.InvalidPropertyNameIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.InvalidPropertyNameIcon.TabIndex = 24; - this.InvalidPropertyNameIcon.TabStop = false; - // - // PreviewBox - // - this.PreviewBox.BackColor = System.Drawing.Color.White; - this.PreviewBox.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.PreviewBox.Location = new System.Drawing.Point(16, 180); - this.PreviewBox.Multiline = true; - this.PreviewBox.Name = "PreviewBox"; - this.PreviewBox.ReadOnly = true; - this.PreviewBox.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.PreviewBox.Size = new System.Drawing.Size(467, 177); - this.PreviewBox.TabIndex = 23; - this.PreviewBox.TabStop = false; - this.PreviewBox.WordWrap = false; - // - // PreviewLabel - // - this.PreviewLabel.AutoSize = true; - this.PreviewLabel.Location = new System.Drawing.Point(15, 162); - this.PreviewLabel.Name = "PreviewLabel"; - this.PreviewLabel.Size = new System.Drawing.Size(48, 13); - this.PreviewLabel.TabIndex = 22; - this.PreviewLabel.Text = "Preview:"; - // - // PropertyNameTextBox - // - this.PropertyNameTextBox.Location = new System.Drawing.Point(17, 92); - this.PropertyNameTextBox.Name = "PropertyNameTextBox"; - this.PropertyNameTextBox.Size = new System.Drawing.Size(344, 20); - this.PropertyNameTextBox.TabIndex = 0; - // - // PropertyNameLabel - // - this.PropertyNameLabel.AutoSize = true; - this.PropertyNameLabel.Location = new System.Drawing.Point(14, 75); - this.PropertyNameLabel.Name = "PropertyNameLabel"; - this.PropertyNameLabel.Size = new System.Drawing.Size(80, 13); - this.PropertyNameLabel.TabIndex = 15; - this.PropertyNameLabel.Text = "&Property Name:"; - // - // flowLayoutPanel2 - // - this.flowLayoutPanel2.BackColor = System.Drawing.SystemColors.ControlDark; - this.flowLayoutPanel2.Controls.Add(this.CancelDialogButton); - this.flowLayoutPanel2.Controls.Add(this.OkButton); - this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Bottom; - this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; - this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 362); - this.flowLayoutPanel2.Name = "flowLayoutPanel2"; - this.flowLayoutPanel2.Padding = new System.Windows.Forms.Padding(8, 8, 0, 8); - this.flowLayoutPanel2.Size = new System.Drawing.Size(500, 43); - this.flowLayoutPanel2.TabIndex = 27; - // - // CancelDialogButton - // - this.CancelDialogButton.BackColor = System.Drawing.SystemColors.ButtonFace; - this.CancelDialogButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.CancelDialogButton.Location = new System.Drawing.Point(414, 11); - this.CancelDialogButton.Name = "CancelDialogButton"; - this.CancelDialogButton.Size = new System.Drawing.Size(75, 23); - this.CancelDialogButton.TabIndex = 5; - this.CancelDialogButton.Text = "&Cancel"; - this.CancelDialogButton.UseVisualStyleBackColor = false; - // - // OkButton - // - this.OkButton.BackColor = System.Drawing.SystemColors.ButtonFace; - this.OkButton.DialogResult = System.Windows.Forms.DialogResult.OK; - this.OkButton.Location = new System.Drawing.Point(333, 11); - this.OkButton.Name = "OkButton"; - this.OkButton.Size = new System.Drawing.Size(75, 23); - this.OkButton.TabIndex = 4; - this.OkButton.Text = "&Ok"; - this.OkButton.UseVisualStyleBackColor = false; - // - // InvalidVariableNameIcon - // - this.InvalidVariableNameIcon.Image = global::Rubberduck.Properties.Resources.cross_circle; - this.InvalidVariableNameIcon.Location = new System.Drawing.Point(355, 127); - this.InvalidVariableNameIcon.Name = "InvalidVariableNameIcon"; - this.InvalidVariableNameIcon.Size = new System.Drawing.Size(16, 16); - this.InvalidVariableNameIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.InvalidVariableNameIcon.TabIndex = 30; - this.InvalidVariableNameIcon.TabStop = false; - this.InvalidVariableNameIcon.Visible = false; - // - // ParameterNameTextBox - // - this.ParameterNameTextBox.Location = new System.Drawing.Point(17, 135); - this.ParameterNameTextBox.Name = "ParameterNameTextBox"; - this.ParameterNameTextBox.Size = new System.Drawing.Size(344, 20); - this.ParameterNameTextBox.TabIndex = 1; - this.ParameterNameTextBox.Text = "value"; - // - // VariableNameLabel - // - this.VariableNameLabel.AutoSize = true; - this.VariableNameLabel.Location = new System.Drawing.Point(14, 116); - this.VariableNameLabel.Name = "VariableNameLabel"; - this.VariableNameLabel.Size = new System.Drawing.Size(89, 13); - this.VariableNameLabel.TabIndex = 28; - this.VariableNameLabel.Text = "Parameter &Name:"; - // - // SetterTypeGroupBox - // - this.SetterTypeGroupBox.Controls.Add(this.SetSetterTypeCheckBox); - this.SetterTypeGroupBox.Controls.Add(this.LetSetterTypeCheckBox); - this.SetterTypeGroupBox.Location = new System.Drawing.Point(376, 84); - this.SetterTypeGroupBox.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.SetterTypeGroupBox.Name = "SetterTypeGroupBox"; - this.SetterTypeGroupBox.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.SetterTypeGroupBox.Size = new System.Drawing.Size(106, 70); - this.SetterTypeGroupBox.TabIndex = 2; - this.SetterTypeGroupBox.TabStop = false; - this.SetterTypeGroupBox.Text = "Assignment:"; - // - // SetSetterTypeCheckBox - // - this.SetSetterTypeCheckBox.AutoSize = true; - this.SetSetterTypeCheckBox.Location = new System.Drawing.Point(10, 39); - this.SetSetterTypeCheckBox.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.SetSetterTypeCheckBox.Name = "SetSetterTypeCheckBox"; - this.SetSetterTypeCheckBox.Size = new System.Drawing.Size(42, 17); - this.SetSetterTypeCheckBox.TabIndex = 3; - this.SetSetterTypeCheckBox.Text = "&Set"; - this.SetSetterTypeCheckBox.UseVisualStyleBackColor = true; - // - // LetSetterTypeCheckBox - // - this.LetSetterTypeCheckBox.AutoSize = true; - this.LetSetterTypeCheckBox.Location = new System.Drawing.Point(10, 17); - this.LetSetterTypeCheckBox.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.LetSetterTypeCheckBox.Name = "LetSetterTypeCheckBox"; - this.LetSetterTypeCheckBox.Size = new System.Drawing.Size(41, 17); - this.LetSetterTypeCheckBox.TabIndex = 2; - this.LetSetterTypeCheckBox.Text = "&Let"; - this.LetSetterTypeCheckBox.UseVisualStyleBackColor = true; - // - // EncapsulateFieldDialog - // - this.AcceptButton = this.OkButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.CancelDialogButton; - this.ClientSize = new System.Drawing.Size(500, 405); - this.Controls.Add(this.SetterTypeGroupBox); - this.Controls.Add(this.InvalidVariableNameIcon); - this.Controls.Add(this.ParameterNameTextBox); - this.Controls.Add(this.VariableNameLabel); - this.Controls.Add(this.flowLayoutPanel2); - this.Controls.Add(this.InvalidPropertyNameIcon); - this.Controls.Add(this.PreviewBox); - this.Controls.Add(this.PreviewLabel); - this.Controls.Add(this.PropertyNameTextBox); - this.Controls.Add(this.PropertyNameLabel); - this.Controls.Add(this.DescriptionPanel); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "EncapsulateFieldDialog"; - this.ShowInTaskbar = false; - this.Text = "Rubberduck - Encapsulate Field"; - this.DescriptionPanel.ResumeLayout(false); - this.DescriptionPanel.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.InvalidPropertyNameIcon)).EndInit(); - this.flowLayoutPanel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.InvalidVariableNameIcon)).EndInit(); - this.SetterTypeGroupBox.ResumeLayout(false); - this.SetterTypeGroupBox.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel DescriptionPanel; - private System.Windows.Forms.Label TitleLabel; - private System.Windows.Forms.Label InstructionsLabel; - private System.Windows.Forms.PictureBox InvalidPropertyNameIcon; - private System.Windows.Forms.TextBox PreviewBox; - private System.Windows.Forms.Label PreviewLabel; - private System.Windows.Forms.TextBox PropertyNameTextBox; - private System.Windows.Forms.Label PropertyNameLabel; - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; - private System.Windows.Forms.Button CancelDialogButton; - private System.Windows.Forms.Button OkButton; - private System.Windows.Forms.PictureBox InvalidVariableNameIcon; - private System.Windows.Forms.TextBox ParameterNameTextBox; - private System.Windows.Forms.Label VariableNameLabel; - private System.Windows.Forms.GroupBox SetterTypeGroupBox; - private System.Windows.Forms.CheckBox SetSetterTypeCheckBox; - private System.Windows.Forms.CheckBox LetSetterTypeCheckBox; - } -} diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.cs deleted file mode 100644 index 6955bdee81..0000000000 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateFieldDialog.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System; -using System.Linq; -using System.Windows.Forms; -using Rubberduck.Parsing.Grammar; -using Rubberduck.Parsing.Symbols; -using Rubberduck.Parsing.VBA; -using Rubberduck.Refactorings.EncapsulateField; - -namespace Rubberduck.UI.Refactorings -{ - using SmartIndenter; - - public partial class EncapsulateFieldDialog : Form, IEncapsulateFieldDialog - { - private readonly RubberduckParserState _state; - private readonly IIndenter _indenter; - private PropertyGenerator _previewGenerator; - - public string NewPropertyName - { - get { return PropertyNameTextBox.Text; } - set { PropertyNameTextBox.Text = value; } - } - - public string ParameterName - { - get { return ParameterNameTextBox.Text; } - set { ParameterNameTextBox.Text = value; } - } - - public Declaration TargetDeclaration { get; set; } - - public bool CanImplementLetSetterType { get; set; } - - public bool CanImplementSetSetterType { get; set; } - - public bool LetSetterSelected { get { return LetSetterTypeCheckBox.Checked; } } - - public bool SetSetterSelected { get { return SetSetterTypeCheckBox.Checked; } } - - public bool MustImplementLetSetterType - { - get { return CanImplementLetSetterType && !CanImplementSetSetterType; } - } - - public bool MustImplementSetSetterType - { - get { return CanImplementSetSetterType && !CanImplementLetSetterType; } - } - - public EncapsulateFieldDialog(RubberduckParserState state, IIndenter indenter) - { - _state = state; - _indenter = indenter; - - InitializeComponent(); - LocalizeDialog(); - - Shown += EncapsulateFieldDialog_Shown; - } - - void EncapsulateFieldDialog_SetterTypeChanged(object sender, EventArgs e) - { - _previewGenerator.GenerateSetter = SetSetterTypeCheckBox.Checked; - _previewGenerator.GenerateLetter = LetSetterTypeCheckBox.Checked; - UpdatePreview(); - } - - private void LocalizeDialog() - { - Text = RubberduckUI.EncapsulateField_Caption; - TitleLabel.Text = RubberduckUI.EncapsulateField_TitleText; - InstructionsLabel.Text = RubberduckUI.EncapsulateField_InstructionText; - PropertyNameLabel.Text = RubberduckUI.EncapsulateField_PropertyName; - SetterTypeGroupBox.Text = RubberduckUI.EncapsulateField_SetterType; - VariableNameLabel.Text = RubberduckUI.EncapsulateField_ParameterName; - OkButton.Text = RubberduckUI.OK; - CancelDialogButton.Text = RubberduckUI.CancelButtonText; - } - - void EncapsulateFieldDialog_Shown(object sender, EventArgs e) - { - if (MustImplementSetSetterType) - { - SetSetterTypeCheckBox.Checked = true; - LetSetterTypeCheckBox.Enabled = false; - } - else - { - LetSetterTypeCheckBox.Checked = true; - SetSetterTypeCheckBox.Enabled = !MustImplementLetSetterType; - } - - ValidatePropertyName(); - ValidateVariableName(); - - _previewGenerator = new PropertyGenerator - { - PropertyName = NewPropertyName, - AsTypeName = TargetDeclaration.AsTypeName, - BackingField = TargetDeclaration.IdentifierName, - ParameterName = ParameterName, - GenerateSetter = SetSetterTypeCheckBox.Checked, - GenerateLetter = LetSetterTypeCheckBox.Checked - }; - - LetSetterTypeCheckBox.CheckedChanged += EncapsulateFieldDialog_SetterTypeChanged; - SetSetterTypeCheckBox.CheckedChanged += EncapsulateFieldDialog_SetterTypeChanged; - PropertyNameTextBox.TextChanged += PropertyNameBox_TextChanged; - ParameterNameTextBox.TextChanged += VariableNameBox_TextChanged; - - UpdatePreview(); - } - - private void PropertyNameBox_TextChanged(object sender, EventArgs e) - { - ValidatePropertyName(); - _previewGenerator.PropertyName = NewPropertyName; - UpdatePreview(); - } - - private void VariableNameBox_TextChanged(object sender, EventArgs e) - { - ValidateVariableName(); - _previewGenerator.ParameterName = ParameterName; - UpdatePreview(); - } - - private void UpdatePreview() - { - if (TargetDeclaration == null) - { - PreviewBox.Text = string.Empty; - } - var propertyTextLines = _previewGenerator.AllPropertyCode.Split(new[] { Environment.NewLine }, StringSplitOptions.None); - PreviewBox.Text = string.Join(Environment.NewLine, _indenter.Indent(propertyTextLines, true)); - } - - private void ValidatePropertyName() - { - InvalidPropertyNameIcon.Visible = ValidateName(NewPropertyName, ParameterName) || - _state.AllUserDeclarations.Where(a => a.ParentScope == TargetDeclaration.ParentScope) - .Any(a => a.IdentifierName.Equals(NewPropertyName, StringComparison.InvariantCultureIgnoreCase)); - - SetOkButtonEnabledState(); - } - - private void ValidateVariableName() - { - InvalidVariableNameIcon.Visible = ValidateName(ParameterName, NewPropertyName); - - SetOkButtonEnabledState(); - } - - private bool ValidateName(string changedName, string otherName) - { - var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); - - return TargetDeclaration == null - || changedName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) - || changedName.Equals(otherName, StringComparison.InvariantCultureIgnoreCase) - || !char.IsLetter(changedName.FirstOrDefault()) - || tokenValues.Contains(ParameterName, StringComparer.InvariantCultureIgnoreCase) - || changedName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); - } - - private void SetOkButtonEnabledState() - { - OkButton.Enabled = !InvalidPropertyNameIcon.Visible && !InvalidVariableNameIcon.Visible; - } - } -} diff --git a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs index af525e8aa2..b72f722a6c 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs +++ b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs @@ -2773,6 +2773,15 @@ public static string Passed { } } + /// + /// Looks up a localized string similar to Preview. + /// + public static string Preview { + get { + return ResourceManager.GetString("Preview", resourceCulture); + } + } + /// /// Looks up a localized string similar to Previous. /// diff --git a/RetailCoder.VBE/UI/RubberduckUI.resx b/RetailCoder.VBE/UI/RubberduckUI.resx index 04bc091307..7561e73ead 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.resx +++ b/RetailCoder.VBE/UI/RubberduckUI.resx @@ -2012,4 +2012,7 @@ Would you like to import them to Rubberduck? [expected] is a value type and [actual] is a reference type. + + Preview + \ No newline at end of file From e57e66585ddfeb4f4ea9547022a8e01e3d733fd7 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 20:25:35 -0500 Subject: [PATCH 09/20] New Encapsulate Field dialog --- .../QuickFixes/EncapsulateFieldQuickFix.cs | 4 +- .../EncapsulateFieldPresenter.cs | 38 +++++++------- .../EncapsulateFieldPresenterFactory.cs | 5 +- .../RefactorEncapsulateFieldCommand.cs | 6 +-- .../EncapsulateFieldDialog.Designer.cs | 13 +++-- .../EncapsulateFieldViewModel.cs | 51 ++++++++++++++----- 6 files changed, 73 insertions(+), 44 deletions(-) diff --git a/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs b/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs index b21000c6be..4f12145976 100644 --- a/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs +++ b/RetailCoder.VBE/Inspections/QuickFixes/EncapsulateFieldQuickFix.cs @@ -34,10 +34,10 @@ public override void Fix() using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { - /*var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view); + var factory = new EncapsulateFieldPresenterFactory(vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(vbe, _indenter, factory); refactoring.Refactor(_target); - IsCancelled = view.DialogResult != DialogResult.OK;*/ + IsCancelled = view.DialogResult != DialogResult.OK; } } diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs index c3691e3ff5..294ef8d303 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs @@ -4,6 +4,7 @@ using Rubberduck.Parsing; using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; +using Rubberduck.UI.Refactorings.EncapsulateField; namespace Rubberduck.Refactorings.EncapsulateField { @@ -14,10 +15,10 @@ public interface IEncapsulateFieldPresenter public class EncapsulateFieldPresenter : IEncapsulateFieldPresenter { - private readonly IEncapsulateFieldDialog _view; + private readonly EncapsulateFieldDialog _view; private readonly EncapsulateFieldModel _model; - public EncapsulateFieldPresenter(IEncapsulateFieldDialog view, EncapsulateFieldModel model) + public EncapsulateFieldPresenter(EncapsulateFieldDialog view, EncapsulateFieldModel model) { _view = view; _model = model; @@ -27,8 +28,8 @@ public EncapsulateFieldModel Show() { if (_model.TargetDeclaration == null) { return null; } - _view.TargetDeclaration = _model.TargetDeclaration; - _view.NewPropertyName = _model.TargetDeclaration.IdentifierName; + _view.ViewModel.TargetDeclaration = _model.TargetDeclaration; + _view.ViewModel.PropertyName = _model.TargetDeclaration.IdentifierName; var isVariant = _model.TargetDeclaration.AsTypeName.Equals(Tokens.Variant); var isValueType = !isVariant && (SymbolList.ValueTypes.Contains(_model.TargetDeclaration.AsTypeName) || @@ -46,50 +47,51 @@ public EncapsulateFieldModel Show() if (node is VBAParser.LetStmtContext) { - _view.CanImplementLetSetterType = true; + _view.ViewModel.CanHaveLet = true; } else { - _view.CanImplementSetSetterType = true; + _view.ViewModel.CanHaveSet = true; } } else if (isValueType) { - _view.CanImplementLetSetterType = true; + _view.ViewModel.CanHaveLet = true; } else { - _view.CanImplementSetSetterType = true; + _view.ViewModel.CanHaveSet = true; } } else { if (isValueType) { - _view.CanImplementLetSetterType = true; + _view.ViewModel.CanHaveLet = true; } else if (!isVariant) { - _view.CanImplementSetSetterType = true; + _view.ViewModel.CanHaveSet = true; } else { - _view.CanImplementLetSetterType = true; - _view.CanImplementSetSetterType = true; + _view.ViewModel.CanHaveLet = true; + _view.ViewModel.CanHaveSet = true; } } - if (_view.ShowDialog() != DialogResult.OK) + _view.ShowDialog(); + if (_view.DialogResult != DialogResult.OK) { return null; } - _model.PropertyName = _view.NewPropertyName; - _model.ImplementLetSetterType = _view.CanImplementLetSetterType; - _model.ImplementSetSetterType = _view.CanImplementSetSetterType; - _model.CanImplementLet = !_view.MustImplementSetSetterType; + _model.PropertyName = _view.ViewModel.PropertyName; + _model.ImplementLetSetterType = _view.ViewModel.CanHaveLet; + _model.ImplementSetSetterType = _view.ViewModel.CanHaveSet; + _model.CanImplementLet = _view.ViewModel.CanHaveSet && !_view.ViewModel.CanHaveSet; - _model.ParameterName = _view.ParameterName; + _model.ParameterName = _view.ViewModel.ParameterName; return _model; } } diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs index 8994c58fbb..21e4085bfd 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs @@ -1,4 +1,5 @@ using Rubberduck.Parsing.VBA; +using Rubberduck.UI.Refactorings.EncapsulateField; using Rubberduck.VBEditor.SafeComWrappers.Abstract; namespace Rubberduck.Refactorings.EncapsulateField @@ -6,10 +7,10 @@ namespace Rubberduck.Refactorings.EncapsulateField public class EncapsulateFieldPresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly IEncapsulateFieldDialog _view; + private readonly EncapsulateFieldDialog _view; private readonly RubberduckParserState _state; - public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, IEncapsulateFieldDialog view) + public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, EncapsulateFieldDialog view) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs index 4e22701f17..c1711b1f52 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs @@ -1,6 +1,7 @@ using System.Runtime.InteropServices; using Rubberduck.Parsing.Symbols; using Rubberduck.Parsing.VBA; +using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.SmartIndenter; using Rubberduck.Settings; using Rubberduck.UI.Refactorings.EncapsulateField; @@ -47,10 +48,9 @@ protected override void ExecuteImpl(object parameter) using (var view = new EncapsulateFieldDialog(new EncapsulateFieldViewModel(_state, _indenter))) { - /*var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); + var factory = new EncapsulateFieldPresenterFactory(Vbe, _state, view); var refactoring = new EncapsulateFieldRefactoring(Vbe, _indenter, factory); - refactoring.Refactor();*/ - view.ShowDialog(); + refactoring.Refactor(); } } diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs index f04f21d499..af723112d7 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.Designer.cs @@ -30,33 +30,32 @@ private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EncapsulateFieldDialog)); this.elementHost1 = new System.Windows.Forms.Integration.ElementHost(); - this.EncapsulateFieldViewElement = new EncapsulateFieldView(); + this.EncapsulateFieldViewElement = new Rubberduck.UI.Refactorings.EncapsulateField.EncapsulateFieldView(); this.SuspendLayout(); // // elementHost1 // this.elementHost1.Dock = System.Windows.Forms.DockStyle.Fill; this.elementHost1.Location = new System.Drawing.Point(0, 0); - this.elementHost1.Margin = new System.Windows.Forms.Padding(4); + this.elementHost1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5); this.elementHost1.Name = "elementHost1"; - this.elementHost1.Size = new System.Drawing.Size(494, 395); + this.elementHost1.Size = new System.Drawing.Size(667, 513); this.elementHost1.TabIndex = 1; this.elementHost1.Text = "elementHost1"; this.elementHost1.Child = this.EncapsulateFieldViewElement; // // EncapsulateFieldDialog // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(500, 405); + this.ClientSize = new System.Drawing.Size(667, 513); this.Controls.Add(this.elementHost1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); + this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); this.Name = "EncapsulateFieldDialog"; this.ShowInTaskbar = false; this.Text = "Rubberduck - Encapsulate Field"; this.ResumeLayout(false); - this.PerformLayout(); } diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs index 11f92ce228..e89426a41a 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs @@ -5,6 +5,7 @@ using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; using Rubberduck.Parsing.VBA; +using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.SmartIndenter; using Rubberduck.UI.Command; @@ -59,6 +60,7 @@ public bool IsLetSelected { _isLetSelected = value; OnPropertyChanged(); + OnPropertyChanged(nameof(PropertyPreview)); } } @@ -70,6 +72,7 @@ public bool IsSetSelected { _isSetSelected = value; OnPropertyChanged(); + OnPropertyChanged(nameof(PropertyPreview)); } } @@ -82,11 +85,12 @@ public string PropertyName _propertyName = value; OnPropertyChanged(); OnPropertyChanged(nameof(IsValidPropertyName)); + OnPropertyChanged(nameof(HasValidNames)); OnPropertyChanged(nameof(PropertyPreview)); } } - private string _parameterName; + private string _parameterName = "value"; public string ParameterName { get { return _parameterName; } @@ -95,6 +99,7 @@ public string ParameterName _parameterName = value; OnPropertyChanged(); OnPropertyChanged(nameof(IsValidParameterName)); + OnPropertyChanged(nameof(HasValidNames)); OnPropertyChanged(nameof(PropertyPreview)); } } @@ -106,11 +111,11 @@ public bool IsValidPropertyName var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); return TargetDeclaration != null - && ParameterName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) - && ParameterName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase) - && !char.IsLetter(ParameterName.FirstOrDefault()) - && tokenValues.Contains(ParameterName, StringComparer.InvariantCultureIgnoreCase) - && ParameterName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); + && !PropertyName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) + && !PropertyName.Equals(ParameterName, StringComparison.InvariantCultureIgnoreCase) + && char.IsLetter(PropertyName.FirstOrDefault()) + && !tokenValues.Contains(PropertyName, StringComparer.InvariantCultureIgnoreCase) + && PropertyName.All(c => char.IsLetterOrDigit(c) || c == '_'); } } @@ -121,17 +126,39 @@ public bool IsValidParameterName var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); return TargetDeclaration != null - && PropertyName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) - && PropertyName.Equals(ParameterName, StringComparison.InvariantCultureIgnoreCase) - && !char.IsLetter(PropertyName.FirstOrDefault()) - && tokenValues.Contains(PropertyName, StringComparer.InvariantCultureIgnoreCase) - && PropertyName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); + && !ParameterName.Equals(TargetDeclaration.IdentifierName, StringComparison.InvariantCultureIgnoreCase) + && !ParameterName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase) + && char.IsLetter(ParameterName.FirstOrDefault()) + && !tokenValues.Contains(ParameterName, StringComparer.InvariantCultureIgnoreCase) + && ParameterName.All(c => char.IsLetterOrDigit(c) || c == '_'); } } public bool HasValidNames => IsValidPropertyName && IsValidParameterName; - public string PropertyPreview => string.Empty; + public string PropertyPreview + { + get + { + if (TargetDeclaration == null) + { + return string.Empty; + } + + var previewGenerator = new PropertyGenerator + { + PropertyName = PropertyName, + AsTypeName = TargetDeclaration.AsTypeName, + BackingField = TargetDeclaration.IdentifierName, + ParameterName = ParameterName, + GenerateSetter = IsSetSelected, + GenerateLetter = IsLetSelected + }; + + var propertyText = previewGenerator.AllPropertyCode.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + return string.Join(Environment.NewLine, Indenter.Indent(propertyText, true)); + } + } public event EventHandler OnWindowClosed; private void DialogCancel() => OnWindowClosed?.Invoke(this, DialogResult.Cancel); From 1aba356ea670c589ad4be331831cdbfc1e782940 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 20:28:49 -0500 Subject: [PATCH 10/20] Remove a couple UI tests --- .../Refactoring/EncapsulateFieldTests.cs | 496 ------------------ 1 file changed, 496 deletions(-) diff --git a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs index 607c0635d0..9e43971e5e 100644 --- a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs +++ b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs @@ -1,9 +1,6 @@ -using System.Threading; -using System.Windows.Forms; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Rubberduck.Common; -using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings; using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.VBEditor; @@ -784,7 +781,6 @@ public void EncapsulateField_ModelIsNull() IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); @@ -858,498 +854,6 @@ Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String) Assert.AreEqual(null, presenter.Show()); } - [TestMethod] - public void Presenter_Accept_ReturnsModelWithParameterNameChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - view.SetupProperty(v => v.ParameterName, "myVal"); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual("myVal", presenter.Show().ParameterName); - } - - [TestMethod] - public void Presenter_Reject_ReturnsNull() - { - //Input - const string inputCode = -@"Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String) -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual(null, presenter.Show()); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithPropertyNameChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.Setup(v => v.NewPropertyName).Returns("MyProperty"); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual("MyProperty", presenter.Show().PropertyName); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithCanImplementLetChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementLetSetterType, true); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual(true, presenter.Show().CanImplementLet); - } - - //NOTE: The tests below are commented out pending some sort of refactoring that enables them - //to actually *test* something. Currently, all of the behavior the tests are looking for is - //being mocked. - - /* - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementLetSetterType, true); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual(true, presenter.Show().ImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementSetSetterType, true); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual(true, presenter.Show().ImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForPrimitiveTypes_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Boolean"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementLetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.CanImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetNotAllowedForPrimitiveTypes_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Boolean"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementSetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(false, view.Object.CanImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForNonVariantNonPrimitiveTypes_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Icon"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementSetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.CanImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetNotAllowedForNonVariantNonPrimitiveType_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Icon"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementLetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(false, view.Object.CanImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForVariant_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementLetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.CanImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForVariant_NoReferences() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementSetSetterType, true); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.CanImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForPrimitiveTypes_References() - { - //Input - const string inputCode = -@"Private fizz As Boolean -Sub foo() - fizz = True -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementLetSetterType, false); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.MustImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForNonVariantNonPrimitiveTypes_References() - { - //Input - const string inputCode = -@"Private fizz As Class1 -Sub foo() - Set fizz = New Class1 -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementSetSetterType, false); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.MustImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForNonSetVariant_References() - { - //Input - const string inputCode = -@"Private fizz As Variant -Sub Foo() - fizz = True -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementLetSetterType, false); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.MustImplementLetSetterType); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForSetVariant_References() - { - //Input - const string inputCode = -@"Private fizz As Variant -Sub foo() - Set fizz = New Class1 -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.SetupProperty(v => v.MustImplementSetSetterType, false); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - factory.Create().Show(); - - Assert.AreEqual(true, view.Object.MustImplementSetSetterType); - } - - - [TestMethod] - public void Presenter_Accept_DefaultCreateGetOnly_PrimitiveType_NoReference() - { - //Input - const string inputCode = -@"Private fizz As Date"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - var model = factory.Create().Show(); - - Assert.AreEqual(false, model.ImplementLetSetterType); - Assert.AreEqual(false, model.ImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_DefaultCreateGetOnly_NonPrimitiveTypeNonVariant_NoReference() - { - //Input - const string inputCode = -@"Private fizz As Icon"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - var model = factory.Create().Show(); - - Assert.AreEqual(false, model.ImplementLetSetterType); - Assert.AreEqual(false, model.ImplementSetSetterType); - } - - [TestMethod] - public void Presenter_Accept_DefaultCreateGetOnly_Variant_NoReference() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - var builder = new MockVbeBuilder(); - IVBComponent component; - var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); - var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); - - parser.Parse(new CancellationTokenSource()); - if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - var model = factory.Create().Show(); - - Assert.AreEqual(false, model.ImplementLetSetterType); - Assert.AreEqual(false, model.ImplementSetSetterType); - } - */ #region setup private static Mock> SetupFactory(EncapsulateFieldModel model) { From 90462bd7cff6d5c576546cefdc72487741076828 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 20:51:30 -0500 Subject: [PATCH 11/20] Add field to preview --- .../EncapsulateField/EncapsulateFieldViewModel.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs index e89426a41a..6084103053 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs @@ -155,7 +155,9 @@ public string PropertyPreview GenerateLetter = IsLetSelected }; - var propertyText = previewGenerator.AllPropertyCode.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + var field = $"{Tokens.Private} {TargetDeclaration.IdentifierName} {Tokens.As} {TargetDeclaration.AsTypeName}{Environment.NewLine}{Environment.NewLine}"; + + var propertyText = previewGenerator.AllPropertyCode.Insert(0, field).Split(new[] { Environment.NewLine }, StringSplitOptions.None); return string.Join(Environment.NewLine, Indenter.Indent(propertyText, true)); } } From bd5ee3e384b702018779d89bf19118b3c219bc35 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 21:11:56 -0500 Subject: [PATCH 12/20] Resize window when pane is collapsed --- .../EncapsulateField/EncapsulateFieldDialog.cs | 6 ++++++ .../EncapsulateField/EncapsulateFieldView.xaml | 2 +- .../EncapsulateField/EncapsulateFieldViewModel.cs | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs index 8e514ae6be..87593b9ab6 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs @@ -17,6 +17,12 @@ public EncapsulateFieldDialog(EncapsulateFieldViewModel vm) : this() ViewModel = vm; EncapsulateFieldViewElement.DataContext = vm; vm.OnWindowClosed += ViewModel_OnWindowClosed; + vm.ExpansionStateChanged += Vm_ExpansionStateChanged; + } + + private void Vm_ExpansionStateChanged(object sender, bool isExpanded) + { + Height = isExpanded ? 560 : 305; } void ViewModel_OnWindowClosed(object sender, DialogResult result) diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml index 86947e9513..3df1e1ea5d 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldView.xaml @@ -103,7 +103,7 @@ diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs index 6084103053..d6ecfff864 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs @@ -30,6 +30,18 @@ public EncapsulateFieldViewModel(RubberduckParserState state, IIndenter indenter CanHaveLet = true; } + private bool _expansionState = true; + public bool ExpansionState + { + get { return _expansionState; } + set + { + _expansionState = value; + OnPropertyChanged(); + OnExpansionStateChanged(value); + } + } + private bool _canHaveLet; public bool CanHaveLet { @@ -166,6 +178,9 @@ public string PropertyPreview private void DialogCancel() => OnWindowClosed?.Invoke(this, DialogResult.Cancel); private void DialogOk() => OnWindowClosed?.Invoke(this, DialogResult.OK); + public event EventHandler ExpansionStateChanged; + private void OnExpansionStateChanged(bool value) => ExpansionStateChanged?.Invoke(this, value); + public CommandBase OkButtonCommand { get; } public CommandBase CancelButtonCommand { get; } } From cf20f00b7c7fe6f197a0363fb2975346e584ed39 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 22:42:55 -0500 Subject: [PATCH 13/20] Make dialog implement interface --- .../EncapsulateFieldPresenter.cs | 40 +++++++++++-------- .../EncapsulateFieldPresenterFactory.cs | 5 ++- RetailCoder.VBE/Rubberduck.csproj | 1 + .../EncapsulateFieldDialog.cs | 2 +- .../UI/Refactorings/IRefactoringDialog.cs | 12 ++++++ 5 files changed, 40 insertions(+), 20 deletions(-) create mode 100644 RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs index 294ef8d303..afa002ed1f 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs @@ -4,6 +4,7 @@ using Rubberduck.Parsing; using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.EncapsulateField; namespace Rubberduck.Refactorings.EncapsulateField @@ -15,10 +16,10 @@ public interface IEncapsulateFieldPresenter public class EncapsulateFieldPresenter : IEncapsulateFieldPresenter { - private readonly EncapsulateFieldDialog _view; + private readonly IRefactoringDialog _view; private readonly EncapsulateFieldModel _model; - public EncapsulateFieldPresenter(EncapsulateFieldDialog view, EncapsulateFieldModel model) + public EncapsulateFieldPresenter(IRefactoringDialog view, EncapsulateFieldModel model) { _view = view; _model = model; @@ -35,6 +36,25 @@ public EncapsulateFieldModel Show() var isValueType = !isVariant && (SymbolList.ValueTypes.Contains(_model.TargetDeclaration.AsTypeName) || _model.TargetDeclaration.DeclarationType == DeclarationType.Enumeration); + AssignSetterAndLetterAvailability(isVariant, isValueType); + + _view.ShowDialog(); + if (_view.DialogResult != DialogResult.OK) + { + return null; + } + + _model.PropertyName = _view.ViewModel.PropertyName; + _model.ImplementLetSetterType = _view.ViewModel.CanHaveLet; + _model.ImplementSetSetterType = _view.ViewModel.CanHaveSet; + _model.CanImplementLet = _view.ViewModel.CanHaveSet && !_view.ViewModel.CanHaveSet; + + _model.ParameterName = _view.ViewModel.ParameterName; + return _model; + } + + private void AssignSetterAndLetterAvailability(bool isVariant, bool isValueType) + { if (_model.TargetDeclaration.References.Any(r => r.IsAssignment)) { if (isVariant) @@ -52,7 +72,7 @@ public EncapsulateFieldModel Show() else { _view.ViewModel.CanHaveSet = true; - } + } } else if (isValueType) { @@ -79,20 +99,6 @@ public EncapsulateFieldModel Show() _view.ViewModel.CanHaveSet = true; } } - - _view.ShowDialog(); - if (_view.DialogResult != DialogResult.OK) - { - return null; - } - - _model.PropertyName = _view.ViewModel.PropertyName; - _model.ImplementLetSetterType = _view.ViewModel.CanHaveLet; - _model.ImplementSetSetterType = _view.ViewModel.CanHaveSet; - _model.CanImplementLet = _view.ViewModel.CanHaveSet && !_view.ViewModel.CanHaveSet; - - _model.ParameterName = _view.ViewModel.ParameterName; - return _model; } } } diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs index 21e4085bfd..33fe592ad0 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenterFactory.cs @@ -1,4 +1,5 @@ using Rubberduck.Parsing.VBA; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.EncapsulateField; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -7,10 +8,10 @@ namespace Rubberduck.Refactorings.EncapsulateField public class EncapsulateFieldPresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly EncapsulateFieldDialog _view; + private readonly IRefactoringDialog _view; private readonly RubberduckParserState _state; - public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, EncapsulateFieldDialog view) + public EncapsulateFieldPresenterFactory(IVBE vbe, RubberduckParserState state, IRefactoringDialog view) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 10d2e03d04..ab9ec3a3be 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -483,6 +483,7 @@ + RemoveParametersView.xaml diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs index 87593b9ab6..3f63351fb6 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldDialog.cs @@ -2,7 +2,7 @@ namespace Rubberduck.UI.Refactorings.EncapsulateField { - public partial class EncapsulateFieldDialog : Form + public partial class EncapsulateFieldDialog : Form, IRefactoringDialog { public EncapsulateFieldViewModel ViewModel { get; } diff --git a/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs b/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs new file mode 100644 index 0000000000..29b5c5246f --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs @@ -0,0 +1,12 @@ +using System.Windows.Forms; + +namespace Rubberduck.UI.Refactorings +{ + public interface IRefactoringDialog + { + T ViewModel { get; } + DialogResult DialogResult { get; } + + DialogResult ShowDialog(); + } +} \ No newline at end of file From 641c99d51e5d8297b0f95ce7552a1c71b4995e8f Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 22:43:03 -0500 Subject: [PATCH 14/20] Revert "Remove a couple UI tests" This reverts commit 1aba356ea670c589ad4be331831cdbfc1e782940. --- .../Refactoring/EncapsulateFieldTests.cs | 496 ++++++++++++++++++ 1 file changed, 496 insertions(+) diff --git a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs index 9e43971e5e..607c0635d0 100644 --- a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs +++ b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs @@ -1,6 +1,9 @@ +using System.Threading; +using System.Windows.Forms; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Rubberduck.Common; +using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings; using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.VBEditor; @@ -781,6 +784,7 @@ public void EncapsulateField_ModelIsNull() IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); + var state = MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); @@ -854,6 +858,498 @@ Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String) Assert.AreEqual(null, presenter.Show()); } + [TestMethod] + public void Presenter_Accept_ReturnsModelWithParameterNameChanged() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + IVBComponent component; + var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); + var state = MockParser.CreateAndParse(vbe.Object); + + var view = new Mock(); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + view.SetupProperty(v => v.ParameterName, "myVal"); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual("myVal", presenter.Show().ParameterName); + } + + [TestMethod] + public void Presenter_Reject_ReturnsNull() + { + //Input + const string inputCode = +@"Private Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String) +End Sub"; + var selection = new Selection(1, 15, 1, 15); + + IVBComponent component; + var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); + var state = MockParser.CreateAndParse(vbe.Object); + + var view = new Mock(); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual(null, presenter.Show()); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithPropertyNameChanged() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + IVBComponent component; + var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); + var state = MockParser.CreateAndParse(vbe.Object); + + var view = new Mock(); + view.Setup(v => v.NewPropertyName).Returns("MyProperty"); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual("MyProperty", presenter.Show().PropertyName); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithCanImplementLetChanged() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + IVBComponent component; + var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); + var state = MockParser.CreateAndParse(vbe.Object); + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementLetSetterType, true); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual(true, presenter.Show().CanImplementLet); + } + + //NOTE: The tests below are commented out pending some sort of refactoring that enables them + //to actually *test* something. Currently, all of the behavior the tests are looking for is + //being mocked. + + /* + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetChanged() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementLetSetterType, true); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual(true, presenter.Show().ImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetChanged() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementSetSetterType, true); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + + var presenter = factory.Create(); + + Assert.AreEqual(true, presenter.Show().ImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForPrimitiveTypes_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Boolean"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementLetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.CanImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetNotAllowedForPrimitiveTypes_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Boolean"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementSetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(false, view.Object.CanImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForNonVariantNonPrimitiveTypes_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Icon"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementSetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.CanImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetNotAllowedForNonVariantNonPrimitiveType_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Icon"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementLetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(false, view.Object.CanImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetAllowedForVariant_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementLetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.CanImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetAllowedForVariant_NoReferences() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.CanImplementSetSetterType, true); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.CanImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForPrimitiveTypes_References() + { + //Input + const string inputCode = +@"Private fizz As Boolean +Sub foo() + fizz = True +End Sub"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementLetSetterType, false); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.MustImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForNonVariantNonPrimitiveTypes_References() + { + //Input + const string inputCode = +@"Private fizz As Class1 +Sub foo() + Set fizz = New Class1 +End Sub"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementSetSetterType, false); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.MustImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementLetRequiredForNonSetVariant_References() + { + //Input + const string inputCode = +@"Private fizz As Variant +Sub Foo() + fizz = True +End Sub"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementLetSetterType, false); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.MustImplementLetSetterType); + } + + [TestMethod] + public void Presenter_Accept_ReturnsModelWithImplementSetRequiredForSetVariant_References() + { + //Input + const string inputCode = +@"Private fizz As Variant +Sub foo() + Set fizz = New Class1 +End Sub"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.SetupProperty(v => v.MustImplementSetSetterType, false); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + factory.Create().Show(); + + Assert.AreEqual(true, view.Object.MustImplementSetSetterType); + } + + + [TestMethod] + public void Presenter_Accept_DefaultCreateGetOnly_PrimitiveType_NoReference() + { + //Input + const string inputCode = +@"Private fizz As Date"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + var model = factory.Create().Show(); + + Assert.AreEqual(false, model.ImplementLetSetterType); + Assert.AreEqual(false, model.ImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_DefaultCreateGetOnly_NonPrimitiveTypeNonVariant_NoReference() + { + //Input + const string inputCode = +@"Private fizz As Icon"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + var model = factory.Create().Show(); + + Assert.AreEqual(false, model.ImplementLetSetterType); + Assert.AreEqual(false, model.ImplementSetSetterType); + } + + [TestMethod] + public void Presenter_Accept_DefaultCreateGetOnly_Variant_NoReference() + { + //Input + const string inputCode = +@"Private fizz As Variant"; + var selection = new Selection(1, 15, 1, 15); + + var builder = new MockVbeBuilder(); + IVBComponent component; + var vbe = builder.BuildFromSingleStandardModule(inputCode, out component, selection); + var parser = MockParser.Create(vbe.Object, new RubberduckParserState(vbe.Object)); + + parser.Parse(new CancellationTokenSource()); + if (state.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } + + var view = new Mock(); + view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); + + var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); + var model = factory.Create().Show(); + + Assert.AreEqual(false, model.ImplementLetSetterType); + Assert.AreEqual(false, model.ImplementSetSetterType); + } + */ #region setup private static Mock> SetupFactory(EncapsulateFieldModel model) { From 972c864f9e139504d9223d425aa82ff381195736 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 22:59:17 -0500 Subject: [PATCH 15/20] Remove a couple tests relying on the mocking behavior --- .../EncapsulateFieldPresenter.cs | 1 - .../EncapsulateFieldViewModel.cs | 13 +++- .../Refactoring/EncapsulateFieldTests.cs | 62 +++---------------- 3 files changed, 19 insertions(+), 57 deletions(-) diff --git a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs index afa002ed1f..bfaa005f19 100644 --- a/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs +++ b/RetailCoder.VBE/Refactorings/EncapsulateField/EncapsulateFieldPresenter.cs @@ -30,7 +30,6 @@ public EncapsulateFieldModel Show() if (_model.TargetDeclaration == null) { return null; } _view.ViewModel.TargetDeclaration = _model.TargetDeclaration; - _view.ViewModel.PropertyName = _model.TargetDeclaration.IdentifierName; var isVariant = _model.TargetDeclaration.AsTypeName.Equals(Tokens.Variant); var isValueType = !isVariant && (SymbolList.ValueTypes.Contains(_model.TargetDeclaration.AsTypeName) || diff --git a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs index d6ecfff864..74c4955128 100644 --- a/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs +++ b/RetailCoder.VBE/UI/Refactorings/EncapsulateField/EncapsulateFieldViewModel.cs @@ -16,8 +16,6 @@ public class EncapsulateFieldViewModel : ViewModelBase public RubberduckParserState State { get; } public IIndenter Indenter { get; } - public Declaration TargetDeclaration { get; set; } - public EncapsulateFieldViewModel(RubberduckParserState state, IIndenter indenter) { State = state; @@ -30,6 +28,17 @@ public EncapsulateFieldViewModel(RubberduckParserState state, IIndenter indenter CanHaveLet = true; } + private Declaration _targetDeclaration; + public Declaration TargetDeclaration + { + get { return _targetDeclaration; } + set + { + _targetDeclaration = value; + PropertyName = value.IdentifierName; + } + } + private bool _expansionState = true; public bool ExpansionState { diff --git a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs index 607c0635d0..477f2eeea2 100644 --- a/RubberduckTests/Refactoring/EncapsulateFieldTests.cs +++ b/RubberduckTests/Refactoring/EncapsulateFieldTests.cs @@ -1,14 +1,14 @@ -using System.Threading; using System.Windows.Forms; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Rubberduck.Common; -using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings; using Rubberduck.Refactorings.EncapsulateField; using Rubberduck.VBEditor; using RubberduckTests.Mocks; using Rubberduck.SmartIndenter; +using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.EncapsulateField; using Rubberduck.VBEditor.SafeComWrappers; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -784,7 +784,7 @@ public void EncapsulateField_ModelIsNull() IVBComponent component; var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); + MockParser.CreateAndParse(vbe.Object); var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); @@ -870,9 +870,9 @@ public void Presenter_Accept_ReturnsModelWithParameterNameChanged() var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - view.SetupProperty(v => v.ParameterName, "myVal"); + var view = new Mock>(); + view.Setup(v => v.DialogResult).Returns(DialogResult.OK); + view.SetupGet(v => v.ViewModel).Returns(new EncapsulateFieldViewModel(state, null) {ParameterName = "myVal"}); var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); @@ -894,8 +894,8 @@ public void Presenter_Reject_ReturnsNull() var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); var state = MockParser.CreateAndParse(vbe.Object); - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel); + var view = new Mock>(); + view.Setup(v => v.DialogResult).Returns(DialogResult.Cancel); var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); @@ -904,52 +904,6 @@ public void Presenter_Reject_ReturnsNull() Assert.AreEqual(null, presenter.Show()); } - [TestMethod] - public void Presenter_Accept_ReturnsModelWithPropertyNameChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.Setup(v => v.NewPropertyName).Returns("MyProperty"); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual("MyProperty", presenter.Show().PropertyName); - } - - [TestMethod] - public void Presenter_Accept_ReturnsModelWithCanImplementLetChanged() - { - //Input - const string inputCode = -@"Private fizz As Variant"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var view = new Mock(); - view.SetupProperty(v => v.CanImplementLetSetterType, true); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - - var factory = new EncapsulateFieldPresenterFactory(vbe.Object, state, view.Object); - - var presenter = factory.Create(); - - Assert.AreEqual(true, presenter.Show().CanImplementLet); - } - //NOTE: The tests below are commented out pending some sort of refactoring that enables them //to actually *test* something. Currently, all of the behavior the tests are looking for is //being mocked. From 9564bc6d0a00611c0236b5bd5415645864ef73a5 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 23:08:39 -0500 Subject: [PATCH 16/20] Make other replaced dialogs implement new interface --- .../RemoveParameters/RemoveParametersPresenter.cs | 5 +++-- .../RemoveParameters/RemoveParametersPresenterFactory.cs | 5 +++-- RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs | 5 +++-- .../Refactorings/Rename/RenamePresenterFactory.cs | 5 +++-- .../ReorderParameters/ReorderParametersPresenter.cs | 5 +++-- .../ReorderParameters/ReorderParametersPresenterFactory.cs | 5 +++-- RetailCoder.VBE/UI/CodeExplorer/Commands/RenameCommand.cs | 5 +++-- RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs | 5 +++-- .../Refactorings/RemoveParameters/RemoveParametersDialog.cs | 2 +- RetailCoder.VBE/UI/Refactorings/Rename/RenameDialog.cs | 2 +- .../ReorderParameters/ReorderParametersDialog.cs | 2 +- 11 files changed, 27 insertions(+), 19 deletions(-) diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs index a50e4fb62a..1c352db873 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenter.cs @@ -1,5 +1,6 @@ using System.Windows.Forms; using Rubberduck.UI; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.RemoveParameters; namespace Rubberduck.Refactorings.RemoveParameters @@ -11,11 +12,11 @@ public interface IRemoveParametersPresenter public class RemoveParametersPresenter : IRemoveParametersPresenter { - private readonly RemoveParametersDialog _view; + private readonly IRefactoringDialog _view; private readonly RemoveParametersModel _model; private readonly IMessageBox _messageBox; - public RemoveParametersPresenter(RemoveParametersDialog view, RemoveParametersModel model, IMessageBox messageBox) + public RemoveParametersPresenter(IRefactoringDialog view, RemoveParametersModel model, IMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs index 1a815ad7f8..10a1578d92 100644 --- a/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersPresenterFactory.cs @@ -1,5 +1,6 @@ using Rubberduck.Parsing.VBA; using Rubberduck.UI; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.RemoveParameters; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -8,11 +9,11 @@ namespace Rubberduck.Refactorings.RemoveParameters public class RemoveParametersPresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly RemoveParametersDialog _view; + private readonly IRefactoringDialog _view; private readonly RubberduckParserState _state; private readonly IMessageBox _messageBox; - public RemoveParametersPresenterFactory(IVBE vbe, RemoveParametersDialog view, + public RemoveParametersPresenterFactory(IVBE vbe, IRefactoringDialog view, RubberduckParserState state, IMessageBox messageBox) { _vbe = vbe; diff --git a/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs b/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs index 320ead50a8..b52ff20a29 100644 --- a/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs +++ b/RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs @@ -1,5 +1,6 @@ using System.Windows.Forms; using Rubberduck.Parsing.Symbols; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.Rename; namespace Rubberduck.Refactorings.Rename @@ -12,10 +13,10 @@ public interface IRenamePresenter public class RenamePresenter : IRenamePresenter { - private readonly RenameDialog _view; + private readonly IRefactoringDialog _view; private readonly RenameModel _model; - public RenamePresenter(RenameDialog view, RenameModel model) + public RenamePresenter(IRefactoringDialog view, RenameModel model) { _view = view; diff --git a/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs b/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs index 52496aeccc..3f734845a8 100644 --- a/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs @@ -1,5 +1,6 @@ using Rubberduck.Parsing.VBA; using Rubberduck.UI; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.Rename; using Rubberduck.VBEditor; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -9,11 +10,11 @@ namespace Rubberduck.Refactorings.Rename public class RenamePresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly RenameDialog _view; + private readonly IRefactoringDialog _view; private readonly RubberduckParserState _state; private readonly IMessageBox _messageBox; - public RenamePresenterFactory(IVBE vbe, RenameDialog view, RubberduckParserState state, IMessageBox messageBox) + public RenamePresenterFactory(IVBE vbe, IRefactoringDialog view, RubberduckParserState state, IMessageBox messageBox) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs index ccef47dad6..4d6826254b 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenter.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Windows.Forms; using Rubberduck.UI; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.ReorderParameters; namespace Rubberduck.Refactorings.ReorderParameters @@ -13,11 +14,11 @@ public interface IReorderParametersPresenter public class ReorderParametersPresenter : IReorderParametersPresenter { - private readonly ReorderParametersDialog _view; + private readonly IRefactoringDialog _view; private readonly ReorderParametersModel _model; private readonly IMessageBox _messageBox; - public ReorderParametersPresenter(ReorderParametersDialog view, ReorderParametersModel model, IMessageBox messageBox) + public ReorderParametersPresenter(IRefactoringDialog view, ReorderParametersModel model, IMessageBox messageBox) { _view = view; _model = model; diff --git a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs index 06774d2ee4..4b531460d1 100644 --- a/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersPresenterFactory.cs @@ -1,5 +1,6 @@ using Rubberduck.Parsing.VBA; using Rubberduck.UI; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.ReorderParameters; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -8,11 +9,11 @@ namespace Rubberduck.Refactorings.ReorderParameters public class ReorderParametersPresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly ReorderParametersDialog _view; + private readonly IRefactoringDialog _view; private readonly RubberduckParserState _state; private readonly IMessageBox _messageBox; - public ReorderParametersPresenterFactory(IVBE vbe, ReorderParametersDialog view, + public ReorderParametersPresenterFactory(IVBE vbe, IRefactoringDialog view, RubberduckParserState state, IMessageBox messageBox) { _vbe = vbe; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/RenameCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/RenameCommand.cs index 7e319ad3bc..bcd654132e 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/RenameCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/RenameCommand.cs @@ -4,6 +4,7 @@ using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings.Rename; using Rubberduck.UI.Command; +using Rubberduck.UI.Refactorings; using Rubberduck.UI.Refactorings.Rename; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -14,10 +15,10 @@ public class RenameCommand : CommandBase, IDisposable { private readonly IVBE _vbe; private readonly RubberduckParserState _state; - private readonly RenameDialog _view; + private readonly IRefactoringDialog _view; private readonly IMessageBox _msgBox; - public RenameCommand(IVBE vbe, RenameDialog view, RubberduckParserState state, IMessageBox msgBox) : base(LogManager.GetCurrentClassLogger()) + public RenameCommand(IVBE vbe, IRefactoringDialog view, RubberduckParserState state, IMessageBox msgBox) : base(LogManager.GetCurrentClassLogger()) { _vbe = vbe; _state = state; diff --git a/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs b/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs index 29b5c5246f..be2378dfc6 100644 --- a/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/IRefactoringDialog.cs @@ -1,8 +1,9 @@ -using System.Windows.Forms; +using System; +using System.Windows.Forms; namespace Rubberduck.UI.Refactorings { - public interface IRefactoringDialog + public interface IRefactoringDialog : IDisposable { T ViewModel { get; } DialogResult DialogResult { get; } diff --git a/RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersDialog.cs b/RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersDialog.cs index 9f12b3829f..a8d57fc026 100644 --- a/RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/RemoveParameters/RemoveParametersDialog.cs @@ -2,7 +2,7 @@ namespace Rubberduck.UI.Refactorings.RemoveParameters { - public partial class RemoveParametersDialog : Form + public partial class RemoveParametersDialog : Form, IRefactoringDialog { public RemoveParametersViewModel ViewModel { get; } diff --git a/RetailCoder.VBE/UI/Refactorings/Rename/RenameDialog.cs b/RetailCoder.VBE/UI/Refactorings/Rename/RenameDialog.cs index 8b0f8541c7..f78062922c 100644 --- a/RetailCoder.VBE/UI/Refactorings/Rename/RenameDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/Rename/RenameDialog.cs @@ -2,7 +2,7 @@ namespace Rubberduck.UI.Refactorings.Rename { - public partial class RenameDialog : Form + public partial class RenameDialog : Form, IRefactoringDialog { public RenameViewModel ViewModel { get; } diff --git a/RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersDialog.cs b/RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersDialog.cs index 81f7c3e212..4f55684406 100644 --- a/RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersDialog.cs +++ b/RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersDialog.cs @@ -2,7 +2,7 @@ namespace Rubberduck.UI.Refactorings.ReorderParameters { - public partial class ReorderParametersDialog : Form + public partial class ReorderParametersDialog : Form, IRefactoringDialog { public ReorderParametersViewModel ViewModel { get; } From 9bba100dfea8c8c7b9daf5a31e4c843b8e75d23c Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 15 Mar 2017 23:24:02 -0500 Subject: [PATCH 17/20] Fix binding issue --- RetailCoder.VBE/Root/RubberduckModule.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/RetailCoder.VBE/Root/RubberduckModule.cs b/RetailCoder.VBE/Root/RubberduckModule.cs index b353154d5c..ab39a87b60 100644 --- a/RetailCoder.VBE/Root/RubberduckModule.cs +++ b/RetailCoder.VBE/Root/RubberduckModule.cs @@ -38,6 +38,7 @@ using ReparseCommandMenuItem = Rubberduck.UI.Command.MenuItems.CommandBars.ReparseCommandMenuItem; using Rubberduck.UI.Refactorings; using Rubberduck.Inspections; +using Rubberduck.UI.Refactorings.Rename; namespace Rubberduck.Root { @@ -74,6 +75,7 @@ public override void Load() Bind().To().WhenInjectedExactlyInto(); BindCodeInspectionTypes(); + BindRefactoringDialogs(); var assemblies = new[] { @@ -157,6 +159,11 @@ public override void Load() } + private void BindRefactoringDialogs() + { + Bind>().To(); + } + private void BindDockableToolwindows() { Kernel.Bind(t => t.FromThisAssembly() From 2cf9c4f1f8023ac2dafc934a969aec88d09898c0 Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Thu, 16 Mar 2017 09:44:39 -0700 Subject: [PATCH 18/20] Removed Built-in declarations from names to avoid list to improve responsiveness --- Rubberduck.Parsing/Symbols/DeclarationFinder.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs index 3b7a6f3af0..6c9e9b4d24 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs @@ -843,11 +843,12 @@ private IEnumerable GetNameCollisionDeclarations(Declaration declar //Filter accessible declarations to those that would result in name collisions or hiding var declarationsToAvoid = GetAccessibleDeclarations(declaration).Where(candidate => - IsAccessibleInOtherProcedureModule(candidate,declaration) + !candidate.IsBuiltIn + && (IsAccessibleInOtherProcedureModule(candidate,declaration) || candidate.DeclarationType == DeclarationType.Project || ModuleDeclarationTypes.Contains(candidate.DeclarationType) || IsDeclarationInSameProcedureScope(candidate, declaration) - ).ToList(); + )).ToList(); //Add local variables when the target is a method or property if(MethodDeclarationTypes.Contains(declaration.DeclarationType)) From 53603697b8a301ba9126b650a2541b401d90bd36 Mon Sep 17 00:00:00 2001 From: Brian Zenger Date: Thu, 16 Mar 2017 13:53:41 -0700 Subject: [PATCH 19/20] Removed Option Explicit module options from test cases to avoid false failures after #2861 is fixed --- .../Symbols/DeclarationFinderTests.cs | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/RubberduckTests/Symbols/DeclarationFinderTests.cs b/RubberduckTests/Symbols/DeclarationFinderTests.cs index 24be6ec891..f2933aa1b9 100644 --- a/RubberduckTests/Symbols/DeclarationFinderTests.cs +++ b/RubberduckTests/Symbols/DeclarationFinderTests.cs @@ -26,7 +26,6 @@ public void DeclarationFinder_InProcedure_MethodDeclaration() { var expectedResults = new string[] { - "Option Explicit", "member1", "adder", "Foo" @@ -48,7 +47,6 @@ public void DeclarationFinder_InProcedure_LocalVariableReference() { var expectedResults = new string[] { - "Option Explicit", "member1", "Foo" }; @@ -68,7 +66,6 @@ public void DeclarationFinder_InProcedure_MemberDeclaration() { var expectedResults = new string[] { - "Option Explicit", "adder", "member1", "Foo" @@ -89,7 +86,6 @@ public void DeclarationFinder_ModuleScope() { var expectedResults = new string[] { - "Option Explicit", "adder", "Foo" }; @@ -133,7 +129,6 @@ public void DeclarationFinder_Module_To_ClassScope() { var expectedResults = new string[] { - "Option Explicit", "Foo2", "Bar", "member11" @@ -157,7 +152,6 @@ public void DeclarationFinder_PrivateSub_RespectPublicSubInOtherModule() { var expectedResults = new string[] { - "Option Explicit", "DoThis", "filename", "member1" @@ -181,7 +175,6 @@ public void DeclarationFinder_PrivateSub_MultipleReferences() { var expectedResults = new string[] { - "Option Explicit", "DoThis", "filename", "member1", @@ -211,7 +204,6 @@ public void DeclarationFinder_PrivateSub_WithBlock() { var expectedResults = new string[] { - "Option Explicit", "mFolderpath", "ExtractFilename", "SetFilename", @@ -238,7 +230,6 @@ public void DeclarationFinder_Module_To_ModuleScopeResolution() { var expectedResults = new string[] { - "Option Explicit", "Foo1", "Foo2", "Foo3", @@ -537,7 +528,6 @@ private string InProcedure_MethodDeclaration_moduleContent1() { return @" -Option Explicit Private member1 As Long @@ -554,7 +544,6 @@ private string InProcedure_LocalVariableReference_moduleContent1() { return @" -Option Explicit Private member1 As Long @@ -571,7 +560,6 @@ private string InProcedure_MemberDeclaration_moduleContent1() { return @" -Option Explicit Private member1 As Long @@ -588,7 +576,6 @@ private string ModuleScope_CFirstClassContent() { return @" -Option Explicit Private member1 As Long @@ -605,7 +592,6 @@ private string ModuleScope_moduleContent2() { return @" -Option Explicit Private member11 As Long Public member2 As Long @@ -647,7 +633,6 @@ private string Module_To_ClassScope_moduleContent1() { return @" -Option Explicit Private member11 As Long Public member2 As Long @@ -669,7 +654,6 @@ private string Module_To_ClassScope_CFirstClass() { return @" -Option Explicit Private member1 As Long @@ -686,7 +670,6 @@ private string PrivateSub_RespectPublicSubInOtherModule_moduleContent1() { return @" -Option Explicit Private Sub DoThis(filename As String) @@ -699,7 +682,6 @@ private string PrivateSub_RespectPublicSubInOtherModule_moduleContent2() { return @" -Option Explicit Private member1 As String @@ -713,7 +695,6 @@ private string PrivateSub_MultipleReferences_moduleContent1() { return @" -Option Explicit Private Sub DoThis(filename As String) @@ -726,7 +707,6 @@ private string PrivateSub_MultipleReferences_moduleContent2() { return @" -Option Explicit Private member1 As String @@ -740,7 +720,6 @@ private string PrivateSub_MultipleReferences_moduleContent3() { return @" -Option Explicit Private mFolderpath As String @@ -760,7 +739,6 @@ private string PrivateSub_WithBlock_CFileHelperContent() { return @" -Option Explicit Private mFolderpath As String @@ -783,7 +761,6 @@ private string PrivateSub_WithBlock_ModuleContent1() { return @" -Option Explicit Private myData As String Private mDupData As String @@ -809,7 +786,6 @@ private string Module_To_ModuleScopeResolution__moduleContent1() { return @" -Option Explicit Private member11 As Long Public member2 As Long @@ -828,7 +804,6 @@ private string Module_To_ModuleScopeResolution__moduleContent2() { return @" -Option Explicit Public Const gConstant As Long = 10 From 79ef63c9aec2caa0c647f6717bd3b3dd32786140 Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Thu, 16 Mar 2017 16:54:16 -0500 Subject: [PATCH 20/20] Replace Extract Interface dialog --- .../ExtractInterface/ExtractInterfaceModel.cs | 2 +- .../ExtractInterfacePresenter.cs | 20 +- .../ExtractInterfacePresenterFactory.cs | 6 +- .../IExtractInterfaceDialog.cs | 12 - .../ExtractInterface/InterfaceMember.cs | 35 ++- RetailCoder.VBE/Rubberduck.csproj | 15 +- RetailCoder.VBE/Rubberduck.csproj.DotSettings | 3 +- .../RefactorExtractInterfaceCommand.cs | 3 +- .../ExtractInterfaceDialog.Designer.cs | 68 +++++ .../ExtractInterfaceDialog.cs | 28 ++ .../ExtractInterfaceDialog.resx | 0 .../ExtractInterfaceView.xaml | 174 ++++++++++++ .../ExtractInterfaceView.xaml.cs | 28 ++ .../ExtractInterfaceViewModel.cs | 78 ++++++ .../ExtractInterfaceDialog.Designer.cs | 251 ------------------ .../UI/Refactorings/ExtractInterfaceDialog.cs | 127 --------- .../Refactoring/ExtractInterfaceTests.cs | 38 +-- 17 files changed, 435 insertions(+), 453 deletions(-) delete mode 100644 RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs create mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.Designer.cs create mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.cs rename RetailCoder.VBE/UI/Refactorings/{ => ExtractInterface}/ExtractInterfaceDialog.resx (100%) create mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml create mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml.cs create mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceViewModel.cs delete mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.Designer.cs delete mode 100644 RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.cs diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfaceModel.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfaceModel.cs index 31751df7c4..1d8994f7a7 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfaceModel.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfaceModel.cs @@ -54,7 +54,7 @@ public ExtractInterfaceModel(RubberduckParserState state, QualifiedSelection sel && MemberTypes.Contains(item.DeclarationType)) .OrderBy(o => o.Selection.StartLine) .ThenBy(t => t.Selection.StartColumn) - .Select(d => new InterfaceMember(d, declarations)) + .Select(d => new InterfaceMember(d)) .ToList(); } } diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs index c9438a955e..346499a887 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenter.cs @@ -1,5 +1,7 @@ using System.Linq; using System.Windows.Forms; +using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.ExtractInterface; namespace Rubberduck.Refactorings.ExtractInterface { @@ -10,10 +12,10 @@ public interface IExtractInterfacePresenter public class ExtractInterfacePresenter : IExtractInterfacePresenter { - private readonly IExtractInterfaceDialog _view; + private readonly IRefactoringDialog _view; private readonly ExtractInterfaceModel _model; - public ExtractInterfacePresenter(IExtractInterfaceDialog view, ExtractInterfaceModel model) + public ExtractInterfacePresenter(IRefactoringDialog view, ExtractInterfaceModel model) { _view = view; _model = model; @@ -26,18 +28,18 @@ public ExtractInterfaceModel Show() return null; } - _view.ComponentNames = - _model.TargetDeclaration.Project.VBComponents.Select(c => c.Name).ToList(); - _view.InterfaceName = _model.InterfaceName; - _view.Members = _model.Members; + _view.ViewModel.ComponentNames = _model.TargetDeclaration.Project.VBComponents.Select(c => c.Name).ToList(); + _view.ViewModel.InterfaceName = _model.InterfaceName; + _view.ViewModel.Members = _model.Members.ToList(); - if (_view.ShowDialog() != DialogResult.OK) + _view.ShowDialog(); + if (_view.DialogResult != DialogResult.OK) { return null; } - _model.InterfaceName = _view.InterfaceName; - _model.Members = _view.Members; + _model.InterfaceName = _view.ViewModel.InterfaceName; + _model.Members = _view.ViewModel.Members; return _model; } } diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs index d17b9c947a..bbb319e677 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/ExtractInterfacePresenterFactory.cs @@ -1,5 +1,7 @@ using System.Linq; using Rubberduck.Parsing.VBA; +using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.ExtractInterface; using Rubberduck.VBEditor.SafeComWrappers.Abstract; namespace Rubberduck.Refactorings.ExtractInterface @@ -7,10 +9,10 @@ namespace Rubberduck.Refactorings.ExtractInterface public class ExtractInterfacePresenterFactory : IRefactoringPresenterFactory { private readonly IVBE _vbe; - private readonly IExtractInterfaceDialog _view; + private readonly IRefactoringDialog _view; private readonly RubberduckParserState _state; - public ExtractInterfacePresenterFactory(IVBE vbe, RubberduckParserState state, IExtractInterfaceDialog view) + public ExtractInterfacePresenterFactory(IVBE vbe, RubberduckParserState state, IRefactoringDialog view) { _vbe = vbe; _view = view; diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs deleted file mode 100644 index dcfd58cd34..0000000000 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/IExtractInterfaceDialog.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Collections.Generic; -using Rubberduck.UI; - -namespace Rubberduck.Refactorings.ExtractInterface -{ - public interface IExtractInterfaceDialog : IDialogView - { - string InterfaceName { get; set; } - IEnumerable Members { get; set; } - List ComponentNames { get; set; } - } -} diff --git a/RetailCoder.VBE/Refactorings/ExtractInterface/InterfaceMember.cs b/RetailCoder.VBE/Refactorings/ExtractInterface/InterfaceMember.cs index 5527f6edd8..59ce72d64d 100644 --- a/RetailCoder.VBE/Refactorings/ExtractInterface/InterfaceMember.cs +++ b/RetailCoder.VBE/Refactorings/ExtractInterface/InterfaceMember.cs @@ -3,6 +3,7 @@ using System.Linq; using Rubberduck.Parsing.Grammar; using Rubberduck.Parsing.Symbols; +using Rubberduck.UI; namespace Rubberduck.Refactorings.ExtractInterface { @@ -18,15 +19,26 @@ public override string ToString() } } - public class InterfaceMember + public class InterfaceMember : ViewModelBase { - private Declaration Member { get; set; } - private IEnumerable MemberParams { get; set; } - private string Type { get; set; } + private Declaration Member { get; } + private IEnumerable MemberParams { get; } + private string Type { get; } private string MemberType { get; set; } - public bool IsSelected { get; set; } + private bool _isSelected; + public bool IsSelected + { + get { return _isSelected; } + set + { + _isSelected = value; + OnPropertyChanged(); + } + } + + public string Identifier { get; } public string FullMemberSignature { @@ -39,9 +51,10 @@ public string FullMemberSignature } } - public InterfaceMember(Declaration member, IEnumerable declarations) + public InterfaceMember(Declaration member) { Member = member; + Identifier = member.IdentifierName; Type = member.AsTypeName; GetMethodType(); @@ -109,13 +122,7 @@ private void GetMethodType() } } - public string Body - { - get - { - return "Public " + FullMemberSignature + Environment.NewLine + - "End " + MemberType.Split(' ').First() + Environment.NewLine; - } - } + public string Body => "Public " + FullMemberSignature + Environment.NewLine + + "End " + MemberType.Split(' ').First() + Environment.NewLine; } } diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index ab9ec3a3be..6f62156b06 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -481,6 +481,10 @@ EncapsulateFieldView.xaml + + ExtractInterfaceView.xaml + + @@ -589,7 +593,6 @@ - @@ -768,10 +771,10 @@ EncapsulateFieldDialog.cs - + Form - + ExtractInterfaceDialog.cs @@ -1111,7 +1114,7 @@ EncapsulateFieldDialog.cs - + ExtractInterfaceDialog.cs @@ -1498,6 +1501,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + MSBuild:Compile Designer diff --git a/RetailCoder.VBE/Rubberduck.csproj.DotSettings b/RetailCoder.VBE/Rubberduck.csproj.DotSettings index 73e96563f9..9d43df2230 100644 --- a/RetailCoder.VBE/Rubberduck.csproj.DotSettings +++ b/RetailCoder.VBE/Rubberduck.csproj.DotSettings @@ -1,2 +1,3 @@  - CSharp60 \ No newline at end of file + CSharp60 + True \ No newline at end of file diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs index ab486bac6b..088a91563d 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs @@ -5,6 +5,7 @@ using Rubberduck.Parsing.VBA; using Rubberduck.Refactorings.ExtractInterface; using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.ExtractInterface; using Rubberduck.VBEditor.SafeComWrappers.Abstract; namespace Rubberduck.UI.Command.Refactorings @@ -58,7 +59,7 @@ protected override void ExecuteImpl(object parameter) return; } - using (var view = new ExtractInterfaceDialog()) + using (var view = new ExtractInterfaceDialog(new ExtractInterfaceViewModel())) { var factory = new ExtractInterfacePresenterFactory(Vbe, _state, view); var refactoring = new ExtractInterfaceRefactoring(Vbe, _state, _messageBox, factory); diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.Designer.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.Designer.cs new file mode 100644 index 0000000000..e5dd06db73 --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.Designer.cs @@ -0,0 +1,68 @@ +namespace Rubberduck.UI.Refactorings.ExtractInterface +{ + partial class ExtractInterfaceDialog + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExtractInterfaceDialog)); + this.elementHost1 = new System.Windows.Forms.Integration.ElementHost(); + this.ExtractInterfaceViewElement = new Rubberduck.UI.Refactorings.ExtractInterface.ExtractInterfaceView(); + this.SuspendLayout(); + // + // elementHost1 + // + this.elementHost1.Dock = System.Windows.Forms.DockStyle.Fill; + this.elementHost1.Location = new System.Drawing.Point(0, 0); + this.elementHost1.Margin = new System.Windows.Forms.Padding(5, 5, 5, 5); + this.elementHost1.Name = "elementHost1"; + this.elementHost1.Size = new System.Drawing.Size(667, 513); + this.elementHost1.TabIndex = 1; + this.elementHost1.Text = "elementHost1"; + this.elementHost1.Child = this.ExtractInterfaceViewElement; + // + // ExtractInterfaceDialog + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(459, 339); + this.Controls.Add(this.elementHost1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "ExtractInterfaceDialog"; + this.ShowInTaskbar = false; + this.Text = "Rubberduck - Extract Interface"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Integration.ElementHost elementHost1; + private ExtractInterfaceView ExtractInterfaceViewElement; + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.cs new file mode 100644 index 0000000000..31dde7171a --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.cs @@ -0,0 +1,28 @@ +using System.Windows.Forms; + +namespace Rubberduck.UI.Refactorings.ExtractInterface +{ + public partial class ExtractInterfaceDialog : Form, IRefactoringDialog + { + public ExtractInterfaceViewModel ViewModel { get; } + + private ExtractInterfaceDialog() + { + InitializeComponent(); + Text = RubberduckUI.ExtractInterface_Caption; + } + + public ExtractInterfaceDialog(ExtractInterfaceViewModel vm) : this() + { + ViewModel = vm; + ExtractInterfaceViewElement.DataContext = vm; + vm.OnWindowClosed += ViewModel_OnWindowClosed; + } + + void ViewModel_OnWindowClosed(object sender, DialogResult result) + { + DialogResult = result; + Close(); + } + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.resx b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.resx similarity index 100% rename from RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.resx rename to RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceDialog.resx diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml new file mode 100644 index 0000000000..096d88fecd --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml.cs new file mode 100644 index 0000000000..f86b9f0c69 --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Rubberduck.UI.Refactorings.ExtractInterface +{ + /// + /// Interaction logic for ExtractInterfaceView.xaml + /// + public partial class ExtractInterfaceView : UserControl + { + public ExtractInterfaceView() + { + InitializeComponent(); + } + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceViewModel.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceViewModel.cs new file mode 100644 index 0000000000..a1f793ce2e --- /dev/null +++ b/RetailCoder.VBE/UI/Refactorings/ExtractInterface/ExtractInterfaceViewModel.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using NLog; +using Rubberduck.Parsing.Grammar; +using Rubberduck.Refactorings.ExtractInterface; +using Rubberduck.UI.Command; + +namespace Rubberduck.UI.Refactorings.ExtractInterface +{ + public class ExtractInterfaceViewModel : ViewModelBase + { + public ExtractInterfaceViewModel() + { + OkButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => DialogOk()); + CancelButtonCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => DialogCancel()); + SelectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(true)); + DeselectAllCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), _ => ToggleSelection(false)); + } + + private List _members; + public List Members + { + get { return _members; } + set + { + _members = value; + OnPropertyChanged(); + } + } + + public List ComponentNames { get; set; } + + private string _interfaceName; + public string InterfaceName + { + get { return _interfaceName; } + set + { + _interfaceName = value; + OnPropertyChanged(); + OnPropertyChanged(nameof(IsValidInterfaceName)); + } + } + + public bool IsValidInterfaceName + { + get + { + var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); + + return !ComponentNames.Contains(InterfaceName) + && InterfaceName.Length > 1 + && char.IsLetter(InterfaceName.FirstOrDefault()) + && !tokenValues.Contains(InterfaceName, StringComparer.InvariantCultureIgnoreCase) + && !InterfaceName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); + } + } + + public event EventHandler OnWindowClosed; + private void DialogCancel() => OnWindowClosed?.Invoke(this, DialogResult.Cancel); + private void DialogOk() => OnWindowClosed?.Invoke(this, DialogResult.OK); + + private void ToggleSelection(bool value) + { + foreach (var item in Members) + { + item.IsSelected = value; + } + } + + public CommandBase OkButtonCommand { get; } + public CommandBase CancelButtonCommand { get; } + public CommandBase SelectAllCommand { get; } + public CommandBase DeselectAllCommand { get; } + } +} diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.Designer.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.Designer.cs deleted file mode 100644 index d3b4e7b2b1..0000000000 --- a/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.Designer.cs +++ /dev/null @@ -1,251 +0,0 @@ -namespace Rubberduck.UI.Refactorings -{ - partial class ExtractInterfaceDialog - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ExtractInterfaceDialog)); - this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); - this.CancelDialogButton = new System.Windows.Forms.Button(); - this.OkButton = new System.Windows.Forms.Button(); - this.InvalidNameValidationIcon = new System.Windows.Forms.PictureBox(); - this.InterfaceNameBox = new System.Windows.Forms.TextBox(); - this.NameLabel = new System.Windows.Forms.Label(); - this.TitleLabel = new System.Windows.Forms.Label(); - this.InstructionsLabel = new System.Windows.Forms.Label(); - this.DescriptionPanel = new System.Windows.Forms.Panel(); - this.MembersGroupBox = new System.Windows.Forms.GroupBox(); - this.InterfaceMembersGridView = new System.Windows.Forms.DataGridView(); - this.DeselectAllButton = new System.Windows.Forms.Button(); - this.SelectAllButton = new System.Windows.Forms.Button(); - this.flowLayoutPanel2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.InvalidNameValidationIcon)).BeginInit(); - this.DescriptionPanel.SuspendLayout(); - this.MembersGroupBox.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.InterfaceMembersGridView)).BeginInit(); - this.SuspendLayout(); - // - // flowLayoutPanel2 - // - this.flowLayoutPanel2.BackColor = System.Drawing.SystemColors.ControlDark; - this.flowLayoutPanel2.Controls.Add(this.CancelDialogButton); - this.flowLayoutPanel2.Controls.Add(this.OkButton); - this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Bottom; - this.flowLayoutPanel2.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; - this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 296); - this.flowLayoutPanel2.Name = "flowLayoutPanel2"; - this.flowLayoutPanel2.Padding = new System.Windows.Forms.Padding(8, 8, 0, 8); - this.flowLayoutPanel2.Size = new System.Drawing.Size(459, 43); - this.flowLayoutPanel2.TabIndex = 28; - // - // CancelDialogButton - // - this.CancelDialogButton.BackColor = System.Drawing.SystemColors.ButtonFace; - this.CancelDialogButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.CancelDialogButton.Location = new System.Drawing.Point(373, 11); - this.CancelDialogButton.Name = "CancelDialogButton"; - this.CancelDialogButton.Size = new System.Drawing.Size(75, 23); - this.CancelDialogButton.TabIndex = 5; - this.CancelDialogButton.Text = "Cancel"; - this.CancelDialogButton.UseVisualStyleBackColor = false; - // - // OkButton - // - this.OkButton.BackColor = System.Drawing.SystemColors.ButtonFace; - this.OkButton.DialogResult = System.Windows.Forms.DialogResult.OK; - this.OkButton.Location = new System.Drawing.Point(292, 11); - this.OkButton.Name = "OkButton"; - this.OkButton.Size = new System.Drawing.Size(75, 23); - this.OkButton.TabIndex = 4; - this.OkButton.Text = "Ok"; - this.OkButton.UseVisualStyleBackColor = false; - // - // InvalidNameValidationIcon - // - this.InvalidNameValidationIcon.Image = global::Rubberduck.Properties.Resources.cross_circle; - this.InvalidNameValidationIcon.Location = new System.Drawing.Point(412, 83); - this.InvalidNameValidationIcon.Name = "InvalidNameValidationIcon"; - this.InvalidNameValidationIcon.Size = new System.Drawing.Size(16, 16); - this.InvalidNameValidationIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.InvalidNameValidationIcon.TabIndex = 32; - this.InvalidNameValidationIcon.TabStop = false; - // - // InterfaceNameBox - // - this.InterfaceNameBox.Location = new System.Drawing.Point(12, 91); - this.InterfaceNameBox.Name = "InterfaceNameBox"; - this.InterfaceNameBox.Size = new System.Drawing.Size(437, 20); - this.InterfaceNameBox.TabIndex = 0; - // - // NameLabel - // - this.NameLabel.AutoSize = true; - this.NameLabel.Location = new System.Drawing.Point(10, 74); - this.NameLabel.Name = "NameLabel"; - this.NameLabel.Size = new System.Drawing.Size(38, 13); - this.NameLabel.TabIndex = 29; - this.NameLabel.Text = "Name:"; - // - // TitleLabel - // - this.TitleLabel.AutoSize = true; - this.TitleLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold); - this.TitleLabel.Location = new System.Drawing.Point(15, 9); - this.TitleLabel.Name = "TitleLabel"; - this.TitleLabel.Padding = new System.Windows.Forms.Padding(2); - this.TitleLabel.Size = new System.Drawing.Size(115, 19); - this.TitleLabel.TabIndex = 2; - this.TitleLabel.Text = "Extract Interface"; - // - // InstructionsLabel - // - this.InstructionsLabel.Location = new System.Drawing.Point(15, 24); - this.InstructionsLabel.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.InstructionsLabel.Name = "InstructionsLabel"; - this.InstructionsLabel.Padding = new System.Windows.Forms.Padding(3); - this.InstructionsLabel.Size = new System.Drawing.Size(412, 28); - this.InstructionsLabel.TabIndex = 3; - this.InstructionsLabel.Text = "Please specify interface name and members."; - // - // DescriptionPanel - // - this.DescriptionPanel.BackColor = System.Drawing.Color.White; - this.DescriptionPanel.Controls.Add(this.TitleLabel); - this.DescriptionPanel.Controls.Add(this.InstructionsLabel); - this.DescriptionPanel.Dock = System.Windows.Forms.DockStyle.Top; - this.DescriptionPanel.Location = new System.Drawing.Point(0, 0); - this.DescriptionPanel.Name = "DescriptionPanel"; - this.DescriptionPanel.Size = new System.Drawing.Size(459, 68); - this.DescriptionPanel.TabIndex = 33; - // - // MembersGroupBox - // - this.MembersGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.MembersGroupBox.Controls.Add(this.InterfaceMembersGridView); - this.MembersGroupBox.Controls.Add(this.DeselectAllButton); - this.MembersGroupBox.Controls.Add(this.SelectAllButton); - this.MembersGroupBox.Location = new System.Drawing.Point(12, 115); - this.MembersGroupBox.Margin = new System.Windows.Forms.Padding(2); - this.MembersGroupBox.Name = "MembersGroupBox"; - this.MembersGroupBox.Padding = new System.Windows.Forms.Padding(2); - this.MembersGroupBox.Size = new System.Drawing.Size(436, 174); - this.MembersGroupBox.TabIndex = 1; - this.MembersGroupBox.TabStop = false; - this.MembersGroupBox.Text = "Members"; - // - // InterfaceMembersGridView - // - this.InterfaceMembersGridView.AllowUserToAddRows = false; - this.InterfaceMembersGridView.AllowUserToDeleteRows = false; - this.InterfaceMembersGridView.AllowUserToResizeColumns = false; - this.InterfaceMembersGridView.AllowUserToResizeRows = false; - this.InterfaceMembersGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.InterfaceMembersGridView.ColumnHeadersVisible = false; - this.InterfaceMembersGridView.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; - this.InterfaceMembersGridView.Location = new System.Drawing.Point(5, 21); - this.InterfaceMembersGridView.Margin = new System.Windows.Forms.Padding(2); - this.InterfaceMembersGridView.MultiSelect = false; - this.InterfaceMembersGridView.Name = "InterfaceMembersGridView"; - this.InterfaceMembersGridView.RowHeadersVisible = false; - this.InterfaceMembersGridView.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; - this.InterfaceMembersGridView.RowTemplate.Height = 24; - this.InterfaceMembersGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.InterfaceMembersGridView.ShowEditingIcon = false; - this.InterfaceMembersGridView.Size = new System.Drawing.Size(320, 141); - this.InterfaceMembersGridView.TabIndex = 1; - // - // DeselectAllButton - // - this.DeselectAllButton.Location = new System.Drawing.Point(331, 52); - this.DeselectAllButton.Margin = new System.Windows.Forms.Padding(2); - this.DeselectAllButton.Name = "DeselectAllButton"; - this.DeselectAllButton.Size = new System.Drawing.Size(100, 26); - this.DeselectAllButton.TabIndex = 3; - this.DeselectAllButton.Text = "Deselect All"; - this.DeselectAllButton.UseVisualStyleBackColor = true; - // - // SelectAllButton - // - this.SelectAllButton.Location = new System.Drawing.Point(331, 21); - this.SelectAllButton.Margin = new System.Windows.Forms.Padding(2); - this.SelectAllButton.Name = "SelectAllButton"; - this.SelectAllButton.Size = new System.Drawing.Size(100, 26); - this.SelectAllButton.TabIndex = 2; - this.SelectAllButton.Text = "Select All"; - this.SelectAllButton.UseVisualStyleBackColor = true; - // - // ExtractInterfaceDialog - // - this.AcceptButton = this.OkButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.CancelDialogButton; - this.ClientSize = new System.Drawing.Size(459, 339); - this.Controls.Add(this.MembersGroupBox); - this.Controls.Add(this.DescriptionPanel); - this.Controls.Add(this.InvalidNameValidationIcon); - this.Controls.Add(this.InterfaceNameBox); - this.Controls.Add(this.NameLabel); - this.Controls.Add(this.flowLayoutPanel2); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Margin = new System.Windows.Forms.Padding(2); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ExtractInterfaceDialog"; - this.ShowInTaskbar = false; - this.Text = "Rubberduck - Extract Interface"; - this.flowLayoutPanel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.InvalidNameValidationIcon)).EndInit(); - this.DescriptionPanel.ResumeLayout(false); - this.DescriptionPanel.PerformLayout(); - this.MembersGroupBox.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.InterfaceMembersGridView)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; - private System.Windows.Forms.Button CancelDialogButton; - private System.Windows.Forms.Button OkButton; - private System.Windows.Forms.PictureBox InvalidNameValidationIcon; - private System.Windows.Forms.TextBox InterfaceNameBox; - private System.Windows.Forms.Label NameLabel; - private System.Windows.Forms.Label TitleLabel; - private System.Windows.Forms.Label InstructionsLabel; - private System.Windows.Forms.Panel DescriptionPanel; - private System.Windows.Forms.GroupBox MembersGroupBox; - private System.Windows.Forms.Button DeselectAllButton; - private System.Windows.Forms.Button SelectAllButton; - private System.Windows.Forms.DataGridView InterfaceMembersGridView; - } -} diff --git a/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.cs b/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.cs deleted file mode 100644 index 24dace9af6..0000000000 --- a/RetailCoder.VBE/UI/Refactorings/ExtractInterfaceDialog.cs +++ /dev/null @@ -1,127 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Windows.Forms; -using Rubberduck.Parsing.Grammar; -using Rubberduck.Refactorings.ExtractInterface; - -namespace Rubberduck.UI.Refactorings -{ - public partial class ExtractInterfaceDialog : Form, IExtractInterfaceDialog - { - public string InterfaceName - { - get { return InterfaceNameBox.Text; } - set { InterfaceNameBox.Text = value; } - } - - private IEnumerable _members; - public IEnumerable Members - { - get { return _members; } - set - { - _members = value; - InitializeParameterGrid(); - } - } - - public List ComponentNames { get; set; } - - public ExtractInterfaceDialog() - { - InitializeComponent(); - Localize(); - - InterfaceNameBox.TextChanged += InterfaceNameBox_TextChanged; - InterfaceMembersGridView.CellValueChanged += InterfaceMembersGridView_CellValueChanged; - SelectAllButton.Click += SelectAllButton_Click; - DeselectAllButton.Click += DeselectAllButton_Click; - } - - private void Localize() - { - Text = RubberduckUI.ExtractInterface_Caption; - OkButton.Text = RubberduckUI.OK; - CancelDialogButton.Text = RubberduckUI.CancelButtonText; - - NameLabel.Text = RubberduckUI.NameLabelText; - TitleLabel.Text = RubberduckUI.ExtractInterface_TitleLabel; - InstructionsLabel.Text = RubberduckUI.ExtractInterface_InstructionLabel; - DeselectAllButton.Text = RubberduckUI.DeselectAll_Button; - SelectAllButton.Text = RubberduckUI.SelectAll_Button; - MembersGroupBox.Text = RubberduckUI.ExtractInterface_MembersGroupBox; - } - - private void InterfaceNameBox_TextChanged(object sender, EventArgs e) - { - ValidateNewName(); - } - - private void InterfaceMembersGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) - { - _members.ElementAt(e.RowIndex).IsSelected = - (bool) InterfaceMembersGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; - } - - private void SelectAllButton_Click(object sender, EventArgs e) - { - ToggleSelection(true); - } - - private void DeselectAllButton_Click(object sender, EventArgs e) - { - ToggleSelection(false); - } - - private void InitializeParameterGrid() - { - InterfaceMembersGridView.AutoGenerateColumns = false; - InterfaceMembersGridView.Columns.Clear(); - InterfaceMembersGridView.DataSource = Members; - InterfaceMembersGridView.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender; - InterfaceMembersGridView.MultiSelect = false; - - var isSelected = new DataGridViewCheckBoxColumn - { - AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells, - Name = "IsSelected", - DataPropertyName = "IsSelected", - HeaderText = string.Empty, - ReadOnly = false - }; - - var signature = new DataGridViewTextBoxColumn - { - AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, - Name = "Members", - DataPropertyName = "FullMemberSignature", - ReadOnly = true - }; - - InterfaceMembersGridView.Columns.AddRange(isSelected, signature); - } - - private void ToggleSelection(bool state) - { - foreach (var row in InterfaceMembersGridView.Rows.Cast()) - { - row.Cells["IsSelected"].Value = state; - } - } - - private void ValidateNewName() - { - var tokenValues = typeof(Tokens).GetFields().Select(item => item.GetValue(null)).Cast().Select(item => item); - - OkButton.Enabled = !ComponentNames.Contains(InterfaceName) - && InterfaceName.Length > 1 - && char.IsLetter(InterfaceName.FirstOrDefault()) - && !tokenValues.Contains(InterfaceName, StringComparer.InvariantCultureIgnoreCase) - && !InterfaceName.Any(c => !char.IsLetterOrDigit(c) && c != '_'); - - InvalidNameValidationIcon.Visible = !OkButton.Enabled; - } - } -} diff --git a/RubberduckTests/Refactoring/ExtractInterfaceTests.cs b/RubberduckTests/Refactoring/ExtractInterfaceTests.cs index 4f294033a0..f0f99b5f11 100644 --- a/RubberduckTests/Refactoring/ExtractInterfaceTests.cs +++ b/RubberduckTests/Refactoring/ExtractInterfaceTests.cs @@ -5,6 +5,8 @@ using Rubberduck.Parsing.Symbols; using Rubberduck.Refactorings; using Rubberduck.Refactorings.ExtractInterface; +using Rubberduck.UI.Refactorings; +using Rubberduck.UI.Refactorings.ExtractInterface; using Rubberduck.VBEditor; using Rubberduck.VBEditor.SafeComWrappers; using Rubberduck.VBEditor.SafeComWrappers.Abstract; @@ -407,8 +409,9 @@ public void Presenter_Reject_ReturnsNull() var model = new ExtractInterfaceModel(state, qualifiedSelection); model.Members.ElementAt(0).IsSelected = true; - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.Cancel); + var view = new Mock>(); + view.Setup(v => v.ViewModel).Returns(new ExtractInterfaceViewModel()); + view.Setup(v => v.DialogResult).Returns(DialogResult.Cancel); var factory = new ExtractInterfacePresenterFactory(vbe.Object, state, view.Object); @@ -434,40 +437,13 @@ public void Presenter_NullTarget_ReturnsNull() var model = new ExtractInterfaceModel(state, qualifiedSelection); - var view = new Mock(); + var view = new Mock>(); + view.SetupGet(v => v.ViewModel).Returns(new ExtractInterfaceViewModel()); var presenter = new ExtractInterfacePresenter(view.Object, model); Assert.AreEqual(null, presenter.Show()); } - [TestMethod] - public void Presenter_Accept_ReturnsUpdatedModel() - { - //Input - const string inputCode = -@"Public Sub Foo(ByVal arg1 As Integer, ByVal arg2 As String) -End Sub"; - var selection = new Selection(1, 15, 1, 15); - - IVBComponent component; - var vbe = MockVbeBuilder.BuildFromSingleModule(inputCode, ComponentType.ClassModule, out component, selection); - var state = MockParser.CreateAndParse(vbe.Object); - - var qualifiedSelection = new QualifiedSelection(new QualifiedModuleName(component), selection); - - var model = new ExtractInterfaceModel(state, qualifiedSelection); - model.Members.ElementAt(0).IsSelected = true; - - var view = new Mock(); - view.Setup(v => v.ShowDialog()).Returns(DialogResult.OK); - view.Setup(v => v.InterfaceName).Returns("Class1"); - - var factory = new ExtractInterfacePresenterFactory(vbe.Object, state, view.Object); - var presenter = factory.Create(); - - Assert.AreEqual("Class1", presenter.Show().InterfaceName); - } - [TestMethod] public void Factory_NoMembersInTarget_ReturnsNull() {